• 沒有找到結果。

以表面跡象為基礎的方法

第二章 人臉偵測之相關研究

2.4 以表面跡象為基礎的方法

以表面跡象為基礎的方法也有使用樣板,不過所用的樣板是從許多訓練影像 中學習得來,而且還有用非人臉樣板。一般來說,以表面跡象為基礎的方法主要 是從訓練影像中進行統計分析來學得人臉樣板與非人臉樣板的特性。這些特性以 機率模型或區別函數(discriminant function)來表示後可用來做人臉偵測。

一 張n×m 的 人 臉 影 像 或 非 人 臉 影 像 可 當 成 是 一 個 n×m 的 特 徵 向 量 (feature vector),如果以機率模型來表示人臉影像或非人臉影像的分布,則一 個特徵向量可看成是一個隨機變數x,令 p

(

x| face

)

p

(

x|nonface

)

分別代表人

臉影像與非人臉影像的條件機率函數,用貝式分類器或最大相似度(maximum likelihood)即可判斷在測試影像中的某個位置是否為人臉。不過,代表人臉影

像或非人臉影像的特徵向量維度通常很高使得p

(

x| face

)

p

(

x|nonface

)

兩個函

式的參數型不易求得,所以只能以p

(

x| face

)

p

(

x|nonface

)

的近似參數型來實 作判斷一張影像是否為人臉的貝式分類器。

除了以機率模型來表示人臉影像或非人臉影像的分佈外,找出人臉影像或非 人臉影像在特徵向量空間的區別函數(discriminant function) 【23】,或稱決 定表面(decision surface),有了決定表面後就可以由測試影像是在決定表面的 那一邊來判斷該測試影像是不是人臉。實作上為了計算速度上的考量,一般照慣 例的作法是先把人臉影像和非人臉影像的特徵向量投影到低維度空間,然後去尋 找區別函數(discriminant function)。不過在低維度空間常無法找出明確的區 別 函 數 來 區 分 人 臉 影 像 或 非 人 臉 影 像 , 這 時 要 用 多 層 次 的 類 神 經 網 路 (multilayer neural network) 【24】或支撐向量機器(support vector machine)

【25】的方法來解決,這兩個方法的中心思想是再把低維度的特徵向量投影到高 像與 y 個非人臉影像計算一個共變異數矩陣(covariance matrix),並計算此共 變 異 數 矩 陣 (covariance matrix) 的 固 有 值 (eigenvalue) 與 對 應 的 固 有 向 量 (eigenvector),選擇最大的 p 個固有值所對應的固有向量, p <n×m,把每個

m

n× 維的人臉影像再與這 p 個固有向量做內積可得到 p 個係數,於是原本n×m 維的人臉影像降成 p 維的向量;非人臉影像也以同樣的方式降成 p 維。這種降維 的方式稱為主要成分分析(principle component analysis),主要想法在於使得 資料向量降維後與降維前的平均平方差(mean square error)最小。x個人臉影 像降維後計算平均值, y 個非人臉影像也在降維後計算平均值,這兩個平均值就

分別代表人臉影像與非人臉影像。以測試影像中的每個位置為中心所形成的 n ×m的影像區域都去做降維然後與人臉影像和非人臉影像的平均值計算距 離,如果離人臉影像較近,則認為此位置有人臉。

Sung 和 Poggio 【26】認為各用一個平均值代表人臉影像與非人臉影像並 不適當,首先他們以人工收集了 4150 張人臉影像與 43210 張非人臉影像,將每 張影像調整到 19×19 的大小,所以每個人臉影像與非人臉影像可看成是一個 361 維的向量,以 k 均值(k-means)演算法將人臉影像與非人臉影像各分成 6 群,每 一群都假設其為一個高斯分佈,有平均值與共變異數矩陣。接下來 Sung 和 Pggio 定義了測試影像與人臉影像和非人臉影像的距離公式,他們認為有兩種距離要 算。要計算第一種距離之前,先對 12 群的人臉影像與非人臉影像計算一個共變 異數矩陣C,然後利用C的固有向量做主要成分分析(principle component analysis),把全部的影像從 361 維的向量降成 75 維的向量,每一群重新計算平 均值與共變異數矩陣,然後測試影像要與某一群計算距離時,先用C的固有向量 把測試影像降成 75 維的向量,然後再計算與那一群降維後的 Mahalanobis 距離,

