3.1.1 產生臉部影像
首先須挑選實驗用的影片,我選擇陸劇“新三國”第 83 集,選擇的原因是 本集影片人臉在影像中比例較大,且沒有激烈動作如戰爭、打鬥等。先轉成 360p 的.wmv 檔,以 3fps 的速度,利用“Free Video To JPG Converter”軟體,從影片 擷取了 7427 張影像(實驗時排除片頭的 15 張影像),再用 OpenCV 偵測出每一 張影像中可能的人臉位置。
在 Single Run 的分析實驗,我們也加入了另外三組測試資料:
第二組資料有 529 個串列,基準分為 8 群。
第三組資料有 463 個串列,基準分為 10 群。
第四組資料有 1000 個串列,基準分為 16 群。
3.1.2 建立人臉串列
藉由人工標記鏡頭轉換的時刻,加上 OpenCV 得到的人臉資訊,我們可以建 立人臉串列,需要符合以下條件:
人臉串列的影像須為同一人(或物體)
人臉串列的每一影像必須是同一場景且連續出現
每個人臉大小必須至少40 × 40 pixels
符合上述條件,人臉串列的長度必須介於 4 至 40,每張人臉影像的大小調
整到40 × 40。
之後再將彩色影像轉換為灰階影像。
3.1.3 臉部影像前處理
我們使用的影像前處理方式有二種:
1. Histogram Equalization
2. Histogram Equalization + Gaussian Bandpass Filtering
先校正影像的亮度,再用兩組反向的二維 Gaussian 函數(如式(1)、(2))組合
LAHISD(Linear Affine Hull based Image Set Distance)
用一個仿射包(affine hull)代表一個影像串列(image sequence),串列中的影像
(image)是仿射包的特徵向量(feature vector),串列之間的歧異度(dissimilarity)由仿 射包之間的幾何距離(geometric distance)來決定。我們使用文獻[11]的作者提供的 程式碼。
3.2 分群方法
3.2.1 Agglomerative Hierarchical Clustering(階層式分群法)
一開始將每一物體視為一群,每一回合找出距離最小的兩群𝐶𝑖和𝐶𝑗進行合併,
持續進行合併直到群的數量滿足我們所要求的為止。每一回合合併產生的群𝐶𝑞和
3.2.2 Affinity Propagation(AP,近鄰傳播)
這是一種用於生物醫學的演算法,根據所有物體之間的相似度進行分群,最
r(i, j) = s(i, j) − 𝑚𝑎𝑥𝑘≠𝑗(𝑎(𝑘, 𝑖) + 𝑠(𝑖, 𝑘)) (6) a(j, j) = ∑𝑘≠𝑗max{0, 𝑟(𝑘, 𝑗)} (7) a(j, i) = min(0, r(j, j) + ∑𝑘≠𝑗,𝑖max{0, 𝑟(𝑘, 𝑗)}) (8)
各物體 i 所屬的群中心𝑐𝑖更新公式:
𝑐𝑖∗ = 𝑎𝑟𝑔𝑚𝑎𝑥𝑗𝑟(𝑖, 𝑗) + 𝑎(𝑗, 𝑖) (9)
程式中止條件:重複做一千回合或收斂條件達成 收斂條件:連續一百回合群中心沒有更新
3.2.3 Clustering Ensemble(叢集整合)
因為 Average Link 與近鄰傳播沒有隨機性,所以我們想要藉由叢集整合來改 善分群。叢集整合在多次不同的隨機取樣中,兩個物體 i 和 j 被分在同一群的次 數越高,代表將所有物體分群,二者被分在同一群的機會也越高,這是叢集整合 的核心概念:善用先前實驗的結果達到更優化的分群。實驗中每個回合(turn)採 用 Average Link 或近鄰傳播分群。我們建立一個大小為n × n的矩陣,稱為
co-association matrix,其中編號(i,j)的元素表示串列 i 與 j 在實驗中有多少個回合 被分在同一群。在叢集整合的實驗中,co-association matrix 作為第二階段分群的 歧異度矩陣(dissimilarity matrix)。
3.3 分群效能評估方法
3.3.1 ARI(Adjusted Rand Index)
給定一個含有 n 物的集合,X = {𝑋1, 𝑋2, ⋯ 𝑋𝑟}為 groundtruth,Y =
{𝑌1, 𝑌2, ⋯ 𝑌𝑠}為被評估的分群結果,令𝑛𝑖𝑗為同時屬於𝑋𝑖和𝑌𝑗的物體數量,𝑎𝑖和𝑏𝑗分 別代表在𝑋𝑖和𝑌𝑗內的物體數量,則
ARI =1 ∑ 𝐶𝑖,𝑗 2𝑛𝑖𝑗−[∑ 𝐶𝑖 2𝑎𝑖∑ 𝐶𝑗 2𝑏𝑗]/𝐶2𝑛
2[∑ 𝐶𝑖 2𝑎𝑖+∑ 𝐶𝑗 2𝑏𝑗]−[∑ 𝐶𝑖 2𝑎𝑖∑ 𝐶𝑗 2𝑏𝑗]/𝐶2𝑛 (10) 3.3.2 NMI(Normalized Mutual Information)
給定一個 ground truth X 和一個被評估的分群結果 Y,先計算他們的分布(即 各群有多少比例的物體),再計算他們的熵(entropy,H(X) = − ∑ 𝑃(𝑥𝑖 𝑖) ln 𝑃(𝑥𝑖)和 聯合熵(joint entropy,H(X, Y) = − ∑ ∑ 𝑃(𝑥, 𝑦𝑥 𝑦 ) ln 𝑃(𝑥, 𝑦),最後得到
MI(MutualInformation) = H(X) + H(Y) − H(X, Y) (11) NMI = 𝑀𝐼
√𝐻(𝑋)𝐻(𝑌) (12)
3.4 LBP(Local Binary Pattern)與 HOG(Histogram of Gradient)介紹
3.4.1 LBP 介紹
對於每一像素,比較它的 8 個鄰居。如果此像素值大於鄰居的值,給 1,否 則給 0,形成一個 8 bits 的二進位數。之後做 0~255 的直方圖,所得即為該影像 的特徵向量。
3.4.2 HOG 介紹
對於每一6 × 6的方格單元(排除最外層的兩圈),做每一像素的梯度方向邊
緣方向直方圖,之後整合所有直方圖,所得即為該影像的特徵向量。
第四章 實驗結果