巢 淵,劉文匯,唐寒冰,馬成霞,王雅倩
江蘇理工學院 機械工程學院,江蘇 常州 213000
隨著科技的不斷進步和市場應用需求的不斷推動,人臉檢測技術與日常生活的關聯日益密切。目前,視覺人臉檢測技術及其應用在全世界范圍內得到了快速發展與普及,如:移動支付、交通安全、視頻監控、門禁識別與情緒識別等。當前人臉檢測算法的研究主要圍繞基于特征的傳統人臉檢測算法和基于深度學習的人臉檢測算法兩方面展開。傳統人臉檢測算法通過圖像處理提取特征,通過分類器進行分類[1-3]。但該類算法依賴人為設計特征,因此在精度與效率上都有一定局限性。基于深度學習的人臉檢測算法通過神經網絡對大量數據的學習與分析找到人臉與非人臉之間的關系以完成人臉檢測。深度學習人臉檢測算法可分為兩大類:兩步檢測算法與單步檢測算法。兩步人臉檢測算法中最常用的包括R-CNN(regions with convolutional neural network features)、Fast-R-CNN以及Faster-R-CNN[4-6],總體來說,該類算法可實現較為準確的目標定位與識別,但識別過程中候選區域的反復選擇會影響圖像總體的檢測效率。
單步人臉檢測算法中最具代表性的包括MTCNN(mutil-task convolutional neural network)[7]、RetinaFace[8]和YOLO(you only look once)系列算法[9-11]等。MTCNN采用三個獨立網絡模塊(P-Net、R-Net和O-Net)級聯的方式檢測與定位人臉關鍵點,速度較快,但其精度較低,常用于人臉主動檢測與定位場合[12-13]。RetinaFace也是目前主流的人臉檢測算法之一,精度方面表現較優秀,但模型運算量較大[14]。YOLO系列算法省略了通過滑窗選擇候選區域的步驟,直接將整幅圖像輸入網絡中,通過深度神經網絡進行一次前向傳播,使用非極大值抑制后直接輸出識別結果。得益于出色的目標檢測效率,該算法被廣泛應用于缺陷檢測、儀表檢測與鳥類檢測等場景[15-17]。近年來YOLO系列算法正逐漸成為人臉檢測領域的研究與應用熱點,如文獻[18]采用YOLO-v2算法與ResNet算法完成監控視頻中的人臉檢測與識別,算法在真實場景中檢測速度為21 frame/s,能夠滿足實際檢測需求,其不足之處在于被檢人臉傾斜角度較大或模糊時易出現漏檢情況。文獻[19]通過將多尺度回歸思想應用于YOLO模型,實現人臉年齡估計,有效提高了算法對小尺寸目標的提取能力。對于密集小尺寸人臉的檢測,文獻[20]通過改進目標框聚類算法與對不同層級特征圖進行細粒度特征融合,提出一種改進YOLO的人臉檢測方法,提升算法對小尺度人臉的檢測精度。安防場景中的人臉檢測多為非主動檢測,部分檢測對象會存在遮擋問題,如口罩、帽子和眼鏡等。文獻[21]針對口罩人臉檢測容易出現誤檢、漏檢等問題,通過增加特征層與多尺度融合的方式,提出一種基于改進YOLO-v3的人群口罩佩戴檢測算法,增強口罩遮擋下人臉檢測的精度。文獻[22]提出一種融合環境特征與改進的安全帽佩戴檢測方法。針對復雜多變的環境因素導致檢測準確率降低等情況,利用數據增強以及對抗訓練等方法對YOLO-v4進行了改進,提升了算法的準確率,使其在真實環境下有較穩定的表現。
綜上所述,YOLO系列算法在人臉檢測方面已取得較大的進展,但在室內安防應用場景下,人臉檢測的精度易受被檢人臉角度[23]、光照變化[24]、部分遮擋[25]、模糊[26]等方面因素的影響,且大部分主流算法網絡存在結構復雜、運算量大等問題,難以適應嵌入式設備實時檢測需求。因此,如何平衡室內安防場景下人臉檢測的準確率與效率,仍是一個值得研究的問題。針對上述問題,本文提出一種基于YOLO-v4的室內人臉快速檢測方法。建立包含人臉不同角度、光照變化、部分遮擋、模糊等工況的數據集;基于深度可分離殘差網絡改進主干網絡;在特征金字塔中引入注意力機制,自適應調整不同像素通道特征與空間特征權重。最后,通過實驗對比與分析,驗證本文方法的人臉檢測精度與效率。
YOLO-v4算法因其可在一次掃描中直接通過網絡輸出目標的位置與類別信息,相比其他類型算法具有更快的檢測速度,且室內安防對人臉檢測算法的效率要求較高,因此本文基于YOLO-v4[11]基礎框架,研究提出一種適用于室內安防工程應用中的人臉快速檢測算法。其思路描述如下,流程如圖1所示。
(1)移動安防機器人實時采集、存儲室內監控視頻,并將序列圖像輸入本文人臉檢測模型。
(2)將輸入圖像平均分成多個感興趣區域,每個區域對應多個預測框。
(3)將圖像輸入主干網絡進行特征提取,通過頸部網絡進行特征融合,獲取有效人臉特征。
(4)輸出每個預測框的類別、位置以及置信度(Confidence)值,通過頭部網絡進行非極大值抑制運算,去除重合度(intersection over union,IOU)較大及置信度較低的預測框,輸出檢測結果。置信度與IOU計算公式如下:

