陶施帆,李玉峰,黃煜峰,藍(lán)曉宇
(沈陽航空航天大學(xué)電子信息工程學(xué)院,沈陽 110136)
隨著圖像處理技術(shù)的迅速發(fā)展,人臉檢測逐漸應(yīng)用到人們?nèi)粘I畹母鱾€(gè)方面,如刷臉支付、刷臉乘車等。然而在特定場景中,在面部受到遮擋、或是人臉比較密集等情況下,檢測成功概率將會(huì)大幅下降。因此,如何在信息不完整的特殊情況下實(shí)現(xiàn)高效、精準(zhǔn)的人臉檢測是一個(gè)亟需解決的問題。特別是隨著國內(nèi)防疫工作常態(tài)化,在部分復(fù)工復(fù)學(xué)的學(xué)校及企業(yè)中,利用人臉檢測技術(shù)對(duì)出入人員進(jìn)行身份核驗(yàn)?zāi)軌蛴行岣吖ぷ餍?。因此,研究提高戴口罩人員的檢測概率是一個(gè)重要的研究課題[1]。
近年來,隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,在目標(biāo)檢測算法的基礎(chǔ)上涌現(xiàn)出了大量人臉檢測的智能算法。在人臉檢測方面,DDFD(Deep Dense Face Detector)[2]是一種基于AlexNet 進(jìn)行微 調(diào)改進(jìn)的深度學(xué)習(xí)網(wǎng)絡(luò)模型,該模型不需要姿態(tài)或者關(guān)鍵點(diǎn)標(biāo)注,能夠用一個(gè)單一的模型抓取各個(gè)方向上的人臉,對(duì)各種姿勢有很強(qiáng)的抵抗能力,但偏轉(zhuǎn)角度、姿勢的變換越大,準(zhǔn)確度就會(huì)越低。CascadeCNN[3]是對(duì)經(jīng)典的Viola-Jones[4]方法的深度卷積網(wǎng)絡(luò)實(shí)現(xiàn),構(gòu)建一種級(jí)聯(lián)結(jié)構(gòu)來檢測從粗糙到精細(xì)的面部特征。Face R-CNN[5]基于Faster R-CNN[6]框架進(jìn)行人臉檢測,在原有的R-CNN 結(jié)構(gòu)中加入了中心損失函數(shù),在訓(xùn)練階段將圖片經(jīng)過不同尺度縮放,可以更好地檢測小尺寸圖片。UnitBox[7]提出一個(gè)新的交并比(Intersection over Union,IoU)損失函數(shù),代替常用的L2 損失函數(shù),提高了人臉檢測精度。雖然人臉檢測技術(shù)已經(jīng)取得了極大進(jìn)步,但是對(duì)有遮擋的人臉進(jìn)行檢測效果仍不盡如人意,因?yàn)闆]有關(guān)于遮擋部分的先驗(yàn)知識(shí),遮擋部分可以在面部圖像的任何位置,或者可以是任何大小或形狀。在智能算法方面,視覺注意模型可以有效理解圖像,在計(jì)算機(jī)視覺任務(wù)中的應(yīng)用非常成功。SANGHYUN 等[8]提出輕量級(jí)卷積塊注意模塊(CBAM)用于對(duì)象識(shí)別。PENG 等[9]提出一種用于細(xì)粒度圖像分類的對(duì)象部分注意模型(OPAM),該模型結(jié)合注意力機(jī)制和殘差網(wǎng)絡(luò)模塊,成功應(yīng)用于細(xì)粒度圖像分類,并具有較好的性能,然而在有遮擋的人臉檢測領(lǐng)域尚缺乏相關(guān)研究。
為解決密集人臉檢測精度低的問題,本文提出一種基于深度殘差網(wǎng)絡(luò)和注意力機(jī)制的算法模型。該模型包括算法模型修改、引入注意力機(jī)制及非極大值抑制(NMS)技術(shù)3 個(gè)方面。利用2 個(gè)完全卷積層的分支去分別預(yù)測像素級(jí)邊界框及置信分?jǐn)?shù),同時(shí)引入IoU 損失函數(shù)優(yōu)化網(wǎng)絡(luò),提高人臉檢測的精度。在深度殘差網(wǎng)絡(luò)中通過注意力機(jī)制提升算法對(duì)復(fù)雜場景的理解能力,減少遮擋和密集等無用信息的干擾,實(shí)現(xiàn)對(duì)人臉有效目標(biāo)信息的準(zhǔn)確提取。最終在檢測過程中利用非極大值抑制[10]技術(shù),克服因人臉目標(biāo)密集或重疊導(dǎo)致的誤檢和漏檢,以提高算法的性能。
在傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)中,多層特征隨著網(wǎng)絡(luò)層數(shù)的疊加而更加豐富,因此網(wǎng)絡(luò)層數(shù)越深,意味著圖像處理的效果越好。但是簡單的疊加網(wǎng)絡(luò)會(huì)導(dǎo)致梯度消失問題,阻礙模型的收斂。初始化和正則化可以保證幾十層的網(wǎng)絡(luò)能夠正常收斂,然而在更深層次的網(wǎng)絡(luò)中,準(zhǔn)確率達(dá)到飽和后效果反而變差。
針對(duì)上述情況,ResNet 引入了殘差學(xué)習(xí)來解決深度網(wǎng)絡(luò)難以優(yōu)化的問題,其模塊結(jié)構(gòu)如圖1 所示。令表示最 優(yōu)的映射,使用堆疊的非線性層去擬合另一個(gè)映射此時(shí)最優(yōu)映射可以表示為殘差映射在前饋網(wǎng)絡(luò)中增加快捷連接,執(zhí)行簡單的恒等映射,這樣不會(huì)增加額外參數(shù)和計(jì)算復(fù)雜度,比原有映射更易優(yōu)化。
圖1 殘差網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Residual network structure
普通直連的卷積神經(jīng)網(wǎng)絡(luò)和ResNet 的最大區(qū)別在于:ResNet 有旁路的支線將輸入直接連到后面的層,使得后面的層直接學(xué)習(xí)殘差,這種結(jié)構(gòu)也被稱為直連或跳躍式傳遞。傳統(tǒng)的卷積層或全連接層在信息傳遞時(shí),或多或少會(huì)存在信息丟失、損耗等問題。ResNet 在某種程度上解決了這個(gè)問題,通過直接將輸入信息傳到輸出,保護(hù)信息的完整性,整個(gè)網(wǎng)絡(luò)只需要學(xué)習(xí)輸入、輸出差別即可,簡化了學(xué)習(xí)目標(biāo)和難度。
對(duì)于圖像中的每個(gè)像素(i,j),真實(shí)值的邊界框可以定義為一個(gè)4 維向量,xt、xb、xl、xr分別表示當(dāng)前像素位置(i,j)與真實(shí)值的上下邊界之間的距離,為計(jì)算簡便省略了注釋i、j。因此,將預(yù)測的邊界框定義為如圖2 所示。
圖2 IoU 損失函數(shù)原理Fig.2 The IoU loss function principle
IoU 為預(yù)測框與真實(shí)框的交并比,IoU 損失函數(shù)如式(1)所示:
其中:Prediction 表示預(yù)測值;Ground truth 表示真實(shí)值;Intersection 表示交集;Union 表示并集。
目前圖像處理最常用的注意力機(jī)制為通道注意力機(jī)制[11]和空間注意力機(jī)制[12]。
1)通道注意力機(jī)制
通道注意力機(jī)制更關(guān)注圖像輸入的通道的信息,通過對(duì)通道信息的特征提取來提取特征分類上的精度[13]。通道注意力模塊首先對(duì)輸入的特征圖分別進(jìn)行最大池化和平均池化進(jìn)行空間維度壓縮,其中,C表示輸入特征圖的通道數(shù),H和W表示特征圖的長和寬。然后通過共享多層感知器(Multi-Layer Perceptron,MLP)計(jì)算通道注意力圖。最后使用激活函數(shù)sigmoid 進(jìn)行輸出,得到通道注意力特征圖Mc(F)=其網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,計(jì)算公式如式(2)所示。
圖3 通道注意力結(jié)構(gòu)Fig.3 Channel attention structure
2)空間注意力機(jī)制
空間注意力機(jī)制主要關(guān)注于目標(biāo)在圖像上的位置信息,通過空間特征的加權(quán)和來選擇性地聚合每個(gè)空間的特征[14]。輸入特征圖將輸入的特征先后進(jìn)行最大池化和平均池化,如式(3)所示,然后通過7×7 的卷積核和sigmoid 激活函數(shù)進(jìn)行處理,如式(4)所示,得到空間注意權(quán)重圖Fs=其網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示。
圖4 空間注意力結(jié)構(gòu)Fig.4 Spatial attention structure
對(duì)于檢測任務(wù),非極大值抑制(NMS)算法是對(duì)檢測結(jié)果進(jìn)行冗余去除操作的后處理算法,基于一個(gè)固定的距離閾值進(jìn)行貪婪聚類,即貪婪地選取得分高的檢測結(jié)果并刪除超過預(yù)設(shè)閾值的相鄰結(jié)果,在召回率和精度之間取得權(quán)衡[15]。利用IoU 損失函數(shù)提取閾值范圍內(nèi)的所有人臉檢測框,將上述檢測框按照得分進(jìn)行排序,選取得分最高的檢測框,然后計(jì)算其他的框與當(dāng)前框的重合程度,如果重合程度大于一定閾值則刪除,因?yàn)樵谕粋€(gè)臉上可能會(huì)有好幾個(gè)高得分的框,但是只需要一個(gè)即可。NMS 的公式如下:
其中:N表示當(dāng)前得分最高的邊界框,為待處理框,和N重疊的候選窗口xi的重疊度IoU 小于預(yù)設(shè)閾值T的保留其得分,大于預(yù)設(shè)閾值T的窗口,其得分全部設(shè)置為0。
針對(duì)人臉檢測應(yīng)用中存在的人臉密集、戴口罩遮擋等問題,本文提出一種利用ResNet-50 作為骨干網(wǎng)絡(luò)并引入注意力機(jī)制和NMS 優(yōu)化的人臉檢測算法。
為獲取更深層的圖像參數(shù),使用ResNet-50 作為骨干網(wǎng)絡(luò),ResNet-50 網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。輸入圖像經(jīng)過第1 次卷積池化后傳入殘差塊中,在隨后的每個(gè)階段都要經(jīng)過一次卷積加歸一化(Conv+Batch Norm)的操作,即Conv Block,然后經(jīng)過多個(gè)輸入和輸出維度都一致的Identity Block,在經(jīng)過第2 階段~第5 階段的卷積后,通過7×7 大小的平均池化層(AVG Pool),傳入Flatten 層將數(shù)據(jù)壓縮成一維數(shù)組,再與全連接層連接。
圖5 ResNet-50 網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 ResNet-50 network structure
本文刪除了ResNet-50 中的完全連接層,并添加了2 個(gè)完全卷積層的分支去分別預(yù)測像素級(jí)邊界框和置信分?jǐn)?shù),網(wǎng)絡(luò)結(jié)構(gòu)如圖6 所示。
圖6 深度殘差網(wǎng)絡(luò)中的置信和預(yù)測分支Fig.6 Confidence and prediction branch block of deep residual network
從圖6 可以看出,在ResNet-50 第4 階段的末尾添加了1 個(gè)卷積層,步長為1,內(nèi)核大小為512×3×3×1,隨后執(zhí)行線性插值將特征圖調(diào)整為原始圖像大小,最后將要素圖與輸入圖像對(duì)齊之后,獲得了具有相同輸入圖像尺寸的通道特征圖。在該特征圖上使用S 形交叉熵?fù)p失來回歸生成的置信度熱圖。
為預(yù)測邊界框熱圖,在ResNet-50 第5 階段的末尾添加 卷積內(nèi) 核大小 為512×3×3×4 的卷積 層,同第4 階段,類似地將特征圖調(diào)整為原始圖像大小并與輸入圖像對(duì)齊。此外,插入ReLU 層確保邊界框預(yù)測非負(fù),預(yù)測邊界與IoU 損失函數(shù)共同優(yōu)化。最終損失計(jì)算為2 個(gè)分支的損失的加權(quán)平均值。
將置信分支連接在ResNet-50 第4 階段的末尾,而邊界框分支插入在第5 階段的末尾,是由于IoU 損失計(jì)算的邊界框是一個(gè)整體,因此需要更大的感受野,并且可以直觀地從置信度熱圖中預(yù)測對(duì)象的邊界框。這樣,邊界框分支被視為一種自下而上的策略,可以從置信度熱圖中抽象出邊界框。
本文在網(wǎng)絡(luò)結(jié)構(gòu)的卷積塊中引入了注意力機(jī)制[16],給定中間特征圖為輸入I∈RC×H×W,主干部分由兩組殘差單元組成,分支部分由一組殘差單元、通道注意力模塊和空間注意力模塊組成,如圖7 所示。中間特征圖首先通過通道注意力模塊,生成一維的通道注意力圖WC∈RC×1×1,然后通過空間注意力模塊生成二維的空間注意力圖WS∈R1×H×W。圖 中?為 對(duì)應(yīng)矩陣元素相乘,通道注意力模塊相乘時(shí),先把一維通道注意力圖擴(kuò)張為WC∈RC×H×W再相乘,空間注意力模塊相乘時(shí)也同樣先把二維的空間注意力圖沿著通道維度擴(kuò)張為WS∈RC×H×W再相乘。
圖7 卷積塊中的注意力機(jī)制Fig.7 Attention mechanism of convolution block
上述過程可以看作是通道和空間注意力學(xué)習(xí)的相互結(jié)合,以實(shí)現(xiàn)層級(jí)間互信息的最大化,從而引導(dǎo)模型在迭代訓(xùn)練中學(xué)習(xí)到更顯著的人臉相關(guān)信息。
圖8 所示為人臉檢測整體網(wǎng)絡(luò)結(jié)構(gòu),將注意力機(jī)制應(yīng)用于整個(gè)殘差網(wǎng)絡(luò),促使圖像有用信息在網(wǎng)絡(luò)中有效流動(dòng),捕捉人臉關(guān)鍵部位的有用信息,提高對(duì)有遮擋人臉的檢測能力,使用置信度和邊界框的熱圖準(zhǔn)確地定位人臉。在閾值置信度熱圖上通過橢圓擬合人臉,由于人臉橢圓太粗糙而無法定位對(duì)象,因此進(jìn)一步選擇這些人臉橢圓的中心像素,并從這些選擇的像素中提取相應(yīng)的邊界框。
圖8 深度殘差網(wǎng)絡(luò)結(jié)合注意力機(jī)制的網(wǎng)絡(luò)結(jié)構(gòu)Fig.8 The network structure of the deep residual network combined with the attention mechanism
非極大值抑制算法(NMS)計(jì)算出每一個(gè)檢測框的面積,根據(jù)得分進(jìn)行排序,隨后計(jì)算其余檢測框與當(dāng)前最大得分的檢測框交并比,刪除交并比大于設(shè)定閾值的檢測框。重復(fù)上述過程,直至候選檢測框?yàn)榭?,最終得到最佳的人臉檢測框,如圖9 所示,由此可以提升定位人臉的準(zhǔn)確性。
圖9 NMS 算法人臉定位Fig.9 NMS algorithm faces locates
本文基于PyTorch 的深度學(xué)習(xí)框架平臺(tái)進(jìn)行算法研究,深度學(xué)習(xí)平臺(tái)為PyTorch0.4,編譯環(huán)境為Python3.5,操作系統(tǒng)為Ubuntu18.04。硬件平臺(tái)為Dell T7810 工作站,CPU 為Intel E5-2620 V4 2.1 GHz,內(nèi)存為16 GB,GPU 計(jì)算卡為Nvidia Quadro P4000 4 GB。
本文使用FDDB 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)結(jié)果測試,F(xiàn)DDB 是當(dāng)前權(quán)威的人臉檢測評(píng)測集之一,共包含了2 845 張圖片,人臉狀態(tài)多樣,包括遮擋、密集、分辨率低等情況。使用的權(quán)重根據(jù)ImageNet[17]上預(yù)先訓(xùn)練的ResNet-50 模型初始化,然后在數(shù)據(jù)集WiderFace[18]上進(jìn)行微調(diào)。微調(diào)過程采用隨即梯度下降(Stochastic Gradient Descent,SGD),并將批量大小設(shè)置為10。動(dòng)量和權(quán)重衰減因子分別設(shè)置為0.9 和0.000 2。學(xué)習(xí)率設(shè)置為最大訓(xùn)練值10-8,微調(diào)期間不使用任何數(shù)據(jù)擴(kuò)充。
3.2.1 人臉檢測與置信度效果
人臉檢測結(jié)果與置信度熱圖如圖10 所示,可以看出本文算法能夠準(zhǔn)確找到人臉置信度高的像素點(diǎn),如圖10(b)所示,并能夠生成對(duì)應(yīng)的人臉檢測邊界框,如圖10(a)所示。
圖10 人臉檢測結(jié)果Fig.10 Face detection result
3.2.2 有無注意力機(jī)制檢測效果對(duì)比
在人臉有遮擋的情況下,與不含注意力機(jī)制的殘差網(wǎng)絡(luò)進(jìn)行檢測結(jié)果對(duì)比,如圖11 所示,可以看出本文算法可以準(zhǔn)確檢測出佩戴口罩的人臉,精度高于不含注意力機(jī)制的方法,表明其對(duì)于有遮擋人臉的檢測效果較好,說明通過增加注意力機(jī)制模塊對(duì)復(fù)雜的人臉圖像具有很強(qiáng)的適應(yīng)性。
圖11 有無注意力機(jī)制的檢測結(jié)果對(duì)比Fig.11 Comparison of detection results with or without attention mechanism
3.2.3 人臉密集情況下檢測效果對(duì)比
圖12 為本文方法與CascadeCNN、FastCNN 人臉檢測算法的檢測結(jié)果對(duì)比。由圖12(a)~圖12(c)可見,CascadeCNN 方法對(duì)于小尺度人臉和有遮擋的人臉檢測效果不理想,F(xiàn)astCNN 方法可以檢測出被遮擋的人臉,但是對(duì)于小尺度人臉檢測效果不理想,本文方法對(duì)于檢測密集型人臉和有遮擋的人臉,都能取得理想的效果。
圖12 人臉密集檢測結(jié)果對(duì)比Fig.12 Comparison of face dense detection results
本文使用目標(biāo)檢測領(lǐng)域常用的ROC 曲線(Receiver Operating Characteristic curve)和每秒幀率(Frame Per Second,F(xiàn)PS)來客觀評(píng)價(jià)本文算法對(duì)于人臉的檢測能力[19]。
ROC 曲線表示的是真正率和假正數(shù)的關(guān)系。其中,真正率(True Positive Rate)ρ的計(jì)算公式為:
其中:真正數(shù)(True Positive,TP)表示正樣本被預(yù)測為正樣本的個(gè)數(shù);假正數(shù)(False Positive,F(xiàn)P)表示負(fù)樣本被預(yù)測為正樣本的個(gè)數(shù);假負(fù)數(shù)(False Negative,F(xiàn)N)表示正樣本被預(yù)測為負(fù)樣本的個(gè)數(shù)。
本文算法通過與人臉檢測表現(xiàn)較好的算法DDFD、CascadeCNN、FastCNN、DP2MFD、UnitBox 進(jìn)行對(duì)比,可以看出本文算法檢測性能優(yōu)于其他人臉檢測算法,如圖13 所示。DDFD、CascadeCNN 算法精確率較差,在85%左右;FastCNN、DP2MFD 算法的精確率較好,能達(dá)到90%左右;UnitBox 和本文算法的精確率較高,基本在95%以上。對(duì)精確率在假正數(shù)為500 時(shí)的值進(jìn)行統(tǒng)計(jì),同時(shí)可得出誤檢率。
圖13 ROC 曲線對(duì)比Fig.13 ROC curve comparison
每秒幀率(FPS)表示每秒處理的圖片數(shù)量,用來衡量算法的檢測效率。本文實(shí)驗(yàn)的FPS 和總共檢測完2 845 張圖像所需時(shí)間如表1 所示[20]。從表1 可以看出,本文算法的人臉檢測精確率達(dá)96.1%,與使用VGG-16 網(wǎng)絡(luò)的UnitBox 算法相比精確率提高了1.6%,在檢測速度方面,本文算法的檢測速度顯著優(yōu)于DDFD、CascadeCNN、FastCNN、DP2MFD 等算法,達(dá)到10 frame/s 以上,略低于UnitBox 算法。
表1 人臉檢測算法性能對(duì)比Table 1 Performance comparison of face detection algorithms
本文提出一種基于深度殘差網(wǎng)絡(luò)和注意力機(jī)制的人臉檢測算法。通過使用深度殘差網(wǎng)絡(luò)并在網(wǎng)絡(luò)中添加注意力機(jī)制,增強(qiáng)特征圖在通道上的表達(dá)能力,抑制無用的特征信息,并在特征圖空間上增強(qiáng)上下文聯(lián)系和特征描述能力。利用IoU 損失函數(shù)提升人臉檢測的性能,并且在檢測過程中加入非極大值抑制方法,使得在人臉遮擋情況下的對(duì)象定位更加準(zhǔn)確。在FDDB 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,本文算法具有較高的準(zhǔn)確率,在檢測有口罩遮擋的人臉時(shí),也能得到較好的檢測效果。但本文算法改進(jìn)后由于網(wǎng)絡(luò)計(jì)算量有所增加,檢測效率還有待提高,下一步將設(shè)計(jì)更為精簡的網(wǎng)絡(luò)框架,提高檢測效率,使得該算法能夠更好地應(yīng)用于實(shí)時(shí)場景中。