蔣 嬋, 黃 晁, 陳春燕
(1.寧波大學(xué) 信息科學(xué)與工程學(xué)院,浙江 寧波 315211;2.寧波中國科學(xué)院信息技術(shù)應(yīng)用研究院,浙江 寧波 315100)
人臉檢測是計算機(jī)視覺領(lǐng)域的研究熱點(diǎn),是其他人臉分析任務(wù)的基礎(chǔ),自然環(huán)境下,人臉圖像受光變化、遮擋、多姿態(tài)等不可控的外界因素的影響。造成遮擋的原因有多種,如墨鏡、圍巾和外景物的遮擋。在檢測時,遮擋區(qū)域會在圖像中產(chǎn)生噪聲,極大地影響了人臉檢測的準(zhǔn)確率。因此,如何減小遮擋的影響,成為了人臉檢測技術(shù)中亟待解決的問題。
目前人臉檢測方法主要包括:基于先驗知識的方法[1,2]、基于特征的方法[3~5]、基于模板匹配[6,7]的方法和基于統(tǒng)計的方法。基于先驗知識的方法利用人臉具有的特殊結(jié)構(gòu)和形狀為先驗知識,設(shè)計相關(guān)啟發(fā)式算法。這種方法受外界因素影響較大?;谔卣鞯姆椒ㄖ饕萌四樀牟蛔兲卣鬟M(jìn)行檢測,該方法運(yùn)算量小,受姿態(tài)、光照等外界因素影響不大,對圖像質(zhì)量要求較高。基于模板匹配的方法的準(zhǔn)確率較高,模板初始化等操作運(yùn)算量很大,對圖像質(zhì)量要求很高,受外界因素影響較大?;诮y(tǒng)計方法的思想是使用機(jī)器學(xué)習(xí)方法建立統(tǒng)計模型的分類器,然后用分類器進(jìn)行人臉檢測,這種方法的性能取決于機(jī)器學(xué)習(xí)算法對訓(xùn)練樣本的學(xué)習(xí)能力。機(jī)器學(xué)習(xí)算法又可以分成基于概率模型的方法、基于神經(jīng)網(wǎng)絡(luò)的方法、基于支持向量機(jī)的方法和基于AdaBoost算法的方法。還有一些研究使用了AdaBoost與先驗知識相結(jié)合的方法,如文獻(xiàn)[8]提出了一種AdaBoost 算法和膚色校驗相結(jié)合的人臉檢測方法,有效地提高了人臉檢測率,文獻(xiàn)[9]使用AdaBoost 算法與膚色特征及幾何特征相結(jié)合,提高了多角度、多姿態(tài)下的人臉檢測率。但對于遮擋進(jìn)行處理的研究并不多。
針對上述問題,本文提出了一種實(shí)時的用于遮擋條件下的人臉檢測方法。實(shí)驗驗證了本文方法的有效性。
在訓(xùn)練AdaBoost分類器時,需要大量的訓(xùn)練樣本,遮擋情況下的訓(xùn)練樣本不足,導(dǎo)致了算法對遮擋人臉的學(xué)習(xí)能力受限[10]。為此,本文提出了一種數(shù)據(jù)增強(qiáng)的方法,首先對訓(xùn)練集進(jìn)行手動遮擋處理,然后使用了平均臉的策略,有效地對遮擋區(qū)域進(jìn)行分割和處理,獲得類似于自然環(huán)境下的遮擋圖像,以更好地訓(xùn)練人臉檢測器。圖1為利用平均臉方法進(jìn)行訓(xùn)練樣本處理的流程。
圖1 訓(xùn)練樣本處理流程
訓(xùn)練圖像選用Yale B人臉庫。該數(shù)據(jù)庫共包含64種不同的光照情況,分為五個子集,本文選用Subset 1子集(正常光照下采集的圖像),Subset 2和Subset 3子集(分別為輕微和中度光照影響的圖像)作為訓(xùn)練集。
首先計算3個子集中所有訓(xùn)練樣本的平均臉圖像。將Subset 2和Subset 3子集圖像的眼睛、鼻子和嘴巴分別引入人造遮擋圖像,如圖2所示。對這些遮擋圖像進(jìn)行處理得到與自然環(huán)境下遮擋情況相似的遮擋樣本,與3個子集一起作為訓(xùn)練正樣本,從而達(dá)到數(shù)據(jù)增強(qiáng)的目的,負(fù)樣本選擇非人臉的圖像。
圖2 引入人造遮擋圖像的樣本示例
平均臉通過給定的訓(xùn)練樣本取平均值得到,其計算過程如圖3所示。
圖3 平均臉計算過程
樣本中心化將所有圖像中的人臉移動到圖片的中心,便于平均臉的計算。中心化分為兩步,首先將圖像中所有的特征點(diǎn)的橫縱坐標(biāo)分別相加,然后除以特征點(diǎn)的個數(shù)得到每幅圖像中人臉當(dāng)前的中心點(diǎn)坐標(biāo),然后進(jìn)行中心坐標(biāo)到圖片中心坐標(biāo)的變換,人臉中所有特征點(diǎn)均進(jìn)行這樣的變換,即實(shí)現(xiàn)了所有形狀樣本的中心化。平均特征點(diǎn)位置初始化就是簡單的平均位置計算,即對所有樣本圖像中對應(yīng)的人臉特征位置的坐標(biāo)數(shù)值進(jìn)行求和取均值得到的。
遮擋區(qū)域檢測是后續(xù)遮擋區(qū)域處理的關(guān)鍵一步。為了更快地區(qū)分遮擋區(qū)域和非遮擋區(qū)域,將遮擋圖像和平均臉圖片進(jìn)行多次差值運(yùn)算,得到誤差臉圖像。
本文采用水平集分割方法[11~14]從誤差臉中得到遮擋區(qū)域的描述,水平集方法將n維曲面的演化問題轉(zhuǎn)化為n+1維空間的水平集函數(shù)曲面演化的隱含方式來求解,水平集函數(shù)曲面的演化遵循式(1)所示的Hamilton-Jacobi方程
在雞群內(nèi)發(fā)現(xiàn)球蟲病、白痢病等,并且雞體表面存在虱、螨等寄生蟲,容易導(dǎo)致雞群感染。相關(guān)設(shè)備在使用期間給雞帶來外傷或者母雞的病原性、生理性等,都將導(dǎo)致雞啄癖的發(fā)生。
(1)
式中F為曲線上各點(diǎn)的演化速度,方向沿著曲線的法線方向,通常與圖像梯度和曲線曲率有關(guān)。
假設(shè)C為一條封閉的活動輪廓,然后用水平集函數(shù)φ的零水平集φ(t=0)代替曲線C(t),曲線C內(nèi)部的點(diǎn)組成了遮擋區(qū)域,在曲線外部的是非遮擋區(qū)域,從而將遮擋區(qū)域和非遮擋區(qū)域分割開。
自然環(huán)境下眼睛的遮擋物多為墨鏡、帽檐等,嘴巴和鼻子多為口罩、圍巾遮擋,針對不同的部位,對分割好的遮擋區(qū)域進(jìn)行像素和形狀的近似處理,獲得類似于自然環(huán)境下的遮擋圖像。處理后的圖像和YaleB的3個子集作為訓(xùn)練樣本的正樣本。通過這種方法有效地避免了遮擋樣本不足導(dǎo)致的召回率不高的問題。結(jié)果表明,相對于未經(jīng)處理的遮擋圖像訓(xùn)練的人臉檢測器,使用處理后的遮擋圖像作為樣本訓(xùn)練的人臉檢測器可以在自然環(huán)境下獲得更高的人臉召回率,檢測速度也達(dá)到了實(shí)時的效果。
Harr特征也叫矩陣特征,人臉檢測中常使用的四種Haar特征圖4所示,每個特征的特征值的定義為圖中白色矩陣像素值與黑色矩形像素值之差。
圖4 基本的Haar特征
Haar特征可以經(jīng)過各種平移、縮放、旋轉(zhuǎn)的擴(kuò)展,僅一個32×32的子窗口內(nèi)會有幾十萬個Harr特征,計算量非常龐大,所以,為了提高計算效率,引入了積分圖,可以快速計算Haar特征的特征值。
定義輸入圖像I,在像素點(diǎn)A(x,y)處的積分圖為
(2)
(3)
AdaBoost算法的思想是將大量的分類能力一般的弱分類器通過一定方法疊加,構(gòu)成一個具有很強(qiáng)分類能力的強(qiáng)分類器。將AdaBoost算法最早應(yīng)用到人臉檢測上的是Jones M和Viola P[15],提出了一種基于級聯(lián)結(jié)構(gòu)的AdaBoost分類器。其檢測過程如圖5所示。
圖5 級聯(lián)檢測器的檢測過程
級聯(lián)人臉檢測器由多個強(qiáng)分類器組成,每一級的強(qiáng)分類器都采用AdaBoost算法進(jìn)行訓(xùn)練。具體的訓(xùn)練方法如下:
1)給定n個樣本圖像(x1,y1),(x2,y2),…(xi,yi),…,(xn,yn),xi為輸入樣本圖像,yi為類別標(biāo)志,其中,yi=0,1分別表示其為非人臉樣本和人臉樣本。
2)初始化權(quán)重
式中m和l分別為非人臉樣本和人臉樣本的數(shù)量。
3)訓(xùn)練T輪,F(xiàn)ort=1,2,…,Tt
a.歸一化權(quán)重
c.根據(jù)最低誤差et選擇最優(yōu)弱分類器ht。
d.更新權(quán)重
4)將T個弱分類器組合成一個強(qiáng)分類器
檢測時保持待檢測圖像的大小不變,不斷改變檢測窗口的大小,使用不同大小的窗口遍歷整個圖像來完成檢測,這種方法的運(yùn)算量會比圖像金字塔方法(固定窗口大小,縮放待檢測圖像)小很多。
檢測時使用的是滑動窗口的方式,同一張人臉中可能會出現(xiàn)幾個檢測框,需要使用一定的方法保留唯一的最優(yōu)檢測框。目前常用的方法合并窗口的方法有非極大值抑制(nonmaximal suppression,NMS)和并查集方法。本文使用的是非極大值抑制的方法。
非極大值抑制對多個檢測框進(jìn)行合并主要通過兩個指標(biāo):Score和IOU(intersection-over union,就是重疊面積),對于每一個待合并的檢測框,分類器會給出一個Score 表示當(dāng)前候選框的置信度,盡量保留置信度較高的候選框。IOU對于位置相鄰的檢測框,如果重疊面積大于一定的閾值則進(jìn)行合并。
本文的實(shí)驗環(huán)境為 Inter Core i5-6500CPU,操作系統(tǒng)為 Windows 7,使用Visual Studio 2015 進(jìn)行C++語言編程實(shí)現(xiàn)。
本文使用檢測速度、PR曲線(召回率為x軸,精確率為y軸的直角坐標(biāo)系)和mAP(式(4))對算法進(jìn)行評估,與未經(jīng)過處理的遮擋圖像作為訓(xùn)練集訓(xùn)練的AdaBoost檢測器的檢測的結(jié)果進(jìn)行對比,根據(jù)多次實(shí)驗的數(shù)據(jù)描繪出PR曲線,并根據(jù)式(4)計算出mAP值,結(jié)果如圖6所示
(4)
圖6 不同訓(xùn)練樣本的檢測結(jié)果對比
由圖6可以看出,本文方法的mAP值高達(dá)0.87,比直接使用人造遮擋圖像作為訓(xùn)練樣本訓(xùn)練的檢測器檢測的mAP值高出0.22,檢測速度也達(dá)到了毫秒的級別,可以實(shí)現(xiàn)實(shí)時檢測。
本文針對遮擋人臉的檢測率不高和訓(xùn)練樣本不足的問題,引入人造遮擋圖像,并對遮擋圖像進(jìn)行一系列處理,得到近似于自然環(huán)境下的遮擋圖片,從而解決了遮擋條件下訓(xùn)練樣本不足的問題。然后訓(xùn)練并使用AdaBoost算法進(jìn)行人臉檢測。結(jié)果表明本方法能夠有效地提高遮擋條件下的人臉召回率和精度,同時可達(dá)到實(shí)時檢測。本文前半部分主要是如何檢測出遮擋部位并進(jìn)行處理,這種方法不僅僅適用于檢測,對識別任務(wù)和圖像修復(fù)任務(wù)等都具有重大的意義。本文的方法在光照強(qiáng)度大的情況下的檢測效果還不太理想,這也是下一步繼續(xù)努力的方向。