傅 勇,潘 晴,田妮莉,楊志景,Bingo Wing-Kuen Ling,Everett.X. Wang
(廣東工業(yè)大學 信息工程學院,廣東 廣州 510006)
近年來,基于深度學習的人臉檢測和人臉識別[1-3]引起了廣泛的關注。但在一些特殊的場景中,由于平面內(nèi)旋轉(zhuǎn)(rotation in plane,RIP)導致的人臉表面特征變化,使得這些人臉檢測變得極具挑戰(zhàn)性。而目前的人臉檢測算法恰恰沒有考慮到這些特殊的場景,因此需要一種精確快速全方位RIP人臉檢測算法,以提高后續(xù)的人臉識別精度。
DDFD[4]指出在CNN訓練階段增加多視角多姿態(tài)人臉圖片,可以提高多姿態(tài)人臉檢測精度,該方法一方面需要對數(shù)據(jù)進行增廣以檢測RIP人臉,另一方面也需要較深的網(wǎng)絡,而簡單的數(shù)據(jù)增廣會增加接下來多任務學習計算難度,不利于人臉關鍵點定位。C.Huang等[5]提出了將一張圖片檢測4次的方法來檢測RIP人臉的方法,這種分治策略帶來更多的誤檢測、時間開銷成倍增長,顯然不滿足實際工程應用。H.A.Rowley等[6]提出了一個路由網(wǎng)絡先估計候選框角度,再輸入網(wǎng)絡中識別,但由于沒能精準估計角度及使用傳統(tǒng)神經(jīng)網(wǎng)絡導致檢測時間過長,精度不高。
Cascade CNN[7]通過級聯(lián)多個CNN逐步過濾非人臉樣本,實驗結果表明,該方法能夠有效實現(xiàn)人臉檢測;而MTCNN[8]將人臉分類、邊框回歸、人臉關鍵點定位3個任務合并,證明相關聯(lián)的不同任務地實現(xiàn)多任務學習,可以互相提升性能;PCN[9]也通過級聯(lián)網(wǎng)絡檢測了RIP人臉。本文由此在傳統(tǒng)的級聯(lián)CNN的基礎上,嵌入一個32net的RIP分類網(wǎng)絡,本文不僅能檢測任意角度RIP人臉,還進行了人臉關鍵點定位來實現(xiàn)人臉對齊,人臉關鍵點定位和人臉檢測多任務學習提高了人臉檢測性能,最后對本文算法進行了合理的評估。
在級聯(lián)卷積神經(jīng)網(wǎng)絡分類器中,下一級的網(wǎng)絡會比上一級更復雜,在模型前期去除大量的負樣本,使后面的網(wǎng)絡運行時間更短,級聯(lián)分類器可以快速地檢測目標,同時也減少了最后輸出的正樣本中FP(false positive)數(shù)量,提高了分類器地精確率(Precision)。本文由4個卷積神經(jīng)網(wǎng)絡構成一個級聯(lián)卷積神經(jīng)網(wǎng)絡結構,如圖1所示,Conv,MP,AP, fc分別表示卷積層,最大池化層,平均池化層,全連接層,(k×k)為卷積核尺寸大小,底部數(shù)字為feature map尺寸×個數(shù)。其中網(wǎng)絡2(24net)和網(wǎng)絡3(32net)為并行結構,輸入都為網(wǎng)絡1(12net)輸出的人臉候選框。級聯(lián)神經(jīng)網(wǎng)絡一般由3個小網(wǎng)絡構成,如本文中的12net,24net,48net。
圖1 級聯(lián)網(wǎng)絡4個CNN結構
24net是一個中間的起媒介作用的網(wǎng)絡,和12net類似,同時處理人臉和非人臉的二分類和人臉邊界框回歸,通過12net后剩下的檢測框尺寸重新調(diào)整成24×24大小,進一步通過24net篩選檢測。24net包含3個卷積層、兩個最大池化層和一個全連接層,進一步地拒絕大量地錯誤候選框,通過邊界框回歸偏移量校正網(wǎng)絡輸出的人臉候選框,最后進行非極大值抑制(NMS)。
48net結構如圖1所示,類似于24net,但更復雜,增加一個卷積層,同時輸出了5個關鍵點坐標信息。本網(wǎng)絡驗證了相關聯(lián)的多任務學習可以提高人臉檢測精度。
本文改進了一個級聯(lián)卷積神經(jīng)網(wǎng)絡,如圖1中32net是本文增加的一個網(wǎng)絡。檢測器整個測試圖片傳輸途徑如圖2所示,Pnet(12net)為第一個網(wǎng)絡,輸出較多候選框經(jīng)過NMS后,同時輸入Rnet(24net)和Cnet(32net),Rnet檢測豎直人臉后經(jīng)過NMS,Cnet保留旋轉(zhuǎn)人臉并校正,最后輸入Onet(48net)通過NMS去除IoU比值超過閾值的框。參考文獻[8],給定一張圖片,縮放到不同的尺寸來構建一個圖像金字塔,輸入到第一個建議網(wǎng)絡(12net),產(chǎn)生較多地候選窗口同時對候選邊界框回歸,初步的非極大值抑制去除重疊區(qū)域比率很高的檢測框。
圖2 測試圖片傳輸途徑
剩下的檢測窗口同時輸入改善網(wǎng)絡(24net)和分類網(wǎng)絡(32net),分類網(wǎng)絡保留在平面內(nèi)旋轉(zhuǎn)角度[45°,315°]之間的候選框,通過Softmax層輸出類別后,進行相應的仿射變換,變換成豎直方向的正臉,再輸入最后的輸出網(wǎng)絡(48net)得到人臉候選框和關鍵點坐標;同時12net輸出的候選框輸入24net進一步檢測篩選掉非人臉框,經(jīng)過非極大值抑制后,將剩下候選框輸入最后的48net得到人臉候選框和關鍵點坐標,最后將兩次48net輸出的候選框合并通過非極大值抑制消除IoU(交并比)比值超過閾值的框,得到最終的輸出。也就是說,當測試圖片中包含旋轉(zhuǎn)角度過大的人臉時,通過12net,32net,48net校正在平面內(nèi)旋轉(zhuǎn)人臉候選框,得到人臉框和相應的關鍵點坐標;測試圖片中的正臉,旋轉(zhuǎn)角度[-45°,45°]之間的人臉通過12net,24net,48net,檢測輸出相應的人臉候選框。
本文將平面內(nèi)旋轉(zhuǎn)人臉檢測看作一個多分類問題,即將平面空間劃分為4個類,并將某一旋轉(zhuǎn)角度下的人臉劃分到其所屬的類中,如圖3所示,1、2、3類被32net保留。
圖3 平面內(nèi)旋轉(zhuǎn)人臉類別
32net是一個4分類網(wǎng)絡,如圖3所示,將任意平面內(nèi)旋轉(zhuǎn)(rotation-in-plane,RIP)角度的人臉分為4類。網(wǎng)絡1輸出的所有的候選窗口調(diào)整成32*32大小輸入32net,再對RIP角度人臉進行4分類,將一個平面內(nèi)的人臉按照角度劃分成4類,每個類別都包含一個90°區(qū)間大小的RIP人臉。32net網(wǎng)絡結構如圖1所示,包含3個卷積層、3個池化層和兩個全連接層,為了提高分類準確率,在每個卷積層后加入BN[11]層,輸入每一維度減去自身均值,再除以自身標準差,使用隨機梯度下降法訓練,這些均值和方差也只在當前迭代的batch中計算,將數(shù)據(jù)以mini-batch的形式逐一處理,但測試時對每個樣本逐一處理,BN層有正則化效果,可以加速網(wǎng)絡學習等優(yōu)勢。對于這個4分類問題,每個樣本xi, 使用交叉熵損失函數(shù)
(1)
其中,pi是樣本xi屬于各個類別的概率,分類模型經(jīng)過Softmax激活函數(shù)之后,4個類別概率總和變?yōu)?,這里歸一化的作用是輸出4個直觀的概率值,yi∈{0,1,2,3} 指示各個類別的真實標簽。
如圖2所示,48net輸入為上一級中兩個網(wǎng)絡輸出的所有候選框。若這一級也就是最后一級輸出含有32net中產(chǎn)生的候選框,先進行仿射變換,仿射變換是將RIP人臉候選框坐標進行變換,得到實際人臉框在整個測試圖片上的坐標,變換矩陣為
(2)
(3)
(4)
二維旋轉(zhuǎn)變換公式
M=B1×B2×B3
(5)
首先將旋轉(zhuǎn)中心移動到坐標(0.5,0.5)處,然后執(zhí)行θ角旋轉(zhuǎn),當為圖3中的1類時,候選框旋轉(zhuǎn)90°,當為類別2時,候選框旋轉(zhuǎn)180°,當為類別3時,候選框旋轉(zhuǎn)270°,再將旋轉(zhuǎn)中心移回到原來位置,得到旋轉(zhuǎn)人臉候選框的坐標,同樣,我們可以求出RIP人臉的關鍵點坐標。這里只旋轉(zhuǎn)了候選框,而之前32net是旋轉(zhuǎn)框內(nèi)的圖片。最后將候選框進行非極大值抑制(NMS),得到最終的輸出。
這部分介紹了網(wǎng)絡訓練、數(shù)據(jù)預處理和多任務學習中各個任務的訓練細節(jié)及作用。同時為驗證本文提出的級聯(lián)卷積神經(jīng)網(wǎng)絡在人臉檢測任務中的性能,本文人臉檢測方法與當前最新的算法在FDDB數(shù)據(jù)集上對比,該數(shù)據(jù)集是權威的人臉檢測的評測基準,包含2845張圖片,共計5171個人臉,人臉標注為橢圓標注。接下來評估本文方法在RIP人臉數(shù)據(jù)集的圖片上的性能,最后評估本文方法的運行效率。
本文實驗用到Python2.7、Matlab、VS2013編譯環(huán)境,使用Caffe框架,采用GPU提高計算速度,GPU型號Nvidia Titan Xp,GPU內(nèi)存為16 G。
本文對4個網(wǎng)絡單獨進行訓練,第1、2、4網(wǎng)絡訓練參考文獻[5],結合人臉二分類、人臉框回歸、人臉關鍵點定位3個任務訓練一個級聯(lián)卷積神經(jīng)網(wǎng)絡常規(guī)人臉檢測器。本文為了檢測RIP人臉,增加一個分類網(wǎng)絡。制作訓練集和驗證集訓練第3(32net)網(wǎng)絡,是一個輕量級的網(wǎng)絡模型,損失函數(shù)為式(1),接下來介紹其訓練細節(jié)。
32net訓練數(shù)據(jù)來源于LFPW,該數(shù)據(jù)集包含大量簡單場景下的常規(guī)人臉,首先對圖片進行較小的平移、旋轉(zhuǎn)和鏡像等方法進行數(shù)據(jù)增廣,圖片原來的人臉標注也需要重新計算,再對圖片進行3個大角度旋轉(zhuǎn)及人臉框標注的坐標進行變換,最后裁剪圖片中的人臉,得到4個類別訓練數(shù)據(jù),每個類別圖片20 K左右,使訓練集覆蓋各個RIP角度的人臉。這里主要保存RIP角度較大的人臉候選框,所以在類別0訓練集中加入了非人臉及部分人臉,這樣12net檢測出的非人臉候選框及RIP角度很小的人臉都會被32net篩選掉。
本文通過訓練大量的人臉圖片解決RIP人臉檢測和關鍵點定位,第1、2、4網(wǎng)絡主要參考文獻[8],訓練數(shù)據(jù)來源于WIDER FACE[12],負樣本和真實人臉框IoU比率小于0.3,正樣本IoU比率大于0.65,部分人臉I(yè)oU比率介于0.4到0.65之間,人臉關鍵點回歸數(shù)據(jù)來源于CelebA[13],級聯(lián)網(wǎng)絡訓練集數(shù)據(jù)組成比率為3∶1∶1∶2,分別為負樣本、正樣本、部分人臉樣本和包含人臉關鍵點坐標樣本。
3.1.1 人臉分類
網(wǎng)絡學習到一個2分類問題,對最后輸出的feature map判斷,當預測為正類時,經(jīng)過坐標變換求出人臉候選框。對于每個xi, 類似于式(1),使用邏輯回歸交叉熵損失函數(shù)
(6)
其中,pi是樣本xi屬于人臉的概率,通過網(wǎng)絡輸出得到,yi∈{0,1} 代表真實樣本標簽。
3.1.2 人臉邊界框回歸
對于每一個候選窗口,預測它和最接近它的真實樣本框(左頂點坐標,高和寬)的偏移量,學習一個回歸問題,對于每個xi, 使用歐式距離損失函數(shù)
(7)
3.1.3 人臉關鍵點定位
類似于人臉框回歸,人臉關鍵點預測也是一個回歸任務,使用最小化歐式距離損失函數(shù)
(8)
網(wǎng)絡同時學習人臉關鍵點回歸和人臉框回歸任務時,極大程度提高了兩個任務單獨訓練的準確度,本文主要為了提高檢測RIP角度人臉精度。人臉關鍵點坐標是相對于人臉框的相對位置,而不是直接在整張測試圖片中定位出坐標信息。為了更準確定位出關鍵點坐標,48net訓練時只訓練豎直方向人臉,訓練單一的樣本使得人臉關鍵點坐標和人臉框之間對應關系簡單,更容易完成多任務學習,也簡化了測試時的計算步驟。
人臉框回歸測試效果如圖4所示,粗略框由人臉二分類得出,邊界框回歸校正后的為準確框。測試圖片時,當最后一級網(wǎng)絡輸出不加回歸偏移量時,預測為粗略框,增加回歸向量偏移量后校正后為準確候選框,直觀表明人臉框回歸任務可以提高人臉檢測精度。圖4是改進后的網(wǎng)絡輸出,簡單的級聯(lián)網(wǎng)絡只能檢測和校正豎直人臉。
圖4 人臉框回歸偏移量校正人臉候選框
FDDB使用橢圓標注定義兩種評估類型:連續(xù)得分和離散得分,跟隨FDDB網(wǎng)站的評估程序和步驟來檢測本文的人臉檢測器性能,在FDDB數(shù)據(jù)集對比不同的人臉檢測器,如圖5和圖6所示,可以看出,本文的方法在FDDB數(shù)據(jù)集表現(xiàn)和MTCNN[8]檢測效果接近,優(yōu)于本文提到的其它方法,本文主要為了檢測旋轉(zhuǎn)人臉,接下來我們將測試本文方法在旋轉(zhuǎn)人臉數(shù)據(jù)集上的表現(xiàn)。
本文創(chuàng)建了一個旋轉(zhuǎn)人臉測試集,包含725張圖片,853個人臉,其中603張圖片來自CelebA[13],將這些圖片分別進行3個大角度的旋轉(zhuǎn),使人臉覆蓋上文提到的4個類別及任意RIP角度,然后對其標注進行相應坐標變換,另外122張圖片從網(wǎng)上下載,主要為家庭合影、瑜伽、街舞、藝術表演和體育運動背景圖片,我們對圖片中的人臉標注了矩形邊界框。一些檢測圖片效果如圖7所示。
接下來評估了分類器在該測試集上的性能,繪制PR曲線,如圖8所示,MTCNN[8]很難完成RIP人臉檢測,召回率最大時都沒有到達0.5。實驗結果表明,普通級聯(lián)卷積神經(jīng)網(wǎng)絡不能精確地檢測RIP人臉,很多RIP人臉未檢測到,本文提出的改進方法提高了RIP角度的人臉檢測的查全率,也提高了查準率,本文方法在該數(shù)據(jù)集上檢測召回率為0.847,精確率為0.9。本實驗采用召回率(Recall)作為評價指標,召回率越高,檢測效果越好,召回率計算公式如下
圖5 對比其它方法連續(xù)得分效果
圖6 對比其它方法離散得分效果
圖7 部分檢測結果樣例圖像
(9)
圖8 旋轉(zhuǎn)人臉測試PR曲線
本文改進的級聯(lián)卷積神經(jīng)網(wǎng)絡取得了較快的運行速度,本文模型尺寸較小,通過降低網(wǎng)絡輸入尺寸達到更高的速度,計算本文的方法和MTCNN[8]在所有FDDB數(shù)據(jù)集圖片的運行平均速度,共2845張圖片,使用MATLAB平臺,GPU加速,見表1,實驗結果表明只增加人臉候選框旋轉(zhuǎn)變換和一個小的分類網(wǎng)絡,沒有增加過多的時間花費。
表1 速度對比
本文改進了一種RIP人臉檢測和關鍵點定位方法,實驗結果表明,本文的方法可以很好檢測RIP人臉,本文人臉關鍵點定位主要為了獲得更好的人臉檢測效果,同時進行人臉關鍵點定位和人臉框回歸任務可以提高人臉框回歸精度。本文主要改進了一個級聯(lián)網(wǎng)絡,由4個網(wǎng)絡組成,將平面內(nèi)旋轉(zhuǎn)人臉檢測看作一個多分類問題,很好解決了RIP人臉檢測。未來將研究平面外旋轉(zhuǎn)(rotation off plane,ROP)[14]人臉檢測模型,與本文方法進行融合,搭建一個完整的多姿態(tài)人臉檢測系統(tǒng)。