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