国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種輕量級的多尺度特征人臉檢測方法

2020-04-30 04:25程賓洋
計算機技術(shù)與發(fā)展 2020年4期
關(guān)鍵詞:主干人臉尺度

朱 鵬,陳 虎*,李 科,程賓洋

(1.四川大學(xué) 計算機學(xué)院,四川 成都 610065;2.四川大學(xué) 視覺合成圖形圖像技術(shù)國防重點學(xué)科實驗室,四川 成都 610065;3.四川川大智勝軟件股份有限公司,四川 成都 610045)

1 概 述

早期人臉檢測算法大多使用的是模板匹配技術(shù)。其中具有代表性的是Rowley等人提出的基于神經(jīng)網(wǎng)絡(luò)的正面人臉檢測系統(tǒng)[1],通過滑動窗口檢測圖像,并確定每個窗口是否包含面部,用20×20的人臉和非人臉圖像訓(xùn)練了一個多層感知器模型,該系統(tǒng)在多個網(wǎng)絡(luò)之間進(jìn)行判斷,從而提高單個網(wǎng)絡(luò)的性能,主要解決近似正面的人臉檢測問題。在后續(xù)Rowley對算法的更新中,加入了角度估計器[2],可對待檢測區(qū)域進(jìn)行旋轉(zhuǎn)從而再進(jìn)行正面人臉檢測。不過由于復(fù)雜的分類器設(shè)計和密集的滑動窗口采樣需要大量的運算,使得檢測速度差強人意。

2001年Viola和Jones設(shè)計了一種基于AdaBoost分類器的人臉檢測算法[3],使用簡單的Haar-like特征和級聯(lián)的AdaBoost分類器對滑動窗口中的候選框進(jìn)行判定,同時為了提高效率,引用了積分圖(integral image)機制。在深度學(xué)習(xí)出現(xiàn)之前,工程中使用的人臉檢測大多都是基于該算法的延伸。但是由于Haar-like是相對簡單的一種特征,所以其穩(wěn)定性較低;同時AdaBoost弱分類器采用簡單的決策樹,對正面人臉的檢測效果較好,但是對于各種人臉姿態(tài)、表情和遮擋等特殊復(fù)雜情況檢測效果并不理想;并且在該算法的分類器設(shè)計中,對一個樣本的評價不會基于該樣本在之前階段中的表現(xiàn),所以分類器的魯棒性差?;谠摲椒ǖ暮罄m(xù)研究中,使用了其他特征,比如局部的二進(jìn)制模式(LBP)[4]和顏色特征[5],使得檢測效果得到了很大的改進(jìn),并且在此基礎(chǔ)上用于人臉追蹤[6]。

2008年Felzenszwalb提出基于DMP(deformable part model)模型的人臉檢測算法[7],采用FHOG(對HOG的改動)進(jìn)行特征的提取,該算法在多姿態(tài)、多角度和遮擋等場景下的檢測效果要優(yōu)于Viola和Jones提出的算法效果,但是由于該模型的計算量過大,達(dá)不到實時性的要求,所以在實際工程中很少采用。

自2012年AlexNet在ILSVRC(imagenet large scale visual recognition challenge)的圖像分類比賽中取得突破性成績后,卷積神經(jīng)網(wǎng)絡(luò)很快運用到圖像處理和目標(biāo)檢測中,并同樣取得重大進(jìn)展[8]。通過卷積神經(jīng)網(wǎng)絡(luò)能夠讓網(wǎng)絡(luò)更好地獲取到目標(biāo)各個層級的特征,從而增強了網(wǎng)絡(luò)對外界環(huán)境的魯棒性。

Cascade CNN是傳統(tǒng)檢測向深度網(wǎng)絡(luò)過渡的代表[9],由Li Haoxiang等人提出,和Viola-Jones的人臉檢測器相似,采用級聯(lián)的方式組織多個分類器,不同的是每一級的分類器由卷積神經(jīng)網(wǎng)絡(luò)組成,并且構(gòu)建圖像金字塔,通過滑動窗口將待檢測區(qū)域送入三個網(wǎng)絡(luò)中進(jìn)行回歸校正,通常第一個網(wǎng)絡(luò)就可以剔除絕大多數(shù)負(fù)樣本,同時每個網(wǎng)絡(luò)間采用NMS(non-maximum suppression)算法去除高度重疊的區(qū)域。之后的MTCNN網(wǎng)絡(luò)[10]也是借鑒了Cascade CNN模型的思想。隨后的研究[11]中,使用L2損失與三元組損失相結(jié)合的總損失函數(shù),減少漏檢;在文獻(xiàn)[12]中還使用了兩層級聯(lián)網(wǎng)絡(luò);在文獻(xiàn)[13]中,級聯(lián)網(wǎng)絡(luò)之間加入了圖像金字塔;這些改進(jìn)都取得了較好的檢測效果。

