王韜,胡紫薇,王曄
(四川大學計算機學院,成都610065)
人臉檢測的目標是在圖像中快速準確地定位出人臉的位置,大致可以分為以下幾類,艾海舟、梁路宏等人[1]提出的基于膚色和模板的人臉檢測方法,首先對圖像進行膚色分割提取出其中的膚色區(qū)域,再對膚色區(qū)域使用模板匹配和人工神經網絡進行驗證。對于灰度圖像無法進行膚色分割的,梁路宏等人[2]提出了基于多關聯(lián)模板的檢測方法,首先用雙眼的模板匹配做粗篩選,再使用模板匹配做精篩選,最后通過經驗模型判定候選區(qū)域是否是人臉。姜軍、張桂林[3]也提出了一種基于先驗知識的人臉檢測方法,主要利用了人臉的生理結構特征,提取人臉圖像的灰度和邊緣信息,使用鑲嵌圖(馬賽克圖)根據足夠多的人臉樣本建立的完備庫做分析,以達到對目標區(qū)域的判別。崔曉青[4]則提出了改進的AdaBoost 人臉檢測算法,這類方法主要基于對人臉的特征提取并聯(lián)合機器學習的分類器工作,算法會依據某類特定的特征子,如AdaBoost 算法主要使用Haar 特征,并將多個弱分類器組合成為一個能夠辨別人臉的強分類器。江偉堅[5]同樣采用了類似的方法,改進了Haar-Like 算子,并分別訓練了正臉和側臉的級聯(lián)分類器,獲得了不錯的效果。另外,還有基于統(tǒng)計模型的人臉檢測方法,陳建華[6]則提出了一種在灰度圖上使用高斯模型檢測人臉的方法。最后,還有一類算法以機器學習的原理為核心,馬勇、丁曉青[7]提出了一種基于層次型支持向量機的正面直立人臉檢測方法,使用了一個線性的支持向量機和一個非線性的支持向量機聯(lián)合工作,前者做粗檢測,后者做精檢測。王魯許[8]則使用了基于神經網絡的人臉檢測方法。
本文對傳統(tǒng)的基于膚色分割和人臉模板匹配的檢測方法做出了系列改進,旨在于提升此流程的人臉檢測精度。在膚色分割階段提出一種改進的自適應二值化方法,以盡可能的將圖像中的膚色區(qū)域提取出來,在之后的連通域分析階段提出了一種基于能量分布的分析策略,進一步篩除低概率的人臉區(qū)域,最后模板匹配階段使用了多尺度的模板匹配以獲取更精確的人臉位置,并提出了一種聯(lián)合的相似度判別法。
人臉的膚色在數(shù)字圖像中符合高斯分布,為建立膚色的高斯模型,首先需要收集膚色樣本,對這些樣本的統(tǒng)計分析以獲得該高斯模型的參數(shù)。為減輕光照影響將RBG 圖像轉換到YCbCr 色彩空間。其中Y 是亮度分量,Cb 和Cr 分別是藍色色度分量和紅色色度分量,從RBG 轉換到YCbCr 空間的關系式為:
本文直接采用了加利福尼亞大學信息與計算機科學學院提供的膚色像素數(shù)據集[9],該膚色數(shù)據集總共包含了50859 個膚色樣本,包括了各類人種以及不同條件下的膚色。該數(shù)據集合轉換至YCbCr 域后在CbCr平面的統(tǒng)計如圖1 所示。
圖1 膚色數(shù)據集分布
由圖1 可以看出膚色在CbCr 平面具有良好的聚集特性。已知二維高斯分布的聯(lián)合概率密度為式(2)。
其中μ1、μ2、σ1、σ2分別是隨機變量x 和y 的均值和方差,ρ 則是x 和y 的相關系數(shù),表示為:
其中E 表示均值,D 表示方差。由此,根據x,y 的均值和方差即可得到構建的關于x 和y 的聯(lián)合概率密度模型。于是,以圖1 中Cb 和Cr 為隨機變量建立膚色高斯模型,如圖2 右所示。
由2 圖中可以看出高斯模型很好地表達了膚色樣本在CbCr 平面的分布狀態(tài)。如圖3 展示了由膚色高斯模型處理得到膚色似然圖,每個點的值代表了該點是膚色的概率,可以看出模型很好地區(qū)分了膚色區(qū)域和非膚色區(qū)域。
圖2
圖3
獲得了膚色似然圖之后需要確定一個閾值以區(qū)分膚色和非膚色區(qū)域。閾值選擇的太小則會造成大量的非膚色區(qū)域被選中,導致粗檢測精度太低。閾值太大則可能導致真正的人臉區(qū)域未被判定為膚色區(qū)域。從圖3 中也可以看出不同的人臉在不同光照下的膚色似然圖強度有很大差距。
設計自適應的二值化方法,基于以下假設:
(1)圖片內的膚色區(qū)域和非膚色區(qū)域的似然值存在較大差異
(2)圖片內的膚色區(qū)域和非膚色區(qū)域似然值有較好的聚類特性,即對于兩個區(qū)域的點而言,它們各自的似然值是比較接近的,方差較小。
我們期望膚色區(qū)域的均值和非膚色區(qū)域的均值差異盡量大,而二者各自的方差盡可能小。根據此原理王金庭等人[10]提出了Fisher 函數(shù)(式5)作為選擇閾值t的標準:
式中skinNum 表示膚色像素的數(shù)目,w 和h 分別為圖像的寬和高。為抵消(5)式更傾向于分配少量膚色區(qū)域的影響,本文在(6)式中增加了兩個因子,以控制膚色區(qū)域被提取出來的面積。大部分情況下膚色區(qū)域和背景色之間差異很大,這時使用(6)式的膚色提取就會更準確。
圖4
圖4 是根據(6)式策略實現(xiàn)的自適應二值化,可以看到即使似然圖中的膚色區(qū)域強度很低,該方法依然可以很好地將其提取出來。本文還對固定閾值分割、(5)、(6)三種方案做了對比實驗。對比實驗使用了Wei Ren Tan[11]的膚色數(shù)據集如圖5 所示。
本文對這三種方法的對比實驗使用了3 種參數(shù),Recall(查全率)、Precision(查準率)和IOU(交并比)。圖6 說明了這三個參數(shù)的含義。
對于固定閾值的二值化方法,本文測試了由0 到0.8 區(qū)間,間隔0.02 的所有閾值在膚色數(shù)據集上的表現(xiàn),結果如圖7 所示。IOU 參數(shù)作為Recall 和Precision 的綜合,本文主要以IOU 比例為參考,對于固定閾值而言,選定IOU 最高的作為最佳閾值。
圖5 膚色數(shù)據集
圖6 測試參數(shù)
圖7 不同閾值的二值化結果
三種方法的對比結果如表1 所示。可以看出本文的改進方法在IOU 和Precision 項目都得到了比較好的成績,固定閾值二值化方法則Precision 值較低,說明其誤檢率很高。而(5 式)的方法則在各方面都差一些。
表1 三種二值化方法對照
二值化后的圖片中包含了很多大小不一的連通域,要對這些連通域做進一步的篩查,然后求取其外接矩形以確定粗檢測的范圍。篩選規(guī)則包括以下幾條:
(1)去除面積較小的連通域
(2)去除外接矩形橫縱比不合適的連通域(人臉的橫縱比大約為1:1,由于是粗篩選,連通域的橫縱比本文采用0.6-1.2)
圖8 形態(tài)學處理
基于以上兩條篩選規(guī)則已經可以篩除大部分非人臉區(qū)域,但存在如圖8 這樣的特殊情況,會使得這樣的篩選結果較差。可以看出a、b 屬于將背景識別為了皮膚,c、d 屬于兩個人臉太靠近發(fā)生了粘連,這兩種情況都會對下一步的精檢測造成不利影響,對于圖8 中的a情況,解決方案是:提取出來的膚色區(qū)域中,人臉區(qū)域應當是接近于矩形的塊狀區(qū)域,那么可能包含人臉的連通區(qū)域應當滿足以下條件:
其中s 表示聯(lián)通域的面積,rectangleArea 表示連通域外接矩形的面積,ρ 為一個經驗值,本文取0.6。這一判定條件可以有效的去除類似圖9 所示的非人臉區(qū)域。對于c、d 情況,解決的思路是:對外接矩形的區(qū)域不斷地做形態(tài)學的腐蝕處理,直到該區(qū)域內原來的連通域出現(xiàn)斷連,即原來的只有一個連通域的區(qū)域內由于做了腐蝕而出現(xiàn)了多個連通域,再分別判定這兩個連通域是不是可能的人臉區(qū)域(判定的規(guī)則已有前文給出)符合要求的話就做形態(tài)學的膨脹處理以補償腐蝕造成的損失。對于不符合要求的則直接拋棄。當然可能一直做腐蝕處理都沒有分裂出多個連通域,那么直到連通域被腐蝕為0 就拋棄這個聯(lián)通域。算法的實現(xiàn)效果見圖10。
圖9 非人臉連通域的外接矩形(虛線)
圖10 改進的連通域分析
經過了膚色檢測以及連通域分析之后我們已經初步得到了人臉檢測的區(qū)域。但這些區(qū)域中有非人臉部分,為了獲得更準確的人臉定位,還需要對這些可能的區(qū)域做人臉的精檢測,本文采用的是模板檢測。
本文采用了英國劍橋Olivetti 研究實驗室創(chuàng)建的ORL 人臉數(shù)據集構建平均人臉模板。數(shù)據集的部分圖像如圖11 所示。從該數(shù)據集中選擇40 個人的正臉圖像,首先對這些圖像做灰度直方圖標準化,以使得它們之間的灰度分布統(tǒng)一,減少光照色度的影響。之后再對這些圖像做平均就得到了人臉模板。
圖11 ORL數(shù)據集
灰度直方圖均衡化是指對原始圖像做式(8)的變換:
其中,σ0、μ0分別是圖像的方差和均值,σˉ、μˉ則表示標準的灰度直方圖方差和舉止。本文中,σˉ、μˉ為所有圖像的方差、均值的平均。圖12 就是制作的平均人臉模板。
圖12 平均人臉模板
本文所設計的人臉檢測系統(tǒng)在初始階段將會把輸入圖片統(tǒng)一到250×250 像素。粗檢測獲得了圖像中的膚色區(qū)域,精檢測通過設置一系列尺寸的模板和區(qū)域的子窗口圖像逐一匹配,選取相似度最高的一個窗口,檢查其相似度是否超過經驗閾值,作為判定為人臉的依據。
本文設計了一種對人臉模板的縮放規(guī)則:人臉模板的尺度空間和待搜索區(qū)域(粗檢測區(qū)域高h,寬w)的尺寸相關。這種關聯(lián)規(guī)則為:
(1)人臉模板的橫縱比盡可能保持不變
(2)人臉模板的高bh 和寬bw 由式(9)確定
其中ra 為一系列值,間隔一般為0.1,由式(9)說明,人臉模板的最小尺寸是和待搜索區(qū)域相關的。由于本文所處理的圖像都是統(tǒng)一250×250 像素的,并規(guī)定在這一尺度下的人臉尺寸基本在100×100 像素左右。因此,待搜索區(qū)域的長或寬超過180 像素則表示粗檢測區(qū)域較大,區(qū)域內包含的信息也更多,因此采用更小尺度的精檢測模板。當待搜索區(qū)域較小時,整個帶搜索區(qū)有很大的可能就是人臉,則沒必要用更小的模板去搜索。
在模板檢測的流程中,系統(tǒng)需要從眾多的掃描窗口中選取出和模板相似度最高的一個。圖13 為搜索的示意圖。
圖13 模板匹配的搜索窗口
在基于膚色的人臉檢測算法[12]一文中采用了式(10)的度量方式。其中Win 表示窗口圖像,T 表示人臉模板,M、N 表示窗口的高和寬。這種度量方式是計算了窗口圖像和模板之間的歐氏距離。R 的取值范圍在[0,1],R 越小說明二者的相似度越高。
在基于多關聯(lián)模板匹配的人臉檢測[2]中采用的則是一種聯(lián)合的相似度度量如式(11)(12)(13)所示,α取經驗值35。式(11)中μ、σ 是對應圖像的灰度均值和方差。式(11)首先用減去了圖像的均值,使得窗口圖像和模板的灰度分布得到了一定的統(tǒng)一,消除了部分光照差異的影響。
但是基于(9)或(13)設計的相似度標準,選擇所有窗口中相似度最大的窗口,最終的檢測結果會傾向于選擇那些尺度更小的窗口,如圖14 的上半部分測試樣例。更小的搜索窗口會獲得更高的相似度。這是由于本文所采用的不同尺度的人臉模板都來自于標準模板的縮放得到。如果是比標準模板小的,則通過間隔采樣完成,如果是比標準模板大的,則通過雙線性插值完成。由于模板的尺寸和粗檢測的區(qū)域大小有關,有可能造成實際的人臉模板被縮得很小。對模板的縮小造成了信息的損失。在這種情況下小模板與小窗口圖像匹配的值通常大于大模板和大窗口的匹配值,也就造成了圖14 上半部分的實驗結果。
圖14
針對以上問題本文根據實驗對模板檢測的相似度度量方式做出了式(14)的改良。
其中的常數(shù)為實驗獲得的經驗值,r 來自式(11),ra 來自式(9),d 來自式(12),式(14)的設計思路是:
(1)式(11)作為主要的判別方式
(2)對于較小的人臉模板將給予一定的懲罰,也就是(14)的第二項,窗口比例小于0.6 的都會導致第二項為負數(shù),這樣可以減輕小窗口的影響
(3)實際應用中,單獨使用式(12)的d 難以得到好的結果,但d 值作為判別的標準之一時可以使得系統(tǒng)的精準度更高
最終使用式(14)的結果如圖14 下半部分所示,可以看到由于加入了對小窗口的懲罰,使得系統(tǒng)不再傾向于選擇小窗口,檢測精度得到了提升。在圖15 中給出了人臉模板檢測的具體流程。最后,圖15 中所示最大的窗口模板相似度記為maxSimilarity,當滿足maxsimilarity>ρ 時,即判定該窗口為人臉,ρ 取經驗值0.45。
圖15 模板檢測流程
本文實現(xiàn)的系統(tǒng)在Multi-Task Facial Landmark(MTFL)dataset[13](后簡稱MTFL 數(shù)據集)數(shù)據集上做了人臉檢測測試。并對比了基于式(10)、(13)和(14)三種相似度度量的系統(tǒng),以說明本文改進方法(14)的有效性。
表2 各方法測試結果
由表2 所示,本文在MTFL 數(shù)據集中隨機抽取了4321 張單人臉圖片對三種方法實現(xiàn)的人臉檢測系統(tǒng)做了測試,可以看到改進的方法(14)在查準率和查全率兩方面都有更好的效果,說明了改進的有效性。圖16是一些圖片的檢測結果展示。
圖16 檢測結果展示
最后,人臉檢測是一個復雜的系統(tǒng)需要應對復雜的檢測環(huán)境,不論是神經網絡還是傳統(tǒng)方法都有各自的應用場景。本文給出了對于傳統(tǒng)人臉檢測方法的一些改進思路,在人臉檢測的流程中還有很多可以改進和嘗試的,這些都有待于更進一步的研究。