張立亮 滕國偉* 范 濤 李 聰
1(上海先進通信與數(shù)據(jù)科學研究院上海大學通信與信息工程學院 上海 200444)2(華平信息技術股份有限公司 上海 200438)
人臉檢測是計算機領域比較重要的課題,作為人臉識別、人機交互和人臉追蹤等問題的前置算法,對于各種性能如遮擋、光照、旋轉人臉等特殊場景都要有一定的要求。隨著各種需求的提出,人臉檢測算法得到不斷的提高,傳統(tǒng)的算法如Viola和Jones提出的AdaBoost思想并結合Haar特征的算法[1],速度還算實時,但是Harr特征遠遠不能應對現(xiàn)實的光照、人臉表情等的變化。文獻[2]提出了基于HOG特征的DPM算法,但是時間復雜度太大,無法工業(yè)化應用在產(chǎn)品上。
隨著深度學習的熱潮興起,使用CNN(卷積神經(jīng)網(wǎng)絡)對圖像提取特征并對圖像分類得到廣泛使用。深度學習的人臉檢測算法如Cascade-CNN算法[3],是首個將傳統(tǒng)的V-J算法級聯(lián)思想用深度學習方法實現(xiàn),它使用3級校準網(wǎng)絡:12-net、24-net、48-net分別對應不同大小的輸入網(wǎng)絡,類似于AdaBoost的級聯(lián)思想。首先圖像金字塔輸入12-net,該層網(wǎng)絡篩選掉90%的矩形檢測框并校準,改變輸入大小至24×24再進行矩形框的篩選和校準,然后同樣傳入到48-net,最終回歸得到正確的人臉框,這種算法的效果不錯,但時間復雜度略高。目前,基于CNN的深度學習人臉檢測主要算法代表:區(qū)域候選的兩階段檢測算法和基于預選框的單階段檢測算法。
基于區(qū)域候選的算法如Faster-Rcnn算法[4],分為兩個階段:RPN(區(qū)域候選網(wǎng)絡)候選可能的目標區(qū)域和Fast-Rcnn算法對目標區(qū)域進行分類和回歸。RPN網(wǎng)絡:一幅任意的圖片經(jīng)過特征提取網(wǎng)絡,生成一個特征圖,采用prior-box(默認預選框)機制對區(qū)域進行預測。區(qū)域候選算法的第一階段,總共選擇了12 000個預選區(qū)域,經(jīng)過NMS(非極大值抑制)得到2 000個區(qū)域。另一個階段使用共享的特征圖來產(chǎn)生特征位置分數(shù)圖和RPN網(wǎng)絡階段的2 000個候選區(qū)域結合進行池化產(chǎn)生分類和回歸信息,最后得到具體的分類和回歸信息。使用RPN網(wǎng)絡加速了區(qū)域候選,使得相較于Fast-Rcnn算法速度提升了很多,而且精度效果也尤為顯著。
基于預選框的單階段算法如SSD算法[5],它的網(wǎng)絡結構是基于一個預訓練的VGG16網(wǎng)絡進行拓展的。SSD是將VGG16網(wǎng)絡的兩個全連接層改成卷積層后,再增加4個卷積層構造組成的網(wǎng)絡。從結構上看,SSD網(wǎng)絡整體呈現(xiàn)金字塔的結構形式,它分別在金字塔結構上選取不同卷積層的輸出作為檢測層,并在每個檢測層上使用兩個3×3大小的卷積核進行卷積,一個卷積用于產(chǎn)生分類用的置信度值,另一個則用于生成坐標信息。如圖1,每個prior-box都會生成2個分類置信度值以及4個坐標值(x,y,w,h)。每個檢測層的預選框的數(shù)量都是根據(jù)特征圖大小來計算得到的定量。在訓練階段,將置信度和坐標值分別計算誤差然后傳遞給loss層。在預測階段,直接通過置信度和坐標值標出預測人臉。SSD這種單階段的檢測算法相比于兩階段算法速度得到較大提升,而且精度也能夠得以保證。
圖1 SSD的預選框機制回歸過程
類似于SSD這樣的單階段檢測算法還有Yolo系列[6],使用固定的預選框進行分類和回歸?;趨^(qū)域候選或者預選框的檢測算法所設計的預選框都是針對人臉的旋轉體進行框定的,并不能完全實現(xiàn)旋轉不變性[7],水平的矩形預選框也不能真正反映目標人臉的方位。與這些試圖消除旋轉特征對檢測效果的影響不同,本文基于一種用于目標檢測領域的旋轉預測框思路,設計符合人臉的預選框機制,將旋轉信息與預選框進行關聯(lián),提取包含角度特征在內的信息,真正意義上實現(xiàn)旋轉不變性,對于全平面內大角度的旋轉人臉具有更好的檢測效果。
目前流行的人臉檢測算法的預選邊界框都是矩形的,它由4個參數(shù)來進行定義,分別是center point(中心點橫縱坐標兩個參數(shù))、width(寬)以及height(高)。在某些場景(見圖2),對于白色標記人臉1、2、3,這樣的密集的人臉進行檢測存在著大量的重合。這在NMS階段,有些檢測方法可能會把重復較大的框去除,另外單調的矩形框只是覆蓋到人臉部分,類似于白色標記人臉4一定程度上會達到30%~40%背景。
圖2 矩形邊界框檢測效果
而旋轉檢測框[8]可以較好地應對密集而角度變化較大的人臉場景。相比普通的矩形框,旋轉檢測框有5個參數(shù)來定義位置、尺寸和方位,可以更好地表達人臉的輪廓,如圖3所示。
圖3 旋轉預測框檢測效果
對于傳統(tǒng)的矩形預選框,會在訓練的過程中使用IOU(交并比)來計算預選框和真實值之間的重合程度來完成正負預選框劃分,IOU定義的A、B兩個矩形框的重疊率公式為:
(1)
式中:Area(A∩B)表示的是A、B兩塊區(qū)域的交集區(qū)域;Area(A∪B)表示的A、B兩塊區(qū)域的并集區(qū)域。通過該指標可以較好地衡量兩塊矩形框的重合程度。對于旋轉預選框,需要定義新的角度相關的IOU來適合旋轉框的匹配。新的IOU,稱之為RIOU[9],定義如下:
(2)
本文所使用的網(wǎng)絡結構和傳統(tǒng)的水平矩形預選框的人臉檢測算法一樣,先提取特征,根據(jù)提取到的真實值特征和預選框的位置關系計算損失函數(shù),反向傳播進行權重的訓練。
網(wǎng)絡的主干網(wǎng)絡是類似于Faster-Rcnn算法的RPN網(wǎng)絡的部分。本文使用VGG16網(wǎng)絡的conv1_1到conv5_3的卷積層提取特征,然后使用兩個3×3的卷積核,分別進行人臉的分類和邊框回歸。VGG16是在imageNet數(shù)據(jù)集上進行過預訓練的圖像分類網(wǎng)絡,具有很好的特征提取和分類功能,其結構如圖4-圖5所示。
圖4 基于VGG的主干網(wǎng)絡
圖5 分類回歸子網(wǎng)絡
在提取到特征圖之后,設定特征圖每個點的旋轉預測框來定位人臉,如圖6所示,單尺度上8個預選框,分別覆蓋不同的角度,同時使用多尺度進行尺度上的契合?;谛D預選框,我們可以對目標的多個方向和多個尺度進行分類和坐標的偏移值進行預測[10]。當訓練網(wǎng)絡,首先將真實人臉邊框匹配旋轉預選框,將匹配到的預選框標記為正樣本,圖7為旋轉預選框匹配真實值。
圖6 旋轉預選框模塊
圖7 旋轉預測框與真實值匹配
選擇600×600的圖像大小作為輸入,預選框的尺度設定為{30,60,111,162},高寬的比例大小設定為2∶3,則較長邊高的尺度集為{45,90,166,242}。多尺度的設定顯然可以更好地檢測多尺度的目標,檢測層的步長尺度為16,并有228×228的感受野。旋轉預選框的角度設定為{0,45,90,135,180,225,270,315},單個尺度下的預選框的設計如圖8所示。多角度預選框策略將檢測任務訓練成一個個子任務,每個子任務集中在一個角度范圍,減少了由物體旋轉引起的難度。
圖8 同一個尺度下的旋轉預選框
訓練期間,每個原圖的真實值旋轉邊框(ground truth RBox,gtRBox)會根據(jù)RIOU來匹配若干個預選框。當一個旋轉預選框和某個gtRBox的RIOU大于0.5,就將該預選框分配給gtRBox。匹配的預選框會被視為正樣本,參與之后的回歸和分類的損失計算。RIOU的使用有助于訓練過程選擇適當角度的旋轉預選框作為正樣本,在訓練期間可以學習人臉的角度信息,在正負樣本的劃分之后,會產(chǎn)生大量的負樣本邊框,使用和SSD算法類似的OHEM(在線負樣本挖掘)[11]策略使得正負樣本的比例維持在1∶1,防止樣本不均衡導致訓練失敗。
在SSD的目標損失函數(shù)的基礎上進行拓展,增加角度信息,整體的損失函數(shù)[12]的表達式如下:
(3)
式中:N是匹配到的預選框的數(shù)量;Lcls(x,c)是所有正負樣本的兩類分類損失函數(shù);c是兩維的置信度向量;LLOC(x,l,g)是回歸坐標和角度的偏移量損失;a是平衡兩種損失函數(shù)的權重,這里設置1。分類損失的公式為:
(4)
(5)
(6)
(7)
(8)
當計算損失時,只計算匹配到真實值框的預選框。
本節(jié)將對訓練好的旋轉預測網(wǎng)絡進行性能上的測試和水平矩形預選框網(wǎng)絡SSD和Faster-Rcnn在同一數(shù)據(jù)集的情況下進行比較,分析該預測網(wǎng)絡的魯棒性。實驗環(huán)境:Ubantu 16.04環(huán)境下,硬件是Intel core i7處理器,NIVIDA GTX1080TI 11 GB顯存。
采用基于FDDB人臉數(shù)據(jù)集[13]的2 845幅圖片,其中包含了5 171幅人臉。由于大多數(shù)的FDDB人臉都是豎直向上的人臉角度,因此需要將FDDB人臉按照豎屏180度翻轉,再從姿態(tài)變化和角度變化較大的Wider Face[14]人臉數(shù)據(jù)集中抽取370幅角度變化很大的人臉圖片。對以上圖片使用統(tǒng)一的標簽標記軟件,將位置、大小以及角度信息錄入標簽中。
訓練和測試階段的數(shù)據(jù)集比例為8∶1,即使用20%比例的復雜背景、角度偏差較大的測試人臉集進行測試。
使用相同的數(shù)據(jù)集訓練傳統(tǒng)的人臉檢測算法SSD算法和Faster-Rcnn算法,通過MAP(平均準確率)來衡量算法的性能,通過比較幾個算法間的MAP大小和實際人臉圖像的檢測效果來證明本文算法的魯棒性和旋轉不變性。圖9是SSD、Faster-Rcnn以及本文算法的P-R曲線圖,可以看出,在測試樣本集比較復雜(角度、尺度、表情),測試集角度難度較大的情況。本文的算法在單點的性能評估上好于對比的另外兩個算法,全局性能可以根據(jù)P-R曲線與橫縱坐標所圍面積來比較其性能高低,而彌補了單點局限性來評估全局的檢測器性能。由圖9可看出,本文算法的整體性能明顯好于其他的兩個比較算法。
圖9 P-R曲線
如表1所示,3個算法間的MAP大小比較,可以發(fā)現(xiàn)本文算法的性能比精確度顯著的Faster-Rcnn還好0.22。與速度較快的SSD算法相比較,本文的算法速度與其相當。MAP大小正好和Precision-Recall曲線所圍面積所對應。
表1 算法的MAP和FPS性能比較
圖10分別為三種算法對同一幅圖的檢測效果,使用白色標記數(shù)字來表示每一個檢測到的人臉標號,可以看出,對于密集的帶有角度的檢測人臉,本文算法非常有效,可以解決人臉在多角度環(huán)境下的密集檢測。本文算法與SSD,一樣沒有過多的預選框,保證了速度上的性能,同時旋轉的預選框又比Faster-Rcnn在某些角度上有更好的契合目標,保證了旋轉性能下的高精度性能。圖11是旋轉預選框算法對于極限角度的檢測效果,可以看到該算法對于角度的魯棒,真正意義上達到旋轉不變性。
(a) SSD檢測效果
(b) Faster-Rcnn檢測效果
(c) 本文的旋轉預選框檢測效果圖10 三種算法不同的檢測效果
圖11 旋轉預選框多角度檢測效果
本文基于目標檢測領域的旋轉預測框思想,將旋轉預選框按照傳統(tǒng)深度學習的水平矩形框預選思路,將角度信息加入網(wǎng)絡訓練的回歸參數(shù)之一,使用旋轉框匹配的RIOU計算方式,設計多尺度的人臉旋轉預選框網(wǎng)絡,改進適合人臉檢測的旋轉預選框。使用多尺度的輸入來訓練網(wǎng)絡,在常用FDDB人臉數(shù)據(jù)集和Wider Face數(shù)據(jù)集基礎上,使用統(tǒng)一標定軟件進行標定?;谥匦聵硕ǖ腇DDB和Wider Face的組合數(shù)據(jù)集,選擇其中的20%作為測試集進行測試,分別對Faster-Rcnn和SSD進行性能統(tǒng)計,可以驗證本文算法在旋轉人臉數(shù)據(jù)集下測試,保證一定速度的情況下,精度較高。對于平面內大角度范圍的人臉檢測依然保持較好的效果,具有較為魯棒的旋轉不變性。