文中提出的模型是基于SSH(single stage headless)[14]的人臉檢測模型,SSH最大的特點就是尺度不相關(guān)性(scale-invariant),MTCNN是對待檢測圖像的不同尺度分別進(jìn)行預(yù)測,如此一來計算量會大大增加,而SSH只需要一個尺度的圖像就可以預(yù)測,實現(xiàn)了one stage的人臉檢測。其原理是利用3個檢測模塊(M1,M2,M3)分別對主干VGG網(wǎng)絡(luò)的3個不同特征圖進(jìn)行預(yù)測,每個檢測模塊都包含檢測和分類,通過對不同尺度的特征圖進(jìn)行預(yù)測,實現(xiàn)了多尺度的人臉檢測,但是傳統(tǒng)VGG網(wǎng)絡(luò)的計算量相對較大,網(wǎng)絡(luò)參數(shù)也相對較多。文中的主干網(wǎng)絡(luò)參考了當(dāng)前先進(jìn)Mobile-Net[15]結(jié)構(gòu)的思想,設(shè)計出了一種輕量級網(wǎng)絡(luò)結(jié)構(gòu),該網(wǎng)絡(luò)主要由多個3×3,1×1卷積核和傳統(tǒng)卷積核構(gòu)成,將一個標(biāo)準(zhǔn)卷積分解為一個深度卷積和一個點卷積(1×1卷積核),在保證卷積效果的同時大大縮減了計算復(fù)雜度,從而提高了檢測效率。此外,模型的檢測模塊融合多個卷積特征,可以獲得更多的上下文信息以及更大的感受野,從而提升檢測性能。

2 設(shè)計方法

2.1 整體框架

該方法是在caffe深度學(xué)習(xí)框架下設(shè)計和訓(xùn)練的,該框架具有簡潔快速的特點。網(wǎng)絡(luò)模型由1個主干網(wǎng)絡(luò)和3個檢測模塊構(gòu)成。主干網(wǎng)絡(luò)未使用標(biāo)準(zhǔn)卷積,而是將一個標(biāo)準(zhǔn)卷積分解為一個深度卷積和點卷積(1×1卷積核),從而減少運算量和參數(shù),提高運算效率,降低內(nèi)存消耗;同時主干網(wǎng)絡(luò)在每一層卷積后都會加入批量歸一化(batch normal),加快模型收斂速度,避免網(wǎng)絡(luò)的梯度消失或爆炸問題,并減少網(wǎng)絡(luò)對初始參數(shù)的依賴;3個檢測模塊(M1,M2,M3)分別檢測主干網(wǎng)絡(luò)中3個不同尺度的特征圖,以檢測不同大小的目標(biāo),其中檢測模塊包含目標(biāo)分類和框體回歸操作,由一個普通的3×3卷積,一個context Module和兩個1×1卷積組成。context Module為了獲得更多的上下文信息和更大的感受野,使用了5×5和7×7的卷積核分別進(jìn)行卷積操作,然后使用concat融合特征;另外網(wǎng)絡(luò)去除了全連接層,使用1×1卷積核代替全連接層,使得網(wǎng)絡(luò)的輸入可以像Faster RCNN[16]一樣輸入不同尺寸的圖片,同時減少模型參數(shù)??傮w來說,文中提出的模型考慮了效率和準(zhǔn)確度,既能保證檢測精度,又能達(dá)到人臉的實時檢測,可應(yīng)用于實際的工程中。

網(wǎng)絡(luò)模型的總體結(jié)構(gòu)如圖1所示。

其中M1、M2和M3分別表示檢測模塊1、檢測模塊2和檢測模塊3,分別用于檢測小目標(biāo)、中目標(biāo)和大目標(biāo)。

2.2 主干網(wǎng)絡(luò)設(shè)計

文中提出的主干網(wǎng)絡(luò)參考了深度可分離卷積[17]的方法,該方法的核心是將一個傳統(tǒng)卷積分離為深度卷積(depthwise convolution)和一個1×1的卷積(pointwise convolution),在盡量提取特征的同時,減少網(wǎng)絡(luò)參數(shù)和網(wǎng)絡(luò)計算量。結(jié)合多尺度特征提取的思想和人臉檢測的實際場景應(yīng)用,設(shè)計出了一種傳統(tǒng)卷積和深度可分離卷積相結(jié)合的,輕量級的,具備實時性的主干網(wǎng)絡(luò)?,F(xiàn)有一個輸入為W×W×C×1的特征,如圖2所示將傳統(tǒng)卷積分解成深度可分離卷積。