所算出來的距離即為第一種距離;測試影像與某一群的第二種距離的計算方式是 先把測試影像用C的固有向量降成 75 維,然後後面補零再擴充成 361 維,最後 與測試影像降維前的向量計算歐式距離,此即為第二種距離。最後用一個類神經 網路來代表一個人臉分類器,首先把 4150 張人臉影像與 43210 張非人臉影像,

每張影像去計算 24 種距離(因為總共 12 群,每一群可算兩種距離),這 24 種距 離可看成是一個 24 維的向量,此即為類神經網路的輸入;類神經網路的輸出只 有兩種數字,1 代表人臉,-1 代表非人臉。有了輸入與輸出後,此類神經網路的 參數就可從訓練影像訓練得來,訓練的演算法是倒傳遞(backpropagation)演算 法。訓練好人臉分類器後,當給一個測試影像時,以一個 19×19 的滑動視窗從 左上到右下掃過整張測試影像,滑動視窗在測試影像中的每個位置都先與那 12 群人臉影像與非人臉影像計算 24 種距離,然後把這個 24 維的向量輸入人臉分類 器,如果輸出比較接近 1,則代表測試影像的該位置有人臉。

Henry 等人 【24】認為 Sung 和 Poggio 的方法有一個可改進的地方,即非 人臉影像的收集。人臉影像的收集沒問題,只要去找不同人種、各年齡層、不同 性別的人臉。可是要怎樣收集具有代表性的非人臉影像,Henry 等人提出一個 bootstrap 演算法來解決此問題,演算法如下:

(步驟一)

首先隨機產生 1000 張 19×19 的影像,這 1000 張影像中任一位置的灰階值 都是隨機給與,把這 1000 張影像當成是非人臉影像。

(步驟二)

將非人臉影像與收集好的人臉影像去訓練一個類神經網路,神經網路的輸出 是 1 表示是人臉影像,-1 表示非人臉影像,訓練的方法同 Sung 和 Poggio。

(步驟三)

接下來把一部份完全沒有人臉的風景影像輸入此類神經網路,收集輸出是1 的風景影像(也就是辨認錯誤的風景影像)。

(步驟四)

從辨認錯誤的風景影像中隨機選取 250 張加入非人臉影像中,回到步驟二。

此過程反覆直到沒有人臉的風景影像都曾經通過步驟三。

其實這四類人臉偵測方法的邊界很模糊,例如 2.3 節介紹過有一種樣板比對 方法不是用真的人臉影像,而是去定義人臉各區域之間的明暗關係,至於明暗關 係的定義靠的是一般人對人臉的認識,所以這就跟以知識為基礎的方法很像;還 有有的人臉偵測法不只屬於某一類,例如有一種樣板比對方法先使用一個人臉輪 廓樣板在測試影像中尋找可能是人臉的區域,接著用眼睛、鼻子、嘴巴樣板去尋 找眼睛、鼻子、嘴巴,這方法看起來同時也是以特徵為基礎的方法,因為它有去 尋找眼睛、鼻子、嘴巴等臉部特徵;另外對於人臉偵測法有其他的分類,例如只 分成兩類,第一類是有偵測眼睛、嘴巴等細部的臉部特徵;第二類是只定義好人 臉的樣板模式,一旦符合樣板模式即認為偵測到人臉,完全不管眼睛、嘴巴等臉 部特徵。

第 3 章