其中,Pr(Face)表示是否有人臉的中心落在某柵格中,有則取1,反之取0;IOU表示預測框和標記框的重合度大小;Detection為預測人臉框;GroundTruth為樣本中已標記的人臉框。

圖1 人臉檢測流程Fig.1 Process of face detection
YOLO-v4模型主要由主干網絡、頸部網絡與頭部網絡等構成,網絡結構如圖2所示。其中主干網絡部分主要完成特征提取,原YOLO-v4主干網絡為基于殘差神經網絡改進的Darknet-53,由1個普通的卷積層加23個不同維度的殘差神經網絡模塊組成,存在結構復雜、運算量大的問題。本文改進的主干網絡應用殘差網絡結構可有效減少模型的運算量。原YOLO-v4頸部網絡部分通過對三個大小不一的特征圖進行張量拼接,構建特征金字塔,使網絡同時包含高層抽象特征與底層位置信息特征。本文改進的頸部網絡在構建特征金字塔時引入通道與空間注意力模塊,通過輕量級注意力模型調整不同像素權重,優化特征金字塔,提升模型特征提取能力。頭部網絡主要進行最終檢測值的回歸與預測。下文將對本文方法的改進部分進行詳細描述。

圖2 基于YOLO-v4的人臉檢測算法結構Fig.2 Algorithm structure of face detection based on YOLO-v4
本文網絡具體結構如圖3所示。待檢測圖像首先經過統一縮放變成416×416×3大小,進行感興趣區域分割,再輸入主干網絡進行特征提取。進行特征融合的頸部網絡主要由融合層(concat)、普通卷積塊結構(CBL)、卷積層(COV)以及深度可分離卷積(DW)組合而成。頭部網絡的檢測器對頸部網絡得到的3個有效特征層結果進行堆疊,得出每個預測框最終置信度,通過非極大值抑制算法輸出包含有預測框與置信度數據的圖像。

圖3 本文網絡結構Fig.3 Proposed network structure
本文主要研究室內安防場景下的非主動人臉檢測問題,因此針對人臉角度不同、光照變化、部分遮擋、模糊等常見的五種不同工況,對網絡公開的CelebFaces[27]、WIDER FACE[28]等人臉圖像數據進行篩選、分類及標注,建立人臉數據集。數據集中的部分圖片如圖4所示,圖(a)、(c)分別為不同角度人臉與部分遮擋人臉,此類圖像同時存在人臉變形,且易丟失部分人臉結構特征;從圖(b)中可看出受光照變化影響的人臉圖像,其紋理特征丟失較多;圖(d)為模糊人臉圖像,通常表現為人臉面積占比較小或處于運動狀態,其結構與紋理特征較弱,因此該類人臉檢測依賴更深度的特征。