圖1 模型總體結(jié)構(gòu)

圖2 深度可分離卷積

其中k、S、C和N分別為卷積核的標(biāo)識、卷積核的尺寸、輸入特征圖的深度和輸出特征圖的深度。深度卷積中每個卷積核的通道數(shù)為1,并且分別與輸入特征圖的單個相應(yīng)通道做卷積運算,即對每個輸入特征的通道應(yīng)用一個深度卷積核,如第一個深度卷積核和輸入特征的第一個通道做卷積;現(xiàn)假設(shè)有一個Dinput×Dinput×C的輸入特征圖(Dinput為輸入特征圖的尺寸),經(jīng)過stride為1,卷積核為Sk×Sk×C×N的卷積操作輸出Doutput×Doutput×N的特征圖(Doutput為輸出特征圖的尺寸),令Doutput=Dinput,則傳統(tǒng)卷積操作的計算量Amount(g)為:

Amount(g)=Sk×Sk×C×N×Dinput×Dinput

(1)

深度可分離卷積的計算量Amount(ds)為:

Amount(ds)=Sk×Sk×Dinput×Dinput+C×N×Dinput×Dinput

(2)

那么深度可分離卷積和傳統(tǒng)卷積的計算量之比為:

(3)

綜上,若輸入224×224×64的特征圖,經(jīng)過3×3的卷積核輸出224×224×128的特征圖,那么兩者的計算量之比約為0.118 9,也就是說使用深度可分離卷積操作,計算量可縮減為傳統(tǒng)卷積的1/9左右,運算速度大幅提升。

主干網(wǎng)絡(luò)中的一組深度可分離卷積的結(jié)構(gòu)如圖3所示。

圖3 一組深度可分離卷積

主干網(wǎng)絡(luò)輸入為224×224×3×1的圖像數(shù)據(jù),在網(wǎng)絡(luò)中的參數(shù)變化如表1所示:主干網(wǎng)絡(luò)總共26個卷積層,沒有池化層。網(wǎng)絡(luò)最終輸出特征圖的尺寸為7×7×512×1。

表1 主干網(wǎng)絡(luò)參數(shù)

2.3 檢測模塊設(shè)計

檢測模塊也是一個全卷積網(wǎng)絡(luò),分為三個檢測模型M1、M2和M3分別抽取主干網(wǎng)絡(luò)中Conv4_1、Conv5_5和Conv5_6層的3個不同尺度特征圖,對應(yīng)的stride為8、16和32,再分別對這三個尺度的特征圖進(jìn)行預(yù)測,包括人臉分類和人臉框體回歸。

2.3.1 多尺度特征圖

主干網(wǎng)絡(luò)中Conv4_1、Conv5_5和Conv5_6層生成的特征圖尺寸分別為28×28×256、14×14×512和7×7×512,其中低層的感受野較小用于檢測小目標(biāo),高層的感受野較大用于檢測大目標(biāo),不同尺寸的特征圖可以獲取多尺度的特征映射。

M2和M3檢測模塊都是直接從主干網(wǎng)絡(luò)中獲取特征圖,而M1檢測模塊融合了Conv4_1和Conv5_5層的特征圖,首先對Conv4_1和Conv5_5層的輸出采用1×1卷積核,降維得到28×28×128和14×14×128尺寸的特征圖,并對Conv5_5采取雙線性上采樣輸出尺寸為28×28×128的特征圖,再將兩個特征圖采用對應(yīng)元素相加的方式進(jìn)行特征融合,融合后得到28×28×128的特征圖,經(jīng)過一個3×3×128×128的卷積再送入M1檢測模塊。這樣做的主要目的是為了增加M1檢測模塊的語義信息。

綜上,通過檢測不同尺度的特征,可以檢測到不同大小的目標(biāo)。如圖4所示,淺層的M1檢測模塊可以更好地獲取到小目標(biāo)人臉特征,而更深層的M2檢測模塊則無法獲取到小目標(biāo)人臉特征。

圖4 多尺度特征檢測熱力圖

2.3.2 檢測模塊