主播影像偵測與新聞故事分段

本章敘述所提的以影像偵測新聞主播的方法,還有說明在偵測到新聞主播之 後如何做新聞故事的切割。圖 3-1 是主播影像偵測與新聞故事切割的流程圖,錄 製新聞影像後依序對每張影像偵測與追蹤人臉,依據人臉區塊的特性抽取特徵,

利用此特徵做分群,假設最大群為主播,就能篩選出主播人臉區塊,進而找出那 些影像中有主播,最後判斷主播出現的時段作新聞故事切割。於本章 3.1 節介紹 人臉區塊偵測與追蹤;3.2 節介紹主播人臉區塊篩選;3.3 節介紹如何在知道主 播影像後做新聞故事切割。

圖 3-1 主播影像偵測與新聞故事切割流程 人臉偵測 人臉追蹤

新聞畫面

. . . .

人臉偵測 人臉追蹤

. . . .

在偵測到人臉時,依據人 臉區域的特性抽取特徵。

對特徵做分群,假設最大群 是主播,找出有主播的影像

. . .

判斷主播出現的時段做新聞故事切割

3.1 人臉區塊偵測與追蹤

本節敘述如何偵測與追蹤人臉區塊,圖 3-2 是人臉區塊偵測與追蹤的流程 圖,首先以每秒一張的速率擷取新聞影像,依序對每張影像做完整的人臉偵測,

若有偵測到人臉,以兩種人臉追蹤的方式對接下來的影像偵測人臉,如果追蹤失 敗則重做一次完整的人臉偵測。在 3.1.1 小節中介紹人臉偵測,在 3.1.2 小節中 會介紹這兩種人臉追蹤方法。

圖 3-2 人臉偵測與追蹤流程 是

否 是 否

依序對每張影像做 完整的人臉偵測

是否有人臉

在下一張影像中以 方法一追蹤人臉

是否追蹤成功

以方法二追蹤人臉

是否追蹤成功 否

是 新聞影像

3.1.1 人臉偵測

人臉偵測的方法有很多種,在第二章已介紹過,本論文所用的人臉偵測方法 是整合第二章所提的方法。演算法如圖 3-3,首先將影像作均值移動分段以利之 後的膚色判斷,以一個預先建立好的膚色模型找出膚色區域,接下來在每個膚色 區域中去尋找眼睛,最後用一個人臉模型去驗證找到的眼睛是否屬於同一張臉。

演算法的各步驟詳述如下:

圖 3-3 人臉偵測流程 彩色影像

均值移動分段

膚色偵測

人臉候選區域

眼睛偵測

驗証每對眼睛所組成的 人臉區域是否為人臉

均值移動分段(Mean Shift Segmentation)(步驟一): 測試影像做均值移動分段(Mean Shift Segmentation),演算法如下:

1. 將影像從 640×480 的大小降取樣(downsampling)成 80×60,並將影像轉換

3. 對均值移動濾波後的影像用區域成長(region growing)演算法找出各個相鄰 且顏色相近的像素,給它們一個共同的編號。以一個5× 的灰階影像說明區5

(f) 從編號 1 為起點,每次將編號加 1,找出編號相同的像素,從中選擇最 上方且最靠近左邊的像素,把所有其他編號相同的像素的顏色值都設定 成這個像素的顏色值。

4. 再做一次 3.。最後把影像升取樣(upsampling)回 640×480,我們把經過分 段的影像稱為分段影像。

圖 3-4 區域成長演算法範例

建立膚色模型且用建立好的膚色模型判斷影像中的膚色區域 (步驟二):

首先收集東森、民視、華視、中天、三立五家電視台,每家各兩個新聞主播,

共十個主播的臉部膚色像素,總共約 22000 個像素。將這些像素的顏色從 RGB

共十個主播的臉部膚色像素,總共約 22000 個像素。將這些像素的顏色從 RGB

相關文件