葉遠(yuǎn)征,李小霞,2,李旻擇
(1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010; 2.特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室(西南科技大學(xué)),四川 綿陽 621010)(*通信作者電子郵箱664368504@qq.com)
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)性能不斷提高,人臉檢測技術(shù)作為計(jì)算機(jī)視覺領(lǐng)域中的一個(gè)重要分支也取得了巨大的突破,如今,人臉檢測在門禁系統(tǒng)、智能監(jiān)控、智能攝像頭等領(lǐng)域[1~3]有著廣泛的應(yīng)用。人臉檢測也是一種富有挑戰(zhàn)性的技術(shù),如何實(shí)時(shí)穩(wěn)定地檢測圖像序列中角度變化較大、遮擋較為嚴(yán)重的人臉,已成為應(yīng)用中亟待解決的問題。目前,利用淺層特征的傳統(tǒng)方法已經(jīng)滿足不了需求,因此深層次的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)是如今檢測技術(shù)研究的重點(diǎn)和熱點(diǎn)。
傳統(tǒng)的人臉檢測方法首先需要人工選擇特征,例如Haar、局部二值模式(Local Binary Pattern, LBP)、尺度不變特征變換(Scale-Invariant Feature Transform, SIFT)特征、梯度方向直方圖(Histogram of Oriented Gradient, HOG)等[4-7];然后對目標(biāo)進(jìn)行分類,常用的分類器有Adaboost、支持向量機(jī)(Support Vector Machine, SVM)等[8-9]。其中具有代表性的是Viola-Jones等[4]在2001年提出的基于Haar特征的積分圖人臉檢測方法,大大加快了人臉檢測的速度;Forsyth[10]在2007年提出的基于HOG的變形組件模型 (Deformable Part Model, DPM)目標(biāo)檢測算法,利用SVM作為分類器,連續(xù)獲得2007—2009年P(guān)ASCAL VOC[11]目標(biāo)檢測競賽第一名。
傳統(tǒng)的人臉檢測方法眾多,但都具有以下特點(diǎn):1)需要人工選擇特征,其過程復(fù)雜,目標(biāo)檢測效果的優(yōu)劣完全取決于研究人員的先驗(yàn)知識;2)以窗口區(qū)域遍歷圖像的方式檢測目標(biāo),在檢測過程中有很多冗余窗口,時(shí)間復(fù)雜度高,并且對圖像序列中角度變化較大、遮擋較為嚴(yán)重的人臉檢測效果欠佳。
近年來,CNN在目標(biāo)檢測領(lǐng)域中取得了巨大突破,成為現(xiàn)如今最先進(jìn)的目標(biāo)檢測方法。CNN在目標(biāo)檢測上的標(biāo)志性成果是Hariharan等[12]在2014年提出的R-CNN(Region-based CNN)網(wǎng)絡(luò),在VOC上的測試mAP是DPM算法[10]的兩倍。自從R-CNN出現(xiàn)以后,基于CNN的目標(biāo)檢測在VOC數(shù)據(jù)集中的表現(xiàn)占有主導(dǎo)地位,主要分為兩大類:1)基于候選區(qū)域的目標(biāo)檢測,其中的代表作是Faster R-CNN(Faster Region-based CNN)[13]、R-FCN(Region-based Fully Convolutional Network)[14]和Mask R-CNN(Mask Region-based CNN)[15]等;2)基于回歸的目標(biāo)檢測,代表作是YOLO(You Only Look Once)[16]、SSD(Single Shot multibox Detector)[17]等。Huang等[18]詳細(xì)闡述了元結(jié)構(gòu)(SSD、Faster R-CNN和R-FCN)的檢測精度與速度之間折中的方法。除此之外,一些級聯(lián)的人臉檢測方法也具有不錯(cuò)的效果,例如,Chen等[19]的Joint Cascade方法利用人臉檢測和人臉的標(biāo)記點(diǎn)檢測進(jìn)行級聯(lián),在傳統(tǒng)的人臉檢測方法中具有較好的檢測效果;Zhang等[20]的多任務(wù)級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)(Multi-task Cascaded Convolutional Network, MTCNN)利用三個(gè)卷積網(wǎng)絡(luò)級聯(lián),“從粗到精”的算法結(jié)構(gòu)使得多任務(wù)地對人臉進(jìn)行檢測,具有較高的召回率,但訓(xùn)練網(wǎng)絡(luò)時(shí)需要用到三種不同的數(shù)據(jù)集,較為繁瑣;Yang等[21]的Faceness網(wǎng)絡(luò)利用頭發(fā)、眼睛、鼻子、嘴巴、胡子這五個(gè)特征來判斷所檢測目標(biāo)是否為人臉,具有較高的檢測精度,但不滿足實(shí)時(shí)性準(zhǔn)則。
在實(shí)際工程應(yīng)用中,大多數(shù)是在圖像序列中對人臉進(jìn)行檢測,而不是靜態(tài)圖片,而且要求實(shí)時(shí)穩(wěn)定地對角度變化較大以及遮擋面積較大的人臉進(jìn)行檢測。因此本文利用2017年Howard等[22]提出的MobileNet基礎(chǔ)網(wǎng)絡(luò)與SSD網(wǎng)絡(luò)相結(jié)合(MobileNet-SSD, MS),能夠很好地兼顧檢測速度和精度,并對參數(shù)進(jìn)行調(diào)整,使它符合二分類(人臉目標(biāo)和背景)的人臉檢測任務(wù),再利用核相關(guān)濾波(Kernelized Correlation Filters, KCF)跟蹤器[23]對檢測到的人臉進(jìn)行穩(wěn)定的跟蹤,形成檢測-跟蹤-檢測(DTD)循環(huán)更新模型。DTD模型不但能解決多角度和遮擋的人臉檢測問題,而且能大大地提高圖像序列中人臉目標(biāo)的檢測速度。
如圖1所示,首先讀取圖像序列,利用MobileNet-SSD網(wǎng)絡(luò)對圖像進(jìn)行檢測;然后更新跟蹤模型,將檢測到人臉目標(biāo)的坐標(biāo)信息傳遞給KCF跟蹤器,將其作為跟蹤器的基礎(chǔ)樣本框,并對樣本框附近進(jìn)行樣本采樣和訓(xùn)練,用來預(yù)測下一幀人臉目標(biāo)的位置;最后,為了防止跟蹤時(shí)人臉目標(biāo)丟失的現(xiàn)象,跟蹤數(shù)幀后再次更新檢測模型,重新對人臉目標(biāo)進(jìn)行檢測定位。
圖1 系統(tǒng)總體流程
在基于CNN的目標(biāo)檢測方法中,用于提取特征圖的網(wǎng)絡(luò)被稱為基礎(chǔ)網(wǎng)絡(luò)[13](如VGG、ResNet-101、Inception v2等),而用于分類回歸和邊界框回歸的結(jié)構(gòu)被稱為元結(jié)構(gòu)[18]。因此,現(xiàn)存在的基于CNN的目標(biāo)檢測方法可以認(rèn)為是基礎(chǔ)網(wǎng)絡(luò)和元結(jié)構(gòu)的組合,不同的組合具有不同的分類效果,具體參見文獻(xiàn)[18]。在人臉檢測任務(wù)中,為了兼顧檢測速度和精度,本文選用MobileNet-SSD(MS)這種組合形式。
MS網(wǎng)絡(luò)結(jié)構(gòu)包括四個(gè)部分:第一部分為輸入層,用于輸入圖片;第二部分為MobileNet基礎(chǔ)網(wǎng)絡(luò),用于提取輸入圖片的特征;第三部分為SSD元結(jié)構(gòu),用于分類回歸和邊界框回歸;第四部分為輸出層,用于輸出檢測結(jié)果。
深度學(xué)習(xí)正在向手機(jī)等嵌入式設(shè)備發(fā)展,為了滿足實(shí)時(shí)性需求,對基礎(chǔ)網(wǎng)絡(luò)的參數(shù)個(gè)數(shù)有嚴(yán)格的限制,因此MobileNet網(wǎng)絡(luò)[22]應(yīng)運(yùn)而生,它以少量的分類精度換取大量的參數(shù)減少。MobileNet 的參數(shù)數(shù)量是VGG16的1/33,在ImageNet-1000分類任務(wù)中具有和VGG16相當(dāng)?shù)姆诸惥取?/p>
圖2為MobileNet基本卷積結(jié)構(gòu):Conv_Dw_Pw是深度可分離的卷積,深層卷積層(Depthwise Layer, Dw) 使用的是3×3的卷積核,點(diǎn)卷積層(Pointwise Layer, Pw) 使用的是1×1的卷積核,并且每一層深度可分離卷積層后都進(jìn)行批量歸一化(Batch Normalization, BN)和非線性映射(ReLU6)處理。
圖2 MobileNet基本卷積結(jié)構(gòu)
本文將MobileNet網(wǎng)絡(luò)中的激活函數(shù)ReLU更改為ReLU6,配合自動(dòng)調(diào)節(jié)數(shù)據(jù)分布的BN算法,以提高訓(xùn)練的收斂速度。式(1)為ReLU6激活函數(shù):
y=min(max(z,0),6)
(1)
其中z表示卷積特征圖中每一個(gè)特征值。
MobileNet基本卷積結(jié)構(gòu)(深度可分離卷積)的優(yōu)點(diǎn)有:
第一,深度可分離的卷積結(jié)構(gòu)能大大減少計(jì)算代價(jià)。兩種卷積方式的計(jì)算式如下:
(2)
式(2)為標(biāo)準(zhǔn)卷積的計(jì)算式,F(xiàn)M為0填充(zero padding)后的輸入圖像(包括特征圖);KM,N為濾波器,M表示卷積時(shí)輸入圖像的通道數(shù),N表示輸出的通道數(shù)。
(3)
第二,提高了整個(gè)檢測網(wǎng)絡(luò)在訓(xùn)練過程中的收斂效率,在卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,每一層卷積都會(huì)改變數(shù)據(jù)的分布,如果數(shù)據(jù)分布在激活函數(shù)的邊緣,將會(huì)造成梯度消失,使得參數(shù)不再更新。BN算法通過設(shè)置兩個(gè)可以學(xué)習(xí)的參數(shù)來調(diào)整數(shù)據(jù)的分布(類似于標(biāo)準(zhǔn)正態(tài)分布),避免了訓(xùn)練過程中的梯度消失現(xiàn)象和復(fù)雜的參數(shù)(學(xué)習(xí)率、Dropout比例等)設(shè)定。
SSD網(wǎng)絡(luò)[17]是一種回歸模型,它利用不同卷積層輸出的特征進(jìn)行分類回歸和邊界框回歸,不僅較好地緩解了平移不變性和平移可變性之間的矛盾,而且對檢測精度和速度有個(gè)較好的折中,即在提高檢測速度的同時(shí)也具有較高的檢測精度。
圖3為選自基礎(chǔ)網(wǎng)絡(luò)中不同卷積層輸出的特征圖,每一個(gè)特征圖單元都有一系列不同大小和寬高比的k個(gè)框,這些框被稱為默認(rèn)框。每個(gè)默認(rèn)框都需要預(yù)測b個(gè)類別得分和4個(gè)位置偏移。因此,對于w*h大小的特征圖,需要預(yù)測b*k*w*h個(gè)類別得分和4*k*w*h個(gè)位置偏移,所以需要(b+4)*k*w*h個(gè)3×3的卷積核對該特征圖進(jìn)行卷積,將卷積結(jié)果作為最終特征進(jìn)行分類回歸和邊界框回歸。本文是人臉單個(gè)類別的檢測,因此b=1。
(4)
(5)
圖3 不同卷積層輸出的特征圖
當(dāng)默認(rèn)框與某一類別的標(biāo)定框(Ground-truth Box)的重合度大于0.5時(shí),則該默認(rèn)框與該類別的標(biāo)定框相匹配。
SSD是一個(gè)端到端的訓(xùn)練模型,其訓(xùn)練時(shí)的總體損失函數(shù)包括:分類回歸的置信損失Lconf(s,c)和邊界框回歸的位置損失Lloc(r,l,g),定義[17]如下:
(6)
其中:α用于平衡兩種損失;s、r分別表示用于置信損失和位置損失的輸入的特征向量;c表示分類置信度;l表示預(yù)測的偏移量,包括中心點(diǎn)坐標(biāo)的平移偏移和邊界框?qū)捀叩目s放偏移;g為目標(biāo)實(shí)際位置的標(biāo)定框;N為默認(rèn)框與該類別的標(biāo)定框相匹配的個(gè)數(shù)。
在人臉檢測任務(wù)中,MobileNet巧妙的結(jié)構(gòu)大大降低了計(jì)算復(fù)雜度,這也是本文方法滿足快速性要求的一個(gè)重要原因。但是MobileNet的Pw結(jié)構(gòu)改變了Dw結(jié)構(gòu)輸出數(shù)據(jù)的分布,這是其分類精度降低的主要原因。
為了防止MobileNet的卷積結(jié)構(gòu)帶來精度損失,舍去MobileNet的全連接層,額外增加8層標(biāo)準(zhǔn)卷積層,用于擴(kuò)大特征圖的感受野、調(diào)整數(shù)據(jù)分布和加強(qiáng)分類任務(wù)要求的平移不變性;為了防止梯度消失,在每一個(gè)卷積層的后面加上BN層和激活函數(shù)ReLU6;為了滿足檢測任務(wù)要求的平移可變性,分別獲取MobileNet中兩層特征圖和附加的標(biāo)準(zhǔn)卷積層中的四層特征圖組成特征圖金字塔,再用不同的3×3卷積核進(jìn)行卷積,卷積后的結(jié)果作為最終特征進(jìn)行分類回歸和邊界框回歸。
圖4為MS網(wǎng)絡(luò)特征金字塔,以300×300大小的圖片作為輸入,上述六層卷積特征圖金字塔中每一個(gè)特征單元的默認(rèn)框個(gè)數(shù)分別為4、6、6、6、6、6,并且對于不同層、不同任務(wù)所用3×3大小、步長為1的卷積核參數(shù)都不相同。表1為MobileNet-SSD的總體架構(gòu),Conv_BN_ReLU6表示標(biāo)準(zhǔn)卷積層,Conv1_Dw_Pw表示深度可分離卷積層,“*”表示該卷積層輸出的特征圖將會(huì)用于分類回歸和邊界框回歸。由于人臉目標(biāo)比較小,故本文選取了較淺層的Conv7_Dw_Pw輸出的特征圖。
表1 MobileNet-SSD總體構(gòu)架
在圖像序列中運(yùn)動(dòng)的人臉有姿態(tài)、角度的嚴(yán)重變化和部分遮擋,會(huì)造成人臉檢測過程中出現(xiàn)漏檢問題。本文利用快速穩(wěn)定的KCF目標(biāo)跟蹤模型解決以上問題,并且在人臉檢測過程中采用模型更新策略,其具體過程:利用MS模型檢測到人臉的同時(shí)啟動(dòng)KCF模型進(jìn)行持續(xù)穩(wěn)定的跟蹤,為了避免跟蹤丟失,重新啟動(dòng)MS模型對人臉再次檢測。因此,KCF算法起到的作用是:1)加強(qiáng)圖像序列中人臉檢測對姿態(tài)、角度等變化的魯棒性;2)在DTD模型中起到銜接和加速的作用,大大提高整個(gè)系統(tǒng)的檢測速度。
圖4 MobileNet-SSD網(wǎng)絡(luò)特征金字塔
(7)
對式(7)進(jìn)行最小二乘法求解得:
w=(XTX+λI)-1XTY
(8)
其中:X=[x1,x2,…,xi]T,Y=[y1,y2,…,yi]T。X中每一行表示一個(gè)特征向量。式(9)是式(8)的復(fù)數(shù)域形式:
w=(XHX+λI)-1XHY
(9)
此時(shí)求解w的計(jì)算時(shí)間復(fù)雜度為O(n3),式(9)中XH=(X*)T,X*為X的復(fù)共軛轉(zhuǎn)置,即XH為X的厄米特轉(zhuǎn)置。
在KCF算法中(具體算法見文獻(xiàn)[22]),訓(xùn)練樣本和測試樣本都是由基礎(chǔ)樣本xi=[xi1,xi2,…,xin]產(chǎn)生的循環(huán)矩陣Xi構(gòu)成的,即:
(10)
式(8)中,Xi可以通過離散傅里葉矩陣F得到。
(11)
(12)
(13)
(14)
(15)
此時(shí)式(15)中w求解的計(jì)算時(shí)間復(fù)雜度是O(n),離散傅里葉變換的時(shí)間復(fù)雜度為O(nlogn),因此KCF算法能大大降低整個(gè)系統(tǒng)的時(shí)間復(fù)雜度。
KCF算法的目的在于通過傅里葉空間的循環(huán)矩陣來降低回歸計(jì)算的時(shí)間復(fù)雜度,從而獲得速度提升。
首先在WIDER FACE[26]和FDDB[25]人臉數(shù)據(jù)基準(zhǔn)上驗(yàn)證本文MS模型在靜態(tài)圖片上的檢測性能,使用的評價(jià)指標(biāo)是召回率和速度;接著在圖像序列中驗(yàn)證本文MS-KCF模型的檢測性能。
首先利用ImageNet-1000分類數(shù)據(jù)庫訓(xùn)練基礎(chǔ)網(wǎng)絡(luò)MobileNet,再利用訓(xùn)練好的模型遷移到檢測網(wǎng)絡(luò)中進(jìn)行邊界框回歸和分類回歸的微調(diào),用于微調(diào)的數(shù)據(jù)庫來自WIDER FACE數(shù)據(jù)庫的訓(xùn)練集。選擇5種寬高比的默認(rèn)框,分別為1.0、2.0、3.0、0.5和0.33,并且設(shè)定式(4)中默認(rèn)框的最大尺度為0.95,最小尺度為0.2。六層卷積特征圖金字塔中每一個(gè)特征單元的默認(rèn)框個(gè)數(shù)分別為4、6、6、6、6、6。訓(xùn)練過程中,IOU在[0.5,1]區(qū)間內(nèi)的為正樣本,在(0.2,0.5) 區(qū)間內(nèi)的為負(fù)樣本,在[0,0.2] 區(qū)間內(nèi)的作為難例。另外,本文的學(xué)習(xí)率是初始化為0.1的指數(shù)衰減的學(xué)習(xí)率,并且隨機(jī)初始化權(quán)重和偏置項(xiàng)。
WIDER FACE人臉數(shù)據(jù)基準(zhǔn)是全世界最具權(quán)威的人臉檢測評估平臺之一,數(shù)據(jù)集共有32 203張照片,其中有393 703張人臉。測試集為總數(shù)據(jù)集的50%,人臉按照角度、遮擋等的嚴(yán)重程度分為Easy、Medium、Hard三個(gè)等級。檢測結(jié)果如圖5所示。
圖5 WIDER FACE檢測結(jié)果
將本文的MS算法與先進(jìn)的MTCNN和Faceness算法在WIDER FACE數(shù)據(jù)集中作對比,精度-召回率(Precision-Recall, PR)曲線結(jié)果如圖6所示。實(shí)驗(yàn)結(jié)果證明,MS算法在Easy、Medium和Hard子數(shù)據(jù)集的召回率分別為93.11%、92.18%和82.97%,其表現(xiàn)均優(yōu)于MTCNN和Faceness。由此可知MS算法對遮擋和角度變化較大的人臉在WIDER FACE數(shù)據(jù)集中具有較高的魯棒性。
FDDB[25]人臉數(shù)據(jù)基準(zhǔn)是全世界最具權(quán)威的人臉檢測評估平臺之一,測試集包括2 845張照片,其中有5 171張人臉,人臉圖片具有不同姿勢、不同分辨率、多種角度、遮擋以及不同光照等特點(diǎn)。
圖7的檢測結(jié)果表明本文方法對于不同姿勢、不同分辨率、多角度、遮擋以及不同光照的人臉均具有較好的魯棒性。而表2的結(jié)果說明本文方法具有較好的召回率,檢測速度則是在GTX1080 GPU上進(jìn)行的評估,輸入圖片均縮放為300×300的大小。如表2所示,本文MS方法的檢測速度較快,分別是MTCNN的2.8倍和Faceness的9.3倍,因此本文方法在靜態(tài)圖片庫上測試具有較高的召回率和較高的檢測速度。圖8是本文方法與一些先進(jìn)算法的ROC性能曲線對比。
本文MS算法的訓(xùn)練集是WIDER FACE數(shù)據(jù)集,在FDDB人臉檢測基準(zhǔn)中測試,結(jié)果表明MS算法對于靜態(tài)圖片中人臉的檢測具有良好的魯棒性。但實(shí)際工程中大部分應(yīng)用都是基于圖像序列的,因此本文利用MS-KCF模型來解決圖像序列中的人臉角度變化較大和遮擋較為嚴(yán)重的問題。
圖6 WIDER FACE測試PR曲線
圖7 FDDB檢測結(jié)果
方法召回率/%速度/ fpsMS93.6084MTCNN[20]95.0430Faceness[21]90.999
圖8 ROC曲線性能對比
利用VOT2016數(shù)據(jù)集中的Girl和FaceOcc1圖像序列來測試MS-KCF模型的性能,其中Girl是人臉角度變化較大的圖像序列,F(xiàn)aceOcc1則是人臉嚴(yán)重遮擋的圖像序列。
圖9中(a)和(b)分別為Girl圖像序列和FaceOcc1圖像序列,前兩排為MS模型的檢測結(jié)果,后兩排為MS-KCF模型的檢測結(jié)果。顯然,MS-KCF模型對于圖像序列中人臉的角度變化遮擋具有較好的檢測性能。
由圖10和11可知,對于圖像序列中的人臉檢測任務(wù),具有模型更新功能的MS-KCF性能優(yōu)于只具有檢測功能的MTCNN[20]、Faceness[21]等模型,其原因是MS-KCF是針對圖像序列中的人臉提出的一種新的自動(dòng)檢測-跟蹤-檢測(DTD)模式,該模式以跟蹤模式作為銜接,能夠避免單獨(dú)的檢測模式帶來的漏檢現(xiàn)象。本文檢測速度是在GTX1080 GPU上評估的,輸入圖片均縮放為300×300的大小,實(shí)驗(yàn)結(jié)果表明具有模型更新功能的MS-KCF方法是快速的,達(dá)到193幀/s,其檢測速度分別為只具有檢測功能的MS算法的2.3倍,MTCNN的6.4倍和Faceness的21.4倍。
圖10 Girl圖像序列的ROC曲線對比
圖11 FaceOcc1圖像序列的ROC曲線對比
考慮到KCF算法的穩(wěn)定性和快速性,本文選擇該算法作為DTD模式的銜接,它的跟蹤性能在文獻(xiàn)[23]中已有大量驗(yàn)證,這兩個(gè)性能加強(qiáng)了本文檢測算法的穩(wěn)定性和快速性,實(shí)驗(yàn)結(jié)果表明MS-KCF算法在圖像序列中對嚴(yán)重遮擋和角度變化大的人臉仍具有很好的檢測效果。
本文結(jié)合快速精確的目標(biāo)檢測模型MS和快速跟蹤模型KCF提出了一種新的DTD模式,即MS-KCF人臉檢測模型。本文提出的DTD模式具有普遍適用性,研究者可以根據(jù)不同需要更換模式中的具體算法。根據(jù)MobileNet參數(shù)少、精度高的特點(diǎn),結(jié)合改進(jìn)的符合人臉檢測的特征金字塔式SSD元結(jié)構(gòu)構(gòu)建了快速穩(wěn)定的MS人臉檢測模型,再融合快速穩(wěn)定的KCF跟蹤模型構(gòu)建適用于圖像序列中的MS-KCF人臉檢測模型,能夠快速穩(wěn)定地檢測出圖像序列中角度變化較大、遮擋較為嚴(yán)重的人臉,因此,對高性能嵌入式機(jī)器視覺實(shí)時(shí)應(yīng)用場合具有較高的參考意義。