M1、M2和M3檢測模塊的結(jié)構(gòu)相似,區(qū)別在于輸入的特征圖大小不同,對應(yīng)的stride分別為8、16和32,同時M1的輸入特征通道數(shù)為128,而M2和M3都是512。檢測模塊結(jié)構(gòu)如圖5所示,每個檢測模塊都包含人臉分類和框體回歸,進(jìn)行框體回歸的時候,定義一系列邊界框(anchor),通過回歸的方式逐漸使其靠近真實的人臉框。類似Faster-RCNN中的RPN思想使用密集的滑動窗去定義一系列的anchor,在每個檢測模塊特征圖的任一被滑動窗口覆蓋的區(qū)域,定義具有和當(dāng)前滑動窗口相同中心位置但尺度不同的K個anchor,每個anchor對應(yīng)一個尺度,原始的RPN中K個anchor具有不同的長寬比,文中所有的anchor長寬比都設(shè)為1,因為人臉的長和寬差距不大;假設(shè)一個特征圖的大小為W×H,那么最終就會得到W×H×K個長寬比為1,尺度不同的anchor。

如圖5所示,首先檢測模塊對輸入特征分別進(jìn)行兩種卷積,一種是普通的3×3卷積,另一種是Context Model;接著將普通的3×3卷積和Context Model進(jìn)行channel維度上的拼接,最后兩個1×1的卷積層用于框體回歸和人臉分類,分類器決定當(dāng)前卷積核覆蓋的中心位置的各個尺度的圖像是否為人臉。最終輸出W/S×H/S×2K個分類得分和W/S×H/S×4K個回歸坐標(biāo)。

圖5 檢測模塊結(jié)構(gòu)

圖5中Context Model的具體結(jié)構(gòu)如圖6所示。在two-stage檢測中,通常會通過擴大候選區(qū)域的窗口來合并上下文信息,文中的Context Model通過簡單的卷積層來模仿這種策略來合并上下文信息,由于anchor是以卷積方式進(jìn)行分類和回歸的,所以通過使用更大的卷積核就可以實現(xiàn)類似two-stage檢測中的擴大候選框的方式。Context Model采用5×5和7×7的卷積核,這樣可以增加對應(yīng)層的感受野,同時也增加了每個檢測模塊中的目標(biāo)尺度;為了減少模型的參數(shù)量,并提高網(wǎng)絡(luò)的非線性表達(dá)能力,采用兩個3×3的濾波器和三個3×3的濾波器替代5×5和7×7的濾波器,該方法和文獻(xiàn)[18]中提到的類似。Context Model輸出通道的個數(shù)為C1,M1、M2和M3的C1分別為128、256和256。

圖6 Context Model

3 訓(xùn) 練

使用動量梯度下降和權(quán)值衰減的方式訓(xùn)練網(wǎng)絡(luò)。因為該網(wǎng)絡(luò)通過3個檢測模塊來實現(xiàn)多尺度的人臉檢測,所以訓(xùn)練過程中需要使用3個相互獨立的loss。為了使得3個檢測模塊針對相應(yīng)的尺度進(jìn)行檢測,在訓(xùn)練的時候為每個模塊分配特定尺度范圍的anchor,將最小尺度的anchor分配給M1模塊,中等尺度的分配給M2模塊,最大尺度的分配給M3模塊,同時只將屬于該檢測模塊尺寸的人臉的分類和回歸損失值進(jìn)行反向傳播。另外當(dāng)且僅當(dāng)一個anchor與真實人臉之間的IOU(預(yù)測框和真實框的重疊指標(biāo))大于0.5時,才將該anchor與真實人臉區(qū)域進(jìn)行對比,所以反向傳播不會迭代與真實人臉區(qū)域不匹配的anchor。

3.1 損失函數(shù)

損失函數(shù)J如式(4)所示,其中l(wèi)c為人臉分類loss,使用標(biāo)準(zhǔn)的多項log的loss。k為檢測模塊的索引Mk,并且Ak表示定義在Mk中的anchor集合。在Mk中第i個anchor和對應(yīng)真實人臉區(qū)域的標(biāo)簽分別表示為pi和gi。anchor中的正樣本與真實人臉區(qū)域的IOU超過0.5,負(fù)樣本與真實人臉區(qū)域的IOU小于0.5。Nrk為模塊Mk中的anchor個數(shù),會參與到分類loss的計算。

(4)

3.2 困難樣例挖掘(OHEM)

由于實際情況中正負(fù)樣本不均衡,因此對每個檢測模塊進(jìn)行OHEM[19],即使用負(fù)樣本中與真實人臉區(qū)域的IOU最大的樣本與正樣本中與真實人臉區(qū)域的IOU最小(大于0.5)的樣本組成一個小批量進(jìn)行訓(xùn)練,不過由于負(fù)樣本通常會很多,所以這里選取25%的小批量作為正樣本。