圖4 人臉數據集圖片Fig.4 Face images in facial dataset
由圖4可以看出,本文數據集中不同圖像中人臉面積變化相對較大,為得到適合本文研究對象的人臉預測框,首先應用K-means++算法[29]對數據集中人臉寬度及高度進行聚類分析,可得出9個預測框,尺寸分別為12×16、19×36、40×28、36×75、76×55、72×146、142×110、192×243和459×401。
針對圖4(a)、(c)兩類圖像中的部分人臉缺失、整體結構不完整的問題,引入馬賽克數據增強算法[11]進行數據集的擴充。馬賽克數據增強算法的主要思想為:在數據集中隨機挑選4幅圖片,對其進行剪裁、縮放以及重新拼接,組成1幅新的圖片,可以增強網絡對人臉結構不完整時的魯棒性。制作完成的人臉數據集主要包含5類圖像:清晰人臉、角度不同人臉、光照變化人臉、部分遮擋人臉以及模糊人臉。其中,清晰人臉2 136幅,角度不同人臉2 560幅,光照變化人臉2 792幅,部分遮擋人臉2 944幅,模糊人臉3 092幅。其中有些圖像中包含不止一類人臉,因此數據集包含總數為13 524幅的人臉圖像,其中重復樣本數量為3 524張。將其劃隨機分為訓練集8 524張、測試集2 500張、驗證集2 500張進行訓練。
2.2.1 激活函數
原YOLO-v4主干網絡由1個單次卷積模塊和一系列殘差網絡結構組成。卷積模塊又由1個卷積層(COV),1個歸一化層(BN)組成。其中,卷積層采用了Mish激活函數作為激活函數[11]。為保障室內人臉快速檢測的實時性與準確率,本文將如式(3)所示的卷積塊中運算量較大的Mish激活函數改進為ReLU6,如式(4)所示:

由式(1)和式(2)可以看出,ReLU6激活函數為線性,而Mish激活函數為非線性,理論上Mish函數比ReLU6函數的梯度下降效果更好,但同時也會增加運算的復雜程度,導致檢測速度相對變慢。本文通過YOLO-v4搭建輕量級人臉檢測網絡,檢測類別較少,使用ReLU6函數可使模型收斂的同時加快模型收斂速度。
2.2.2 深度可分離殘差網絡
原YOLO-v4主干網絡中采用了殘差網絡結構[17]其具體過程為:輸入數據首先經過步長為2×2的基礎卷積層,改變維度;接著分為兩部分,一部分作為主干部分(Resblock)在循環中進行迭代,得出權重與輸入數據的運算關系,另一部分建立獨立的殘差邊,將輸入數據進行少量處理后直接輸出;最后對兩部分輸出數據進行跨層相加,將求和結果作為本層的輸出,過程如圖5所示。采用該結構是為了通過分開梯度流,使梯度流在不同路徑上傳播,使網絡學習到更多梯度流的相關性差異;同時通過減少循環堆疊計算量,以降低算力消耗,提升運算速度和網絡的學習能力。
為進一步提升網絡運算速度,滿足人臉在線檢測任務,本文將原YOLO-v4主干網絡中的殘差網絡結構改進為深度可分離殘差網絡結構,具體結構如圖6所示。此結構延續了YOLO-v4分開梯度流的思想,將一部分輸入數據繼續循環迭代,另一部分數據跳接到最后。再將原來循環迭代的普通卷積殘差塊替換為深度可分離殘差塊,深度可分離殘差塊具體過程為:首先通過1×1的普通卷積塊(CBL)擴張通道以便特征提取,然后引入深度可分離卷積(DW)進一步減少模型運算量,最后使用1×1的普通卷積塊(CBL)進行降維,以提升后續網絡的計算效率。

圖5 殘差塊結構Fig.5 Residual structure

圖6 深度可分離殘差塊結構Fig.6 Depthwise separable residual structure
殘差網絡結構中,假設輸入圖片通道數為Cin,輸出通道為Cout,普通卷積層大小則為N×N×Cin。通道數為Cin的普通卷積層對輸入量進行卷積計算,則普通卷積一次運算過程中,某卷積點參數量計算公式為:

本文深度可分離殘差網絡結構中,深度可分離卷積一次運算具體過程為:假設輸入圖片通道數為Cin,輸出通道為Cout,首先通過N×N深度卷積按Cin個不同通道分別對輸入圖片進行按位相乘的計算,得到第一步結果,此處圖片寬高變化,但通道數不變;再使用1×1×Cin普通卷積核對第一步結果進行卷積運算,此時結果為1×1×X,數據維度也可按照需求調整為1×1×Y×Z。則深度可分離卷積的某卷積點參數量計算公式為:

綜上所述,本文主干網絡中采用的深度可分離殘差網絡模塊輸出通道數可控,且理論上可有效減少主干網絡中模型體積與參數量。本文主干網絡位于圖3最左側,從上到下共18個模塊,由1個普通卷積塊結構(CBL)和17個步長不一的深度可分離殘差網絡結構(I-Resblock)組成。這種設計可降低本文模型總體的運算量,從而提高自然環境下人臉檢測的速度,有利于實時人臉的快速檢測。
在現實人臉檢測場景中,一幅圖片上不同位置的像素重要性可能不同,不同通道的像素重要性也可能不同。因此,引入注意力機制,可用特定網絡調整不同像素對檢測結果的影響力,從而分離出更顯著的特征。為進一步融合主干網絡提取到的3個尺度特征圖,分離出更顯著的特征,在頸部網絡引入注意力機制,其具體思路為:首先學習特征圖中不同位置或不同通道的重要性權值,然后將學習到的重要性權值與原特征圖中值相乘,輸出新特征圖。當前應用廣泛的注意力機制包括SENET(squeeze-and-excitation net)[30]與CBAM(convolutional block attention module)[31]等,其中SENET為通道注意力機制模塊,CBAM則為結合了通道與空間的注意力機制模塊。通道注意力模塊保持通道維度不變,只壓縮空間維度,因此該模塊對人臉類別信息敏感;空間注意力模塊空間維度不變,壓縮通道維度,因此該模塊對人臉位置信息敏感。綜合考慮室內人臉檢測的復雜工況,本文引入CBAM模塊,可分離出更顯著的特征,提高人臉檢測的準確率。CBAM由1個通道注意力模塊與1個空間注意力模塊串聯而成,其結構如圖7所示。

圖7 CBAM注意力模塊Fig.7 Convolutional block attention module
本文先對主干網絡引出的3個不同尺度特征層間進行上采樣和下采樣,然后搭建特征金字塔。具體過程如下:對于特征層1,由13×13×320特征圖與26×26×112淺層特征圖下采樣特征融合而成;對于特征層2,由13×13×320深層次特征圖特征與26×26×112特征圖融合,再與52×52×40淺層特征圖下采樣融合;對于特征層3,由52×52×40特征圖與26×26×112深層特征圖上采樣特征融合而成。接著引入注意力機制,通過輕量級注意力模型調整圖像特征的權重,最終提取出有效的特征,即特征層1、特征層2以及特征層3。最后,將3個特征層送入頭部網絡,得出每個預測框的最終置信度,使用非極大值抑制算法去除IOU較大與置信度較低的預測框,輸出帶預測框與置信度的圖像。
在圖3網絡中標記的①、②、③三類不同位置,進行7組CBAM注意力模塊插入的實驗對比,不同插入位置及對應網絡名見表1,其中位置①為主干網絡輸出端,位置②為上采樣,位置③為下采樣。下文將對7組不同位置注意力模塊對模型訓練及檢測的影響進行對比分析。

表1 不同位置插入注意力模塊Table 1 CBAM insertion at different positions
本文在2.1節建立的包含有13 524幅圖片的數據集基礎上,進行模型的訓練。訓練過程中采用遷移學習[32]的思想以提高訓練效率。具體訓練過程如下:
(1)使用大型數據集上的預訓練權重對網絡前152層進行凍結訓練,以調整非主干網絡的權重。凍結訓練采用一次訓練10個樣本的小批量隨機梯度下降法,以避免網絡運算量過大。
(2)采用學習率動態衰減方式,設置初始學習率為0.001,連續10個迭代后模型性能不提升,則學習率減少一半繼續訓練,以防止模型過擬合。
(3)解凍網絡所有的層進行解凍訓練,解凍訓練參數量較大,一次選取4個樣本,其余參數與凍結訓練相同。
本文實驗平臺圖像處理單元采用GeForce RTX 1060顯卡,顯存為8 GB。操作系統為Windows 10,深度學習框架為Tensorflow 1.15,GPU加速工具為CUDA 8.0。搭建移動安防機器人,并采集室內監控視頻,進行真實場景下的人臉檢測實驗驗證。
為較為正確地評價算法性能的優劣,本文引入的主要評價指標包括召回率(Recall)、準確率(Precision)和平均準確率(average precision,AP)、浮點運算數(floating point operations,FLOPs)等。其中召回率指被正確檢測出人臉占驗證集中所有人臉的比例;準確率指被正確檢測出人臉占檢測出人臉的比例。召回率、準確率、平均準確率表達式分別如式(7)、(8)、(9)所示:

其中,TP(true positives)表示檢測到人臉,且實際圖片中也存在人臉的樣本個數;FP(false positives)表示檢測到人臉,但實際圖像中不存在人臉的樣本個數;FN(false negatives)表示未檢測到人臉,但實際圖像中存在人臉的樣本個數。J(Precision,Recall)為平均精度函數,計算方式為準確率Precision與召回率Recall構成的P-R曲線下方面積。
浮點運算數的計算公式如式(10)所示:

其中,Cin為輸入通道數,K為卷積核大小,H、W分別為輸出特征圖的尺寸,Cout為輸出通道數。
在如2.1節所描述的驗證集上進行本文方法與原YOLO-v4模型的定量測試對比,以驗證本文網絡結構改進及引入注意力機制的有效性。不同網絡及不同種類人臉的準確率與平均準確率AP數據分別如表2與表3所示。

表2 人臉檢測準確率Table 2 Precision of face detection %

表3 人臉檢測平均準確率APTable 3 AP of face detection %
由表2可以看出,改進后的YOLO-v4網絡相比未改進網絡,在各類人臉的檢測準確率上都有所提升。其中,清晰人臉與遮擋人臉兩個類別的準確率提升最為明顯。引入改進YOLO-v4-Attention1與改進YOLO-v4-Attention2注意力機制后,各類人臉檢測準確率都有進一步提升。而改進YOLO-v4-attention3插入的注意力模塊位于下采樣中,提取到的特征相對更少,因此引入YOLO-v4-attention3后模型的準確率較低。進一步地,在依次進行不同注意力模塊的疊加后,模型的準確率也開始降低。
由表3可以看出,依次加入不同注意力模塊后,改進模型的平均準確率開始降低。其中,改進YOLO-v4-Attention12相對于改進YOLO-v4-Attention1各類別AP均降低20%以上,而改進YOLO-v4-Attention123相對于其他模型的AP值則更低。雖然YOLO-v4-Attention2具有最高的人臉檢測準確率,但其召回率較低,因此從AP的角度分析,YOLO-v4-Attention1的總體性能更佳。總體來看,改進后的網絡能更好地識別各類人臉,尤其是清晰人臉與遮擋人臉,且在圖3位置①主干網絡輸出端插入1組CBAM注意力模塊,可使模型的綜合性能進一步提升。
引入損失函數(loss function)判斷當前迭代輪次內的模型訓練狀態,計算公式為:

其中,lobject、lbox與lclass分別為置信度損失、回歸框損失與類別損失。圖8為不同改進網絡的訓練、驗證損失曲線圖,訓練損失(loss)曲線、驗證損失(val-loss)曲線分別為訓練集上的損失曲線與驗證集上的損失曲線。各網絡的訓練、驗證損失曲線最終波動都較小,說明網絡穩定性都較好。其中改進YOLO-v4在第180迭代輪次時損失曲線不再下降,模型收斂完成。改進YOLO-v4-Attention3在第145迭代輪次時損失曲線不再下降,具有最快的收斂速度。而YOLO-v4-Attention1與YOLO-v4-Attention2的收斂速度僅次于YOLO-v4-Attention3,且在疊加不同注意力模塊后,模型收斂速度逐漸降低。因此,引入注意力機制,可有效提升模型整體準確率與收斂速度,且引入1組注意力模塊的YOLO-v4-Attention1、YOLO-v4-Attention2與YOLO-v4-Attention3具有更快的收斂速度。
表4為5種網絡在驗證集上的準確率、召回率與不同人臉平均準確率均值mAP(mean average precision)。改進YOLO-v4-Attention1具有總體最高的mAP值,為86.82%,說明該算法的準確率與召回率能夠達到較好的平衡。而改進YOLO-v4-Attention12及改進YOLO-v4-Attention123,由于關注了更多特征,取得了較高召回率,但同樣存在干擾特征導致準確率較低,模型綜合性能欠佳。因此,本文采用僅在主干網絡輸出端插入注意力模塊(圖3位置①)的改進YOLO-v4,即改進YOLOv4-Attention1,為最終的人臉檢測算法。

