李祥兵,陳 煉
(南昌大學 信息工程學院,南昌 330000)
人臉檢測是計算機視覺領域的一個重要研究方向,其在實時監(jiān)控、目標跟蹤、安全驗證等諸多場景中被廣泛應用。在VIOLAJONES 等人構建的目標檢測框架[1-2]基礎上,許多關于人臉檢測的算法被陸續(xù)提出,這些算法不同程度地提高了人臉檢測的準確性。在計算機視覺領域,早期的研究工作主要集中于提取不同類型的手工特征(如方向梯度直方圖[3]和SURF 算法[4]),并針對這些特征使用傳統的機器學習方法訓練有效的分類器來進行檢測和識別。但此類方法通常需要研究者設計有效的手工特征,并且針對這些特征進行單獨優(yōu)化,影響了整體的檢測效果。
近年來,深度學習特別是深度卷積神經網絡在圖像分類、目標檢測和圖像語義分割等方面取得了較多的研究成果。與傳統方法相比,深度學習方法避免了手工設計特征,這使得模型具有良好的自適應能力,提升了模型的泛化能力[5]。因此,基于深度學習的目標檢測方法被廣泛應用于人臉檢測。
基于目標檢測框架RCNN[6]和深度學習的人臉檢測方法能夠取得良好的檢測效果。文獻[7]提出的方法結合了基礎區(qū)域建議網絡(Region Proposal Network,RPN)和RCNN。文獻[8]提出的多尺度Faster-RCNN 模型將不同層的特征圖進行融合,實現了多尺度人臉檢測。文獻[9]提出一種改進的基于R-FCN 模型的人臉檢測算法,其根據人臉位置敏感的特性來提取特征圖以提高人臉檢測的性能。然而,在自然場景下,人臉圖像常常會出現尺度過小、人臉過于密集或者人臉重疊等情況。一般而言,從圖像中提取的深層次的特征圖包含高層的語義信息,但是無法表達準確的人臉,針對小尺度或遮擋重疊等情況,卷積最后一層特征圖經過映射后迅速縮小,這給人臉檢測任務帶來了很大的挑戰(zhàn),使得檢測模型在上述情況下表現并不理想。
本文構建一種改進Faster-RCNN[10]模型用于自然場景人臉檢測。使用更深層的殘差網絡ResNet-50代替VGG-16,從而準確提取人臉特征,同時采用多尺度融合策略融合低層次和高層次的特征圖,使模型適用于不同尺度的人臉圖像檢測。進一步地,改變原始RPN 中錨框(Anchor)的尺度和長寬比,以提升算法在小尺度人臉檢測方面的性能,并使用在線難例挖掘(Online Hard Example Mining,OHEM)[11]、軟非極大抑制(Soft-Non-Maximum Suppression,Soft-NMS)[12]和多尺度訓練的方法提升算法對人臉檢測的泛化能力。
人臉檢測是計算機視覺中最基本和最具挑戰(zhàn)性的問題之一。早期的人臉檢測算法多基于手工特征和滑動窗口,而近年來,基于深度學習的方法被廣泛用于人臉檢測且具有更高的精度。
文獻[1-2]提出使用類似矩形Harr 的特征在一個級聯的Adaboost 分類器中實現實時的人臉檢測。但由于特征尺寸較大,在24×24 的檢測窗口中,類似Harr 的特征數量多達160 000 個。此外,該模型無法有效處理非正面人臉和自然場景人臉。此后,隨著實際場景中因人臉不同姿態(tài)對檢測算法的要求越來越高,研究者陸續(xù)提出新的檢測方法,包括建立新的局部特征[13]、采用級聯結構的算法[14]和基于多種模型的有效級聯模型[15-16]。DPM[17]是另一個重要的突破,其HOG 特征頂部的可變形部分用于表示目標對象。在DPM 的基礎上,許多其他改進策略[18]通過使用受監(jiān)督的組件、更多的姿態(tài)分配和更好的訓練方法來提升模型性能。
隨著深度學習技術的不斷發(fā)展,許多基于深度學習的目標檢測算法被提出應用于人臉檢測,如Cascade-CNN[19]、MTCNN[20]將卷積神經網絡作為滑動窗口檢測器作用在圖像金字塔上來建立特征金字塔。然而,使用圖像金字塔會減慢檢測速度并且降低內存使用效率。與此類方法不同的是,二階段(Two Stage)檢測直接在單尺度圖像上提取特征。RCNN[6]通過選擇性搜索(Selective Search)方法[21]獲取候選區(qū)域,然后將候選區(qū)域輸入到卷積神經網絡中提取特征,在此基礎上,使用支持向量機(Support Vector Machine,SVM)進行分類并采用邊框回歸(Boungding Box Regression)方法確定和校準目標位置。Faster-RCNN[10]、R-FCN[22]使用區(qū)域建議網絡初始化候選區(qū)域,并利用感興趣區(qū)域池化(ROI-Pooling)和位置敏感池化(Position-Sensitive Pooling)提取每個感興趣區(qū)域的特征。文獻[23]將Faster-RCNN 應用于人臉檢測中,該方法在FDDB 人臉數據集上取得了良好的效果。文獻[24]提出的Face R-FCN通過對得分圖上的嵌入響應重新加權,并使用位置敏感的平均池化消除了每個人臉部位對得分貢獻不均勻的影響。
本節(jié)提出基于改進Faster-RCNN 框架的人臉檢測模型,通過構建多尺度特征圖融合網絡、增加Anchor 數量、應用在線難例挖掘和線性非極大值抑制方法并進行多尺度訓練,實現對小尺度人臉目標的準確匹配。
在原始Faster-RCNN 網絡結構中,ROI-Pooling在卷積神經網絡的最后一層被執(zhí)行以生成候選區(qū)域[25]。然而這種方法并不是最佳的,有時會忽略一些重要的特征,因為深層的卷積特征圖具有較大的感受野,對一些大尺度的目標人臉表現較好,而對于小尺度的目標人臉表現并不理想。為捕獲感興趣區(qū)域中更多細粒度的特征信息,同時引入上下文信息,本文提出通過融合多個卷積特征圖(包括低層特征圖和高層特征圖)來改進ROI-Pooling。如圖1 所示,首先將卷積特征圖conv4f_x、con3c_x 和con2c_x 分別與得到的ROIs 進行ROI-Pooling,然后對池化后的結果分別進行L2 歸一化(L2-Normalization)處理,使其在各個維度上不會存在較大差異,最后對得到的結果進行融合和尺度縮放。為使融合后的結果與原始網絡結構相匹配,使用一個1×1 的卷積核進行通道降維。
圖1 多尺度融合網絡結構Fig.1 Structure of multi-scale fusion network
另一方面,重新對錨框進行設計,以獲得包含更好位置信息的錨框。根據在訓練集上的訓練經驗分析,將錨框的長寬比設置為3 種,即1∶1、1∶1.5 和2∶1,將錨框的尺度設置為5 種,即16×16、32×32、64×64、128×128 和256×256,由此得到15 種不同長寬比和尺度的錨框。這些不同大小的錨框對于捕捉小尺度人臉非常有用。由于Wider Face 數據集中包含了許多小尺度人臉(寬度及高度小于16 像素),因此在訓練和測試中保留這些小的候選區(qū)域[26]。
為在不同尺度上對人臉候選區(qū)域特征進行擴展,圖1 所示的網絡對3 個不同尺度特征圖進行ROI-Pooling 操作后進行融合。通常,特征圖的通道數量和尺度大小在ResNet-50 的每一層都不同,而在更深的卷積層上對應的特征圖尺度也更小。因此,直接對ROI-Pooling 后的特征圖進行融合可能效果不佳,因為特征圖之間的尺度差異較大,而尺度大的特征可能會占據主導地位,從而減弱算法的魯棒性。為解決這個問題,對每個ROI-Pooling 后的特征圖做L2 歸一化處理。在融合之前,將L2 歸一化方法應用于ROI-Pooling 后每個特征圖的每個像素中。歸一化后,尺度縮放操作將獨立應用于每個特征圖。對于一個d維的輸入x=(x1,x2,…,xd),應用L2 范數對其進行標準化處理,如式(1)所示:
輸入x的L2 范數,定義如式(2)所示:
其中,x是原始像素向量是歸一化后的像素向量,d是每個ROI-Pooling 后特征圖的通道數。
引入縮放因子γi,并通過式(3)縮放歸一化后的值:
在訓練階段,縮放因子γ和輸入數據x通過反向傳播來計算,相應的鏈式法定義為:
對于提高基于深度卷積神經網絡的目標檢測準確率,在線難例挖掘已被確認為一種有效策略[11]。難例是指那些無法被網絡準確預測到的樣本。因此,將那些難例再次送入到網絡中訓練可以作為提升網絡性能的有效手段。在原始Faster-RCNN 中,候選區(qū)域和真值區(qū)域的重疊率(IOU)在[0.1,0.5]之間的樣本被設置為負樣本,重疊率大于0.5 的被設置為正樣本。為保持樣本均衡,設置正負樣本的比例為1∶3。在訓練時,因為被檢測的是人臉,所以可能會出現一些極端的情況,如一張圖像中可能會出現很多人臉、人臉與人臉之間存在嚴重遮擋、部分人臉尺度太小、角度偏轉較大,由于這些難例與Ground Truth 重疊率為0,因此無法加入到網絡中訓練。此外,人為設置正負樣本的比例約束條件也會導致模型的訓練不充分。
本文將在線難例挖掘算法加入到模型中。首先通過RPN 計算候選區(qū)域的損失值,并將這些損失值從大到小排序,挑出前K個最大損失值作為難例加入到后續(xù)的網絡中進行訓練。同時,將負樣本的閾值下調為0,并取消正負樣本的比例,使網絡能夠自適應訓練。
在目標檢測過程中,非極大值抑制(NMS)算法在被檢測的圖像中產生一系列的檢測框集合B以及對應的分數S。當選中最大分數的檢測框M時,將M從集合B中移除并放入到最終的檢測結果集合D,同時,集合B中任意與重疊率大于閾值Nt的檢測框也被移除[12]。NMS 算法中分數重置函數表示為:
其中,Iou表示重疊率。但該方法存在一個明顯的問題:如果圖像上同一個區(qū)域人臉重疊度較高,其中有些人臉檢測框分數被置為0,則會導致對該人臉的檢測失敗并降低算法的平均檢測率(mAP),如圖2 所示。
圖2 重疊人臉漏檢示意圖Fig.2 Schematic diagram of omissive detection for overlapping face
從圖2 中可以看出,前面一個檢測框人臉(女士)的得分值為0.98,后面一個檢測框人臉(男士)的得分值為0.89,一般來說,設置人臉重疊率的閾值為0.3,而圖中兩個檢測框的重疊率為0.33,根據NMS算法,重疊率超過閾值的檢測框得分較低的將被移除,會導致無法檢測出第2 個框中的人臉。
針對NMS 存在的問題,本文使用一種Soft-NMS算法[12]?;谥丿B率的大小為相鄰的檢測框設置一個衰減函數而非徹底將其分數置為0。簡單來說,如果一個檢測框與M有大部分重疊,它會有很低的分數;而如果檢測框與M只有小部分的重疊,則其原有檢測分數不會受太大的影響。此外,Soft-NMS 不需要額外的訓練且易于實現,因此很容易被集成到模型中,Soft-NMS 分數衰減函數如式(6)所示:
原始的Faster-RCNN 模型通常對所有訓練圖像采用固定尺度。本文通過將圖像調整為隨機尺度,使檢測模型可以學習到不同尺度的特征,從而提高模型的檢測性能。本文隨機調整圖像的大小,使圖像的短邊尺度為480、600 或700,并確保圖像的長邊尺度不超過1 000,從而使模型對不同大小的圖像具有魯棒性。
本文實驗在Ubuntu 16.04 系統及Caffe 深度學習框架上進行,主干網絡為ResNet-50,GPU 為NVIDIA RTX2080Ti,采用遷移學習[27]的方法訓練網絡,使用ImageNet[28]上預訓練的模型初始化網絡參數。本文利用Wider Face 人臉數據集訓練模型,該數據集中圖像均為自然場景下采集的圖像,包含32 203 張圖像,其中有393 703 個已經標注好的人臉圖像,其姿態(tài)、形狀、尺度大小、模糊程度、光照條件、是否遮擋等因素均具有差異,能夠滿足本文實驗的訓練要求。測試集為FDDB 人臉標準測試集,包含2 845 張圖片,有5 171 個人臉圖像。
在訓練階段,將模型在Wider Face 數據集上訓練迭代160 000 次,設置初始學習率為0.000 1,同時采用學習率衰減策略,衰減率為0.005,每經過40 000 次迭代學習率衰減1 次。圖像輸入到網絡前先進行隨機裁剪,確保其短邊尺度為480、600 或700,長邊尺度不超過1 000。采用水平翻轉作為數據增強策略。在RPN 中,Anchor 數量由原始的9 個增加為15 個,3 種長寬比分別為1∶1、1∶1.5 和2∶1,5 種不同的基礎尺度分別為16×16、32×32、64×64、128×128 和256×256。對于Fast-RCNN 分類回歸網絡部分,設置ROI 為前景的條件為其和真值框的IOU 閾值大于等于0.5,其余為背景。當某個ROI 的得分值高于0.8 且與對應真正框的IOU 小于0.5 時,將其視為難例樣本,這些難例樣本會被送入后續(xù)的網絡中進一步訓練。
與訓練階段類似,在測試階段,被測試的圖像被隨機裁剪后輸入測試網絡。對每張測試圖像,RPN將產生128 個候選框,當某個候選框分類得分值超過0.8 時將其視為人臉。本文將Soft-NMS 算法中的閾值設為0.3。
3.2.1 不同改進策略對模型的提升比較
為檢驗模型使用不同策略的有效性和貢獻,在Wider Face 人臉數據集上進行實驗,并在其測試集上測試模型的平均精度,實驗時設置相同的學習率0.000 1 和迭代次數160 000,實驗結果如表1 所示,其中,×表示未使用,√表示使用。
表1 不同策略對模型提升效果對比Table 1 Effect comparison of model promotion by different strategies
從表1 可以看出,原始Faster-RCNN 模型檢測的平均精度為85.6%,采用不同的改進策略對模型的提升效果不同,其中使用多尺度特征圖融合對模型效果影響較為明顯,而使用全部改進策略的最終模型檢測平均精度達到89.0%,較原始模型提升了3.5%。
3.2.2 本文模型與其他經典模型的對比
為比較本文模型與其他經典人臉檢測模型(包括Cascade CNN[19]、Joint Cascade[29]等)的效果差異,將本文方法和其他經典方法在FDDB 人臉數據庫上進行測試評估。FDDB 評估指標有兩種,分別為離散分數和連續(xù)分數。離散分數是當檢測的人臉和標注人臉的重疊率超過50%時,得分為1,否則為0。連續(xù)分數的值是檢測人臉和標注人臉的重疊比率。本文采用離散分數作為評估模型的指標。根據模型在FDDB 人臉數據庫中的檢測結果繪制相應的ROC曲線,如圖3 所示。在實驗中,本文提出的模型檢測出FDDB 人臉數據庫5 171 個人臉目標中的4 943 個人臉,檢出率為95.6%,其中漏檢228 個人臉,每張圖像的平均檢測時間為0.29 s。從圖3 可以看出,本文模型所對應的ROC 曲線位于最上方,明顯高于其他模型對應的ROC 曲線,說明本文提出的改進模型相較于目前其他流行的人臉檢測模型在檢測精度和檢出率上均有所提高。
圖3 本文模型與其他人臉檢測模型性能比較Fig.3 Performance comparison of the proposed model and other face detection models
3.2.3 時間性能分析
為比較不同策略對模型時間性能的影響,將基于不同改進策略的模型在FDDB 人臉標準測試集上進行測試,以平均檢測每張圖像所需時間和檢測完2 845 張圖像所需時間作為對比項,結果如表2所示。
表2 不同模型的時間性能對比Table 2 Time performance comparison of different models s
從表2 可以看出,原始Faster-RCNN 模型使用VGG16 作為主干網絡,平均檢測每張圖像所需時間為0.19 s,總檢測時間為540.55 s,當采用更深的ResNet-50 作為主干網絡時,平均檢測每張圖像所需時間為0.26 s,相較于原始模型多用0.07 s,總檢測時間為739.70 s,相較于原始模型多用199.15 s。當使用本文最終模型(ResNet-50+增加Anchor 數量+多尺度特征圖融合+在線難例挖掘+軟非極大值抑制+多尺度訓練)時,平均檢測每張圖像所需時間為0.29 s,相較于使用ResNet-50 作為主干網絡的原始模型多用0.03 s,總檢測時間為825.05 s,相較于ResNet-50作為主干網絡的原始模型多用85.35 s。分析可知,本文模型檢測時間的增加主要耗費在使用更深的ResNet-50 主干網絡上,而其他改進策略對檢測時間的耗費相對較少??傮w來看,本文模型在以少量時間代價的基礎上顯著提升了人臉檢測的精度,說明本文改進的方案是行之有效的。
3.2.4 調參失敗案例分析
在模型訓練過程中,本文嘗試通過3 種不同的基礎學習率來訓練迭代模型,分別為0.00 1、0.000 1和0.000 01。實驗結果表明:當使用較大的基礎學習率0.001 時,模型迭代較快,訓練時間較短,但模型最終檢測效果不理想;當使用0.000 1 作為基礎學習率時,模型迭代時間有所延遲,但模型最終檢測效果較為理想;當使用較小的基礎學習率0.000 01 時,模型迭代緩慢,訓練時間大幅延長,收斂緩慢,最終模型檢測效果與基礎學習率為0.000 1 幾乎無差別。
實驗初始時,在多尺度特征圖融合前未使用L2 歸一化方法,直接將不同尺度特征圖融合后的特征傳入后續(xù)網絡,最終模型無法收斂到理想狀態(tài),檢測效果不佳,導致實驗失敗。由于特征圖的通道數量和尺度大小通常在卷積神經網絡的每一層都不同,而在更深的卷積層上對應的特征圖尺度也更小,因此直接將ROI-Pooling 后的特征圖進行融合可能會導致不好的效果,因為特征圖之間的尺度差異較大。實驗結果表明,L2 歸一化能有效解決這一問題。
3.2.5 檢測效果
用本文提出的改進模型檢測從FDDB 人臉數據庫中隨機抽取的一些圖像,這些圖像中存在人臉姿態(tài)不同、部分遮擋、人臉重疊、尺度較小、光照強度不同等情況,得到的檢測結果如圖4 所示。由圖4(a)可以看出,改進的模型能夠很好地檢測出不同姿態(tài)的人臉。由圖4(b)和圖4(d)可以看出,對于部分被遮擋的人臉,改進的模型也能很好地檢測出且置信度較高。由圖4(c)可以看出,改進的模型也能很好地適應光照條件不同的自然場景下的人臉檢測。由圖4(e)可以看出(右上方),對于人臉重疊的情況以及人臉尺度較小的情況,改進的模型也具有一定的魯棒性。
圖4 改進Faster-RCNN 的人臉檢測效果
本文針對自然場景人臉檢測問題,提出一種改進的Faster-RCNN 模型。以殘差網絡ResNet-50 作為主干網絡提取圖像特征,采用多尺度特征圖融合策略檢測小尺度人臉,并將在線難例樣本挖掘方法加入網絡訓練,從而提高對困難樣本的檢測精度。在此基礎上,利用軟非極大值抑制方法解決人臉目標重疊的問題,并引入多尺度訓練策略進一步提升模型的檢測精度與檢出率。實驗結果表明,該模型對自然場景下的人臉檢測有較好的效果,其在Wider Face數據集上的檢測精度為89.0%,在FDDB 數據集上的檢出率為95.6%,平均每張圖像的檢測時間為0.29 s。后續(xù)將進一步優(yōu)化網絡結構以更準確地提取圖像人臉特征,同時適當輕量化主干網絡,縮短檢測時間。