任海培,李 騰
(安徽大學(xué)電氣工程與自動(dòng)化學(xué)院,合肥230601)
(?通信作者電子郵箱liteng@ahu.edu.cn)
面向移動(dòng)平臺(tái)的人臉檢測任務(wù)是人臉技術(shù)應(yīng)用過程中的重要環(huán)節(jié)。移動(dòng)平臺(tái)檢測任務(wù)的質(zhì)量不僅和檢測算法的性能有關(guān),還受到移動(dòng)嵌入式設(shè)備硬件性能的限制。然而目前影響深度學(xué)習(xí)算法在嵌入式平臺(tái)中應(yīng)用的主要原因還是實(shí)時(shí)性達(dá)不到要求。影響因素主要和輸入圖片大小、選用的網(wǎng)絡(luò)模型以及訓(xùn)練模型的數(shù)據(jù)量等有關(guān)。較大的搜索空間和大小不一的對(duì)象尺度進(jìn)一步增加了模型的搜索時(shí)間,圖1 是一個(gè)典型的搜索空間比較大、人臉數(shù)量較多的對(duì)象場景。為了提高人臉檢測在嵌入式移動(dòng)設(shè)備端的檢測速度,保證應(yīng)用軟件(APPlication,APP)運(yùn)行流暢,本文主要從算法的模型優(yōu)化入手。
人臉檢測是一種特殊的目標(biāo)檢測案例。現(xiàn)代人臉檢測方法大致可分為兩類:一類是傳統(tǒng)的檢測算法,另一類是基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的算法。
最早的目標(biāo)檢測用的是級(jí)聯(lián)分類器框架,由Viola 等[1]在2001 年電氣電子工程師學(xué)會(huì)舉辦的計(jì)算機(jī)視覺和模式識(shí)別領(lǐng)域的頂級(jí)會(huì)議(IEEE conference on Computer Vision and Pattern Recognition,CVPR)中提出來,該算法第一次使目標(biāo)檢測成為現(xiàn)實(shí)。接著就是Haar 檢測,但是這種檢測算法只適合剛性物體檢測,無法檢測行人等非剛性目標(biāo),所以又提出了方向梯度直方圖(Histogram of Oriented Gradients,HOG)組合支持向量機(jī)(Support Vector Machine,SVM)結(jié)構(gòu)。接著傳統(tǒng)算法就一直圍繞著特征器作改進(jìn)。而針對(duì)人臉方面的檢測則由開 創(chuàng) 性 的Viola-Jones 人 臉 檢 測 器 提 出 將Haar 特 征[2]、AdaBoost 學(xué)習(xí)[3]和級(jí)聯(lián)推理相結(jié)合用于人臉檢測,因此后續(xù)的許多工作都被提出用于實(shí)時(shí)人臉檢測,如新的局部特征、新的增強(qiáng)算法和新的級(jí)聯(lián)結(jié)構(gòu)。
CNN 檢測算法主要包含兩大家族,分別是區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Regions with CNN features,RCNN)[4]家族和YoLo 家族。RCNN 家族的核心貢獻(xiàn)就是構(gòu)造了區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)結(jié)構(gòu),瞬間提高了檢測精度和特征提取效率。尤其是Faster RCNN 的出現(xiàn)無疑是檢測發(fā)展史上的第一次高潮,該算法在各大數(shù)據(jù)集上測試都展現(xiàn)了極其優(yōu)越的性能;但是Faster RCNN 算法缺點(diǎn)也很明顯,即檢測速度不夠快。YoLo 家族包括YoLov1、YoLov2、YoLov3,以及單發(fā)多盒探測器(Single Shot multibox Detector,SSD)。該家族共性都是產(chǎn)生Proposal[5-6]的同時(shí)進(jìn)行Classification 加Regression[7],一次性完成,即所謂的One-shot[8]。
YoLov1 使 用了1×1 卷積層[9]和3× 3 的卷積層替代了Inception 結(jié)構(gòu),且在最后使用了全連接層進(jìn)行類別輸出。這樣做缺點(diǎn)也很明顯:1)輸入尺寸固定。由于輸出層為全連接層,因此訓(xùn)練模型只支持與訓(xùn)練圖像相同的輸入分辨率。2)小目標(biāo)檢測效果不好。雖然每個(gè)格子可以預(yù)測B 個(gè)Bounding box,但是最終只選擇重疊度(Intersection Over Union,IOU)得分最高的Bounding box 作為物體檢測輸出[10]。YoLov2則引入了Faster RCNN 中Anchor box的思想[11],對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)進(jìn)行了改進(jìn),輸出層使用卷積層替代YoLov1的全連接層。YoLov2 中借鑒了殘差網(wǎng)絡(luò)(Residual Network,ResNet)思想[12-13],在網(wǎng)絡(luò)中設(shè)計(jì)了跨層跳躍連接[14],解決了輸入圖像分辨率不統(tǒng)一的問題,加深了對(duì)淺層特征的學(xué)習(xí);但是缺點(diǎn)也依舊存在,某些小尺度對(duì)象的特征學(xué)習(xí)問題還是得不到很好的解決。而YoLov3 算法則注重解決多尺度檢測問題,設(shè)計(jì)了Darknet 并向里面加入了多尺度預(yù)測結(jié)構(gòu)[15];同時(shí)YoLov3沒有使用Softmax對(duì)每個(gè)框進(jìn)行分類,而是采用了獨(dú)立的多個(gè)Logistic 分類器替代[16];但是該算法在模型參數(shù)大小以及速度上還是存在一定的適用局限性,模型參數(shù)較大、速度不夠快仍是它的問題。
相對(duì)于RCNN 家族的兩個(gè)階段,YoLo 家族速度占優(yōu),準(zhǔn)確率和召回率較低。而深度學(xué)習(xí)人臉檢測追溯可從中國計(jì)算機(jī)學(xué)會(huì)(China Computer Federation,CCF)在CNN 特征的基礎(chǔ)上使用增強(qiáng)來進(jìn)行人臉檢測,至Farfade等[17]將微調(diào)CNN模型訓(xùn)練在1k ImageNet 分類任務(wù)上進(jìn)行人臉和非人臉分類任務(wù)和Qin 等提出聯(lián)合訓(xùn)練級(jí)聯(lián)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)端到端優(yōu)化[18],最終形成成熟的檢測體系。
而移動(dòng)端的人臉檢測技術(shù)發(fā)展相對(duì)較晚,主要原因與移動(dòng)平臺(tái)的開發(fā)和集成技術(shù)有關(guān)。伴隨著近幾年來集成技術(shù)以及人工智能領(lǐng)域的發(fā)展,移動(dòng)端的人臉檢測技術(shù)逐漸成為了未來人工智能技術(shù)落地的應(yīng)用趨勢。人臉檢測技術(shù)主要結(jié)合人臉識(shí)別技術(shù)應(yīng)用在金融、安防等各個(gè)領(lǐng)域,其中應(yīng)用最廣泛的是利用深度學(xué)習(xí)方法中的卷積神經(jīng)網(wǎng)絡(luò)來訓(xùn)練優(yōu)異的檢測模型。如目前較好的由中國科學(xué)院深圳先進(jìn)技術(shù)研究院在2016 年提出來的多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)(Multi- Task Convolutional Neural Network,MTCNN)人臉檢測任務(wù)的多任務(wù)神經(jīng)網(wǎng)絡(luò)模型,該模型采用三個(gè)級(jí)聯(lián)的網(wǎng)絡(luò)以及候選框加分類器的思想,進(jìn)行快速高效的人臉檢測,將訓(xùn)練好的模型移植到Android 平臺(tái),但是這種方法對(duì)硬件性能的要求比較高;接著就是2017 年谷歌提出的MobileNet 以及2018 年提出的MobileNet V2 更是移動(dòng)端人臉檢測技術(shù)發(fā)展的高潮,它是一種專門針對(duì)硬件性能要求不高的僅支持CPU 平臺(tái)的人臉檢測技術(shù)。該技術(shù)特點(diǎn)就是利用拆分卷積的思想使得訓(xùn)練參量極大地降低,使得算法模型在性能較差的CPU 上也能有較高的檢測速率。
但這些檢測算法仍然在速度上存在局限性,而本文研究的目的就是要保證檢測效果足夠好的前提下繼續(xù)優(yōu)化檢測算法,提高復(fù)雜場景下人臉檢測的實(shí)時(shí)性能。本文在YoLov3的框架基礎(chǔ)上進(jìn)行了結(jié)構(gòu)創(chuàng)新與拓展,主要包括網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化與人臉聚類方法的改進(jìn)。
圖1 人臉檢測示意圖Fig. 1 Schematic diagram for face detection
傳統(tǒng)的人臉檢測算法中特征提取使用Haar-like特征進(jìn)行檢測,然后利用積分圖對(duì)Haar-like 特征求值進(jìn)行加速,通過AdaBoost 算法訓(xùn)練區(qū)分人臉和非人臉的強(qiáng)分類器,使用篩選式級(jí)聯(lián)把強(qiáng)分類器級(jí)聯(lián)到一起,以提高準(zhǔn)確率。Haar 分類器最早來源于Viola 和Jones 發(fā)表的經(jīng)典論文,在AdaBoost 算法的基礎(chǔ)上,使用Haar-like 小波特征和積分圖方法進(jìn)行人臉檢測,他們不是最早提出使用小波特征的,但是他們設(shè)計(jì)了針對(duì)人臉檢測更有效的特征,并對(duì)AdaBoost 訓(xùn)練出的強(qiáng)分類器進(jìn)行級(jí)聯(lián),形成了Viola-Jones 檢測器。同一時(shí)期,Lienhart 等[19]對(duì)這個(gè)檢測器進(jìn)行了擴(kuò)展,最終形成了開源計(jì)算機(jī)視覺庫(Open Source Computer Vision Library,OpenCV)和現(xiàn)在的Haar分類器。
現(xiàn)代的CNN 檢測算法中,YoLov3算法是最受歡迎的方法之一。YoLov3 設(shè)計(jì)了特定的53 層暗網(wǎng)絡(luò)(Darknet with 53 convolutional neural network,Darknet53),通過設(shè)計(jì)多尺度網(wǎng)絡(luò)和分類損失提高了檢測性能。然而YoLov3 算法在大量人臉數(shù)據(jù)集的工程應(yīng)用下,檢測速度還是達(dá)不到要求。Darknet53 網(wǎng)絡(luò)自帶的多尺度策略是根據(jù)三個(gè)不同輸出特征層上的輸出特征再融合來加深對(duì)小目標(biāo)的特征學(xué)習(xí),通過研究表明這樣做忽視了不同特征層輸出Anchor 密度不均勻帶來的人臉召回率低下等原因,導(dǎo)致YoLov3算法對(duì)小目標(biāo)檢測的魯棒性還不夠高。為了進(jìn)一步提高算法的工程應(yīng)用水平,本文設(shè)計(jì)了特定的基于快速消化卷積和多尺度卷積的暗網(wǎng)絡(luò)結(jié) 構(gòu)(darknet network structure based on Rapidly digested convolutional layers and Multiple scale convolutional layers,RMdarknet),增加了快速消化卷積層(Rapidly Digested Convolutional Layers,RDCL)和多尺度卷積層(Multiple Scale Convolutional Layers,MSCL)兩個(gè)卷積結(jié)構(gòu)以及Anchor 致密化和中心損失(Center Loss)兩個(gè)策略以提高YoLov3算法的檢測速度。其中RDCL 結(jié)構(gòu)通過設(shè)計(jì)合適的內(nèi)核大小,快速縮小了輸入空間。RDCL 結(jié)構(gòu)中新設(shè)計(jì)的串聯(lián)整流線性單元(Concatenated Rectified Linear Unit,CReLU)激活函數(shù)減少了輸出通道數(shù),提高了算法的檢測速度,同時(shí)也簡化了本研究的算法模型。MSCL 結(jié)構(gòu)通過離散Anchor 到多個(gè)不同分辨率的層上處理不同尺寸的人臉,再結(jié)合致密化策略的協(xié)調(diào)配合,巧妙地增加了算法對(duì)小目標(biāo)檢測的魯棒性。
同時(shí)此次研究還考慮到特征學(xué)習(xí)中的類內(nèi)緊性對(duì)特征學(xué)習(xí)的作用。有關(guān)研究結(jié)果表明,算法中加入新的中心損失函數(shù)不僅能提高類內(nèi)距離,而且還有助于提高類間距離,達(dá)到類似Softmax 函數(shù)一樣的作用。因此研究的算法在原始的Softmax 損失后又加了中心損失函數(shù),通過本項(xiàng)目的實(shí)驗(yàn)結(jié)果也表明確實(shí)提高了人臉特征的識(shí)別能力。為了進(jìn)一步加快梯度收斂、防止過擬合問題,本次項(xiàng)目中巧妙地結(jié)合批量正則化(Batch Normalization,BN)結(jié)構(gòu)解決了上述問題;并且為了進(jìn)一步增強(qiáng)本次研究工作的說服力,與比較流行的移動(dòng)端網(wǎng)絡(luò)(Mobile neural Network,MobileNet)算法進(jìn)行了比較,分別對(duì)兩者訓(xùn)練的模型進(jìn)行了移動(dòng)端的測試,結(jié)果也很好地驗(yàn)證了本文算法的有效性。整個(gè)實(shí)驗(yàn)結(jié)果測試采用的是常用的人臉檢測評(píng)價(jià)標(biāo)準(zhǔn),對(duì)人臉檢測算法來說,評(píng)價(jià)的一個(gè)重要標(biāo)準(zhǔn)是模型是否具有較高的正確檢測率和較小的漏檢率。
正確檢測率(Correct Detection Rate,CDR)的計(jì)算公式如下:
其中:nc和nf分別為正確檢測到的人臉數(shù)量和漏檢人臉數(shù)量;N為待檢測人臉數(shù)量。
本文工作主要分為以下幾個(gè)方面:
1)在設(shè)計(jì)的網(wǎng)絡(luò)中加入了快速消化卷積層,使人臉檢測在速度上實(shí)現(xiàn)了飛躍以及模型參數(shù)的減少。
2)傳統(tǒng)的Yolov3在小目標(biāo)的識(shí)別性能上差強(qiáng)人意。為了應(yīng)對(duì)復(fù)雜條件下的人臉識(shí)別挑戰(zhàn),本文方案在檢測結(jié)構(gòu)中引入多尺度卷積操作(MSCL)和Anchor 致密化操作。為保證小尺度的人臉檢測精度,通過豐富接收域和分層離散錨點(diǎn)來處理不同尺度的檢測對(duì)象。
3)與傳統(tǒng)的以Softmax 損失為主的YoLov3 檢測訓(xùn)練優(yōu)化方案不同,對(duì)于人臉檢測任務(wù),本文同樣引入度量學(xué)習(xí)的策略,即中心損失,鼓勵(lì)網(wǎng)絡(luò)學(xué)習(xí)過程在擴(kuò)大類間變化的同時(shí)最小化類內(nèi)變化的判別特征,進(jìn)一步提高模型對(duì)更具區(qū)分性特征的理解,提高檢測性能。
4)在Wider Face 人臉數(shù)據(jù)集[20]上進(jìn)行訓(xùn)練,在FDDB 人臉基準(zhǔn)數(shù)據(jù)集上進(jìn)行了測試,驗(yàn)證算法的效果。
5)利用新算法訓(xùn)練的模型在移動(dòng)端進(jìn)行應(yīng)用測試。
本文在YoLov3 算法的基礎(chǔ)上加以改進(jìn),設(shè)計(jì)了RMdarknet 網(wǎng)絡(luò)用來提高人臉檢測的實(shí)時(shí)性能,如圖2 所示。YoLov3 中的Darknet53 網(wǎng)絡(luò)由一系列1× 1 和3× 3 卷積層組成,每個(gè)卷積層后都有一個(gè)BN層和一個(gè)帶泄露修正線性單元(Leaky Rectified Linear Unit,Leaky ReLU)層[21]。Darknet53網(wǎng)絡(luò)一共有53 層,包括52 個(gè)卷積層和1 個(gè)全連接層(除Residual 層外),將最后的Softmax 層更換成Logistic 分類器,其中回歸損失用的是平滑損失(Smooth L1 Loss Layer,SmoothL1)函數(shù)。為了進(jìn)一步提高人臉檢測算法的實(shí)時(shí)性,加快檢測速度,本文在網(wǎng)絡(luò)結(jié)構(gòu)中加入RDCL 結(jié)構(gòu),實(shí)現(xiàn)快速縮小輸入空間尺寸、減少輸出通道數(shù)目的功能。然后在RDCL層后添加MSCL 結(jié)構(gòu)以豐富不同檢測尺度的感受野,同時(shí)提高網(wǎng)絡(luò)對(duì)小目標(biāo)多個(gè)尺度上的檢測靈敏性。通過在MSCL 層引入致密化策略用來保證不同離散尺度Anchor 密度的一致性。最后為了加強(qiáng)特征的類內(nèi)緊密性,提高人臉的檢測精度,本項(xiàng)目在網(wǎng)絡(luò)最后的Softmax 后加入了中心損失,對(duì)于加入的結(jié)構(gòu)在后文中做了灼燒實(shí)驗(yàn)以論證理論的可實(shí)施性。
圖2 RM-darknet網(wǎng)絡(luò)結(jié)構(gòu)Fig. 2 RM-darknet network structure
下面依次介紹設(shè)計(jì)算法的幾個(gè)主要模塊:快速消化卷積層、多尺度卷積層、Anchor致密化和Center Loss策略。
在復(fù)雜網(wǎng)絡(luò)的實(shí)際應(yīng)用中,很少會(huì)使用具有較大卷積核尺寸的濾波器,例如5× 5、7× 7,研究[22]認(rèn)為用多層3× 3 就能達(dá)到較大內(nèi)核尺寸濾波器同等大小的感受野,例如兩層3×3可以達(dá)到一層5× 5的感受野,3層3× 3可以達(dá)到一層7× 7的感受野。用多個(gè)小卷積核尺寸的濾波器對(duì)數(shù)據(jù)進(jìn)行處理,不僅可以有效減少計(jì)算量,而且可以加深網(wǎng)絡(luò)深度和層次,優(yōu)化網(wǎng)絡(luò)整體的非線性性能。但是在高效網(wǎng)絡(luò)里,較小的卷積核尺寸在有些情況下并不一定具有更好的性能。如在圖像分辨率足夠的情況,較大的卷積核對(duì)數(shù)據(jù)的表征能力更強(qiáng),壓縮空間的速度更快。大多數(shù)人臉檢測需要考慮時(shí)間成本,尤其偏向于大場景下的人臉檢測應(yīng)用對(duì)速度的要求更為苛刻,檢測器的速度直接影響產(chǎn)品能否成功落地。
如圖3 所示,RDCL 結(jié)構(gòu)的核心是通過快速縮小空間尺寸,減小特征圖(Feature Map)的大小,達(dá)到快速提高檢測速度的目的。為此對(duì)兩個(gè)卷積層和兩個(gè)池化層的步長分別設(shè)置為4、2、2和2,這樣一個(gè)總步長為32的輸入尺度成功將輸入空間大小壓縮至原輸入的1/32。
圖3 RDCL結(jié)構(gòu)Fig. 3 RDCL structure
另外為了保持網(wǎng)絡(luò)的高效和有效性,選取7× 7、5× 5 作為Conv1 和Conv2 的卷積核大小,3× 3 作為所有池化層的卷積核大小。通過RDCL 第一個(gè)卷積層,核為7× 7,步長為4,默認(rèn)padding 為3,輸出特征大小計(jì)算為256 × 256;通過第一個(gè)池化層,核為3× 3,步長為2,默認(rèn)padding為1,輸出特征計(jì)算大小為128× 128;通過RDCL 第二個(gè)卷積層,核為5× 5,步長為2,默認(rèn)padding 為2,輸出特征大小計(jì)算為64 × 64;通過第二個(gè)池化層,核為3× 3,步長為2,默認(rèn)padding為1,輸出特征計(jì)算大小為32 × 32。這個(gè)設(shè)計(jì)借鑒了MobileNet 網(wǎng)絡(luò)設(shè)計(jì)中輕量化的思想[23],在網(wǎng)絡(luò)結(jié)構(gòu)中摒棄了Pooling Layer 而直接采用Stride 為2進(jìn)行卷積運(yùn)算。
另外,此次研究選擇CReLU 激活函數(shù)[24]來減少輸出通道的數(shù)量。研究表明CNN 較低層中的濾波器會(huì)形成匹配對(duì)(濾波器具有相反的效應(yīng)),網(wǎng)絡(luò)的底層接收冗余濾波器來提取輸入的正負(fù)相位信息的可能性,因此可以考慮采用適當(dāng)?shù)牟僮饕瞥@些冗余濾波器。文獻(xiàn)[25]中提出了CReLU 結(jié)構(gòu),如圖4 所示,將激活函數(shù)的輸入額外做一次取反,等價(jià)于將輸入相位旋轉(zhuǎn)180°。這種策略可以看作在網(wǎng)絡(luò)中加入相位的先驗(yàn)知識(shí)。這樣CReLU 可以通過在ReLU 之前簡單地Concat 否定的輸出來使輸出通道的數(shù)量加倍,再經(jīng)過后面的池化層達(dá)到快速縮小輸入空間的目的。CReLU 的使用顯著提高了速度,而且精度基本不會(huì)下降,在本文的實(shí)驗(yàn)部分進(jìn)行了驗(yàn)證。
圖4 CReLU內(nèi)部結(jié)構(gòu)Fig. 4 Internal structure of CReLU
MSCL 的設(shè)計(jì)源自對(duì)RPN[24]的理解,RPN 是一種多類別目標(biāo)檢測場景中不依賴于類的卷積運(yùn)算,如圖5 所示,RDCL結(jié)構(gòu)通過BN 層以及不同卷積核的卷積分支組成,并通過ReLU 線性激活單元避免不同輸入尺寸人臉特征的梯度消失問題。
其次,Anchor相關(guān)層負(fù)責(zé)檢測一定尺度范圍內(nèi)的人臉,但它只有一個(gè)單一的接受域,無法匹配不同尺度的人臉。針對(duì)以上問題,本文設(shè)計(jì)的MSCL 結(jié)構(gòu)中將Anchor 離散到多個(gè)不同分辨率的層上,自然處理不同尺寸的人臉。并且通過Inception Modules 增加網(wǎng)絡(luò)寬度[26],實(shí)現(xiàn)不同Anchor 層的輸出特征對(duì)應(yīng)于不同大小的接受域,獲取不同尺度的人臉。表1是MSCL結(jié)構(gòu)中部分網(wǎng)絡(luò)層的數(shù)值。
圖5 MSCL中的Inception結(jié)構(gòu)Fig. 5 Inception structure in MSCL
表1 MSCL結(jié)構(gòu)相關(guān)層參數(shù)Tab. 1 Parameters of the relevant layers in MSCL structure
2.3.1 Anchor 致密化策略
Anchor 致密化策略是為了解決不同尺度Anchor 之間存在密度不均勻?qū)е碌男∶婵渍倩芈剩?6]太低的問題。通過提出Anchor 致密化策略,在接受域中心均勻地平鋪一個(gè)數(shù)值為n2的Anchor,然后對(duì)不同尺度的Anchor 進(jìn)行致密化,保證不同尺度的Anchor 在圖像上具有相同的密度[27]。本文定義錨的平鋪密度:
其中:Adensity是不同尺度Anchor對(duì)應(yīng)的密度;Ascale是Anchor的尺寸;Ainterval是Anchor 的平鋪區(qū)間。默認(rèn)錨的平鋪間隔分別為32、32、32、64 和128。例:如果Ainterval值取32,對(duì)應(yīng)的密度分別為1、2、4、4 和4,對(duì)應(yīng)密度的模擬圖致密化過程如圖6 所示(Anumber為致密后的量化單位)。顯然在不同尺度上Anchor 的密度不均衡。
2.3.2 中心損失策略
文獻(xiàn)[28]提出的中心損失函數(shù)在人臉識(shí)別任務(wù)中取得了非常好的效果。中心損失策略的基本思想是鼓勵(lì)網(wǎng)絡(luò)學(xué)習(xí)在擴(kuò)大類間變化的同時(shí)最小化類內(nèi)變化的判別特征。中心損失的公式為:其中:xi為輸入特征向量;cyi為第i 類中心,是一個(gè)特征矢量。在每次迭代中,中心都基于小批量更新,因此可以很容易地使用標(biāo)準(zhǔn)隨機(jī)梯度下降(Stochastic Gradient Descent,SGD)進(jìn)行培訓(xùn)。在人臉檢測任務(wù)中,只有兩個(gè)中心分別代表人臉和非人臉。本文研究的目的是最小化類內(nèi)部的變化,需要注意的是中心損失應(yīng)該與Softmax損失[29]一起優(yōu)化。研究表明,中心損失在最大限度地減少類內(nèi)變化方面是非常有效的,而Softmax 損失在最大限度地提高學(xué)習(xí)特征的類間變化方面具有一定的優(yōu)勢。因此,采用中心損失和Softmax 損失相結(jié)合的方法來追求判別特征是非常合理的。
圖6 致密化過程模擬圖Fig. 6 Simulation of densification process
實(shí)驗(yàn)采用Wider Face 數(shù)據(jù)集作為訓(xùn)練集,該數(shù)據(jù)集包含32 203 張圖片,共包含393 703 張人臉,分別在圖像尺度和人臉姿勢以及曝光度等方面表現(xiàn)出了大的變化。這對(duì)本文算法學(xué)習(xí)不同情境中的人臉特征來說十分有利。整個(gè)項(xiàng)目中測試集采用了FDDB 數(shù)據(jù)集,該數(shù)據(jù)集中包含2 845張圖片,共有5 171 張人臉,對(duì)于本文算法測試十分有說服力。同時(shí),測試過程中本文從網(wǎng)上找來了包含200 張人臉的自組織數(shù)據(jù)集進(jìn)行進(jìn)一步驗(yàn)證,該數(shù)據(jù)集內(nèi)容主要涉及證件照、畢業(yè)照、行人照、生活照以及朋友圈里的人臉圖片,整個(gè)數(shù)據(jù)集相對(duì)復(fù)雜且更能體驗(yàn)?zāi)P偷姆夯芰Α?/p>
實(shí)驗(yàn)的軟硬件環(huán)境為:人臉檢測模型的訓(xùn)練采用五舟高性能計(jì)算集群(High Performance Computing,HPC),顯卡采用的是NVIDIA Tesla V100,算法的設(shè)計(jì)通過Darknet 框架實(shí)現(xiàn);移動(dòng)端測試使用的是芯片型號(hào)為rk3326 的嵌入式開發(fā)板,并使用墨子(深圳)人工智能技術(shù)有限公司提供小墨機(jī)器人(基于本文算法的產(chǎn)品)進(jìn)行調(diào)試。
使用YoLov3算法和本文算法FaceYoLo進(jìn)行了對(duì)比實(shí)驗(yàn),過程中參考相關(guān)算法的實(shí)驗(yàn)設(shè)計(jì)方案[12,16],并選用YoLov3 不同的網(wǎng)絡(luò)結(jié)構(gòu)分別做了實(shí)驗(yàn)。實(shí)驗(yàn)過程中也比較了移動(dòng)端比較流行的MobileNet 算法,通過訓(xùn)練兩者的算法模型并移植到準(zhǔn)備好的開發(fā)板中測試。在模型的訓(xùn)練過程中,每次實(shí)驗(yàn)迭代次數(shù)設(shè)置為500 000,并且每5萬次保存一個(gè)模型。
表2 為不同算法在FDDB 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果。對(duì)比YoLov3 算法使用darknet19、darknet152 和darknet53 等網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行的模型測試結(jié)果可看出,darkent53 的模型質(zhì)量更優(yōu)。與MTCNN 和FaceBoxes 算法等其他對(duì)比算法的結(jié)果可看出,本文FaceYoLo 算法不僅保證了平均檢測精度為92.6%,而且檢測速度有了大幅度提高;比原始算法YoLov3使用darknet53網(wǎng)絡(luò)的組合,本文算法在精度上提高了2.1 個(gè)百分點(diǎn),速度上提升至原來的8倍。
表2 不同算法在FDDB數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Tab. 2 Experimental results of different algorithms on FDDB dataset
表3 為驗(yàn)證FaceYoLo 算法各個(gè)模塊進(jìn)行的單一對(duì)照實(shí)驗(yàn),實(shí)驗(yàn)為該算法依次去除RDCL、MSCL、Center Loss 以及Anchor 致密化模塊與原算法進(jìn)行的對(duì)比結(jié)果。結(jié)果顯示,RDCL 結(jié)構(gòu)對(duì)速度的提升影響顯著,MSCL 結(jié)構(gòu)對(duì)平均檢測精度的影響較為顯著。
表4 是人臉評(píng)價(jià)指標(biāo)實(shí)驗(yàn),通過驗(yàn)證不同數(shù)據(jù)集一定數(shù)量人臉的正檢率和漏檢率測試模型的魯棒性。其中FDDB 測試集中共5 171 張人臉,正確檢測率達(dá)到92.6%,漏檢查率為4.8%,誤檢率為0.4%;另外隨機(jī)抽取的200 張自組織人臉數(shù)據(jù)集測試中,正確檢測率達(dá)到了96%,漏檢率為4%,誤檢率為0.99%。數(shù)據(jù)結(jié)果表明,F(xiàn)aceYoLo 模型不僅在標(biāo)準(zhǔn)數(shù)據(jù)集上可以達(dá)到良好的檢測質(zhì)量,而且面對(duì)不確定的檢測對(duì)象依舊能夠保證良好的檢測性能,進(jìn)一步驗(yàn)證了模型的泛化能力和魯棒性。圖7是部分測試結(jié)果展示,前兩行是FDDB數(shù)據(jù)集的測試結(jié)果,最后一行是在網(wǎng)上挑選的三張比較經(jīng)典的圖片對(duì)應(yīng)的測試結(jié)果,從結(jié)果來看,模型的效果是不錯(cuò)的。
表3 不同模塊的灼燒實(shí)驗(yàn)結(jié)果對(duì)比Tab. 3 Comparison of experimental results of different burning modules
圖7 測試結(jié)果展示Fig. 7 Demonstration of test results
為驗(yàn)證模型部署在移動(dòng)端上的可行性,在人臉檢測APP中,用FaceYoLo 模型替換原始的MobileNet 模型,并完成了兩項(xiàng)實(shí)驗(yàn)。移動(dòng)端測試過程如下:首先隨機(jī)選定一張圖片放在本地,測試Android 應(yīng)用在不同模型下返回人臉框的速度;其次,將實(shí)際攝像頭傳回來的幀送入模型,查看處理速度。圖8比較的是MobileNet 與FaceYoLo 算法分別在本地端和APP 端上的測試結(jié)果圖,對(duì)比結(jié)果顯示最終FaceYoLo 模型速度大約提升了1 倍左右。另外實(shí)驗(yàn)中也比較了MobileNet 與其他算法的模型,其他模型在移動(dòng)端的效果都次于它,所以之后只與MobileNet進(jìn)行了比較。
實(shí)驗(yàn)結(jié)果表明,F(xiàn)aceYoLo 算法檢測速度對(duì)于原始的YoLov3 算法從43 frame/s 提高到334 frame/s,同時(shí)訓(xùn)練權(quán)重參數(shù)相對(duì)于YoLov3 算法減少至原來的1%,模型大小也從228 MB 減少至2.28 MB,平均檢測精度達(dá)到92.6%。在移動(dòng)端測試中,將MobileNet 訓(xùn)練出的模型和本設(shè)計(jì)算法的模型放到同一臺(tái)嵌入式設(shè)備中進(jìn)行測試,從測試結(jié)果顯示,F(xiàn)aceYoLo算法的檢測速度接近MobileNet 速度的2 倍;與此同時(shí),在安卓平臺(tái)下也進(jìn)行了二次模型測試,安卓平臺(tái)下攝像頭端實(shí)時(shí)檢測人臉的速度也從5 frame/s 提升至10 frame/s,這對(duì)于移動(dòng)端的開發(fā)來說是很大的進(jìn)步。從整個(gè)實(shí)驗(yàn)結(jié)果來看,新算法在保證高精度的情況下具備更快的檢測速度,可以很好地適用于移動(dòng)平臺(tái)的人臉檢測任務(wù)。
圖8 移動(dòng)平臺(tái)的測試結(jié)果Fig. 8 Test results on mobile platform
表4 人臉檢測評(píng)價(jià)指標(biāo)實(shí)驗(yàn)結(jié)果Tab. 4 Experimental results of face detection evaluation indexes
本文通過對(duì)YoLov3 算法的研究,深入學(xué)習(xí)了YoLo 系列網(wǎng)絡(luò)的全連接層結(jié)構(gòu)特點(diǎn)和Darknet 網(wǎng)絡(luò)技術(shù)。同時(shí)也深入分析了算法的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)模型產(chǎn)生的影響,例如采用不同尺寸的小卷積核可以實(shí)現(xiàn)類似Inception 結(jié)構(gòu)的功能效果;比較BN 結(jié)構(gòu)與Dropout[30]結(jié)構(gòu)在卷積運(yùn)算過程中提取特征信息的丟失情況;ResNet 跨層跳躍連接后輸出和輸入的特征可視化特點(diǎn)以及RDCL結(jié)構(gòu)的步長選擇問題[31]。
但此次研究工作中也有一定的局限性,比如實(shí)驗(yàn)中測試的硬件開發(fā)設(shè)備來自客戶公司提供的移動(dòng)平臺(tái),模型移植到其他不同硬件的Android設(shè)備上是否也滿足實(shí)時(shí)性要求,還缺乏更多的對(duì)比實(shí)驗(yàn)。但是此次工作在Android 手機(jī)上測試了打包的APK 文件,檢測人臉的速度可以達(dá)到40 frame/s,基本可以滿足實(shí)時(shí)性要求。另外相對(duì)于一些專門的人臉檢測算法,如FaceBoxes[32]和MTCNN[33]來說,本文算法雖然在一定的內(nèi)存、耗時(shí)等條件下展現(xiàn)了極強(qiáng)的速度優(yōu)越性,但是在單純?nèi)四樀臋z測精度上來看仍然需要提高,這也是后面工作中針對(duì)算法精度需要考慮解決的問題。