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