表4 不同網絡的檢測結果對比Table 4 Comparison of detection results of different networks %

圖8 Loss曲線Fig.8 Curves of Loss
為進一步體現本文算法在檢測精度及檢測效率方面的優越性,選取Faster-R-CNN[4]、MTCNN[7]、Retina-face[8]以及YOLO-v4[11]等主流人臉檢測算法在驗證集上進行對比測試,結果如表5所示。本文算法在驗證集上的準確率為92.53%,相較于Faster-R-CNN提高了15.58個百分點,相較于MTCNN提高了10.96個百分點,相較于Retina-face提高了0.86個百分點,相較于原YOLO-v4提高了6.09個百分點。本文算法的召回率為57.77%,略高于Retina-face,且明顯優于原YOLO-v4。

表5 人臉檢測算法性能對比Table 5 Performance comparison of different face detection methods
從表5中浮點運算數FLOPs指標可以看出,本文的改進算法顯著降低了YOLO-v4的計算量,且引入注意力機制不會使模型計算量有明顯的提升。表5中參數量數據反應了完整模型參數的存儲大小。本文算法的FLOPs與參數量雖大于MTCNN,但其檢測準確率與檢測速度明顯優于MTCNN。故本文方法綜合能力優于其他算法,可更好地應用于室內安防場景下實時人臉檢測與識別。
為進一步驗證本文算法在實際室內安防場景下的檢測效果,搭建如圖1所示移動安防機器人進行真實室內場景下的人臉檢測實驗驗證。移動安防機器人下位機采用樹莓派4B主控,上位機采用GeForce RTX 1060顯卡,攝像頭采用樂視LeTMC-520。機器人下位機通過攝像頭完成室內監控視頻的采集與存儲。將監控視頻序列圖像由TCP/IP協議傳輸到上位機,輸入人臉檢測模型,進行人臉的實時檢測驗證。驗證圖像數據即來源于機器人采集的室內監控視頻中的序列圖像。本文算法與原YOLO-v4的部分檢測效果分別如圖9、圖10所示。從測試結果圖中可以看出,本文方法在室內安防場景下對光照變化、角度不同、部分遮擋、模糊人臉檢測的置信度皆高于原YOLO-v4,尤其對于如圖9(c)所示的部分遮擋人臉的圖像樣本,置信度提升較高。因此本文方法對實際室內人臉的實時檢測整體效果要優于原YOLO-v4。

圖9 本文算法檢測效果Fig.9 Detection results of proposed method

圖10 原YOLO-v4算法檢測效果Fig.10 Detection results of original YOLO-v4
表6為不同人臉檢測算法在實際室內安防場景中的每秒檢測幀數(frames per second,FPS)(最低值)對比。由表6可知,本文方法在實際室內場景中的人臉檢測FPS為35左右,而原YOLO-v4為30左右。因此,本文算法具有更高的實時性,可滿足室內安防等場景下的人臉快速檢測需求。

表6 人臉檢測算法幀數對比Table 6 FPS comparison of different face detection methods
本文提出了一種基于改進YOLO-v4的室內人臉快速檢測方法。針對室內安防工程應用中檢測人臉角度不同、光照變化、部分遮擋、模糊等復雜工況,制作人臉數據集;在特征提取階段引入深度可分離殘差網絡結構改進主干網絡,應用可分離殘差網絡結構提升模型檢測效率;在構建特征金字塔階段引入注意力機制,通過輕量級注意力模型優化特征金字塔,提高模型特征提取能力。本文方法與原YOLO-v4、Faster-R-CNN、MTCNN以及Retina-face等主流人臉檢測算法的對比實驗表明,本文方法精度均值為92.53%,檢測速度達到35 frame/s,具有更高的檢測與檢測效率,可應用于室內移動機器人實現人臉實時檢測。