4 結(jié)果分析

文中提出的算法在FDDB(face data set and benchmark)數(shù)據(jù)集上進(jìn)行評測,F(xiàn)DDB數(shù)據(jù)集是評估人臉檢測算法性能最常用的大型數(shù)據(jù)集之一,這個數(shù)據(jù)集擁有2 845張有人臉的互聯(lián)網(wǎng)新聞圖像,總共標(biāo)記了5 171張人臉。數(shù)據(jù)集在人臉姿態(tài)、表情、光照、清晰度、分辨率、遮擋程度等方面具有很大的多樣性,貼近真實應(yīng)用場景,因此成為最受歡迎、最權(quán)威的數(shù)據(jù)集之一。FDDB提出兩種類型的圖像檢測評分,分別是離散分?jǐn)?shù)和連續(xù)分?jǐn)?shù)。在第一種評分下,關(guān)注的是檢測框和標(biāo)注框之間的IOU是否超過0.5,而第二種評分下關(guān)注的則是檢測框和標(biāo)注框之間的IOU越大越好。文中提出的算法采用離散分?jǐn)?shù)的方法進(jìn)行評測。圖7為此算法與當(dāng)下表現(xiàn)較好的DP2MFD[20]、FaceNess[21]、CCF、CascadeCNN[9]、Acf[22]、VJ算法的對比結(jié)果,其中CCF為級聯(lián)分類器,使用的是Haar-like矩形特征。其中橫坐標(biāo)表示假正類的個數(shù),縱坐標(biāo)表示真正類率??梢钥闯?,文中提出的算法優(yōu)于其他算法,最終的真正類率可達(dá)到93.52%。

圖7 FDDB數(shù)據(jù)集ROC曲線

另外運用該算法分別對AFW(annotated faces in the wile)、FDDB和WiderFace數(shù)據(jù)集的部分?jǐn)?shù)據(jù)做檢測,檢測效果如圖8所示??梢钥吹?,測試數(shù)據(jù)中的人臉包括不同尺度,不同姿態(tài),不同裝扮和不同光照的情況,但是算法魯棒性強,檢測的準(zhǔn)確度很高。

圖8 算法檢測效果

最后,對算法的運算速度進(jìn)行實驗,選用包含8張不同尺度人臉的640×480的圖像,在Intel(R) Core(TM) i5-7500 CPU @3.40 GHz×2的CPU處理上的檢測速度達(dá)到2 FPS,雖然在CPU上的表現(xiàn)較為平庸,但是在普通的NVIDA GeForce GTX 1050Ti 4g顯卡上面的檢測速度達(dá)到40 FPS。這得益于深度可分離卷積的思想,通過將普通卷積分解為一個深度卷積和1×1卷積,減少運算量,并且使用不同尺度的特征圖,沒有使用圖像金字塔。實驗表明該算法在普通GPU可以達(dá)到實時的人臉檢測,可應(yīng)用于實際場景。

5 結(jié)束語

為了提高檢測速度,采用深度可分離卷積代替普通卷積,減少計算量,同時減少模型參數(shù)和內(nèi)存,最終模型參數(shù)內(nèi)存為25.4 M;同時將主干網(wǎng)絡(luò)中的不同尺度特征圖輸出到不同的檢測模塊,實現(xiàn)不同尺度人臉的檢測;此外,網(wǎng)絡(luò)去除全連接層,使用1×1卷積代替,從而進(jìn)一步減少模型參數(shù),并且網(wǎng)絡(luò)可以輸入不同大小的圖像。另外該人臉檢測算法實現(xiàn)Single-Stage檢測,便于訓(xùn)練和測試的部署;模型基于caffe深度學(xué)習(xí)框架,具體良好的可移植性。最后,該算法在公開人臉數(shù)據(jù)庫上的檢測表現(xiàn)優(yōu)異,且在GPU上的檢測速度滿足實時性要求。不足之處在于該算法在CPU上的運算速度并不理想,后續(xù)會考慮融入更加輕量型算法的思想,提升CPU檢測速度,從而運用到配置更低的設(shè)備中。

猜你喜歡
主干人臉尺度
環(huán)境史衰敗論敘事的正誤及其評判尺度
抓主干,簡化簡單句
矮砧密植蘋果園動態(tài)修剪效果好
有特點的人臉
玻璃窗上的人臉
“領(lǐng)家系”可愛臉VS“高冷系”美人臉
以長時間尺度看世界
9
長得象人臉的十種動物
寓美于物理力學(xué)主干知識的復(fù)習(xí)