賀懷清,王 進,惠康華,陳 琴
(中國民航大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,天津 300300)
人臉檢測作為相關(guān)人臉問題[1-3]的基礎(chǔ),一直以來都是計算機視覺領(lǐng)域熱門研究方向。隨著深度學(xué)習(xí)的發(fā)展,開始出現(xiàn)許多基于卷積神經(jīng)網(wǎng)絡(luò)的人臉檢測算法,Li等[4]提出了級聯(lián)的卷積神經(jīng)網(wǎng)絡(luò)算法一定程度上解決了傳統(tǒng)方法在開放場景對光照等環(huán)境因素敏感的問題。Zhang等[5]提出了多任務(wù)級聯(lián)的檢測算法與人臉關(guān)鍵點檢測聯(lián)合訓(xùn)練。通用目標(biāo)檢測算法經(jīng)常被應(yīng)用到人臉檢測領(lǐng)域,比如Jiang等[6]將通用目標(biāo)檢測算法Faster R-CNN[7]應(yīng)用到人臉檢測中取得很好的檢測效果。
上述采用的都是兩階段方法(two-stage),主要分為兩個步驟:候選區(qū)域提取和候選區(qū)域特征判斷。這一類方法主要特點是檢測準(zhǔn)確率高,但是速度方面有所欠缺。后來出現(xiàn)了端到端的單階段方法(one-stage),比如Najibi等[8]提出根據(jù)不同卷積層的感受野大小不同實現(xiàn)多尺度的檢測,檢測精度雖然較兩階段類方法有所下降,但是檢測速度提高了許多。在通用目標(biāo)檢測中比較經(jīng)典的one-stage方法是Redmon等[9]提出的YOLO。
雖然YOLO具有檢測速度快,誤檢率低和泛化能力強的優(yōu)勢,但直接應(yīng)用在人臉中存在問題。由于網(wǎng)格劃分的尺度單一,對多尺度人臉的檢測效果不夠理想,召回率不夠高;另外,YOLO本質(zhì)思想是將檢測問題轉(zhuǎn)變?yōu)榛貧w問題,單一尺度的檢測使得人臉的定位不準(zhǔn)確;最后,YOLO算法是針對通用目標(biāo)檢測的算法,更多考慮的是類間的分離而忽略了類內(nèi)的聚合,導(dǎo)致類內(nèi)距離可能會大于類間距離而降低檢測的準(zhǔn)確度。
針對以上問題,本文提出基于YOLO的多尺度并行人臉檢測算法(multi-scale parallel face detection algorithm based on YOLO, MPYOLO)。首先,MPYOLO具有由密集到稀疏的多尺度的網(wǎng)絡(luò)結(jié)構(gòu)能夠兼顧多種尺寸的人臉,從而提高檢測的召回率;多尺度網(wǎng)絡(luò)使得同一張人臉檢測得到的定位框增多,求取平均增加人臉定位的準(zhǔn)確度;其次,采用基于生產(chǎn)者消費者模型的并行檢測算法,保證了時間開銷與YOLO持平;最后,引入中心聚合的思想,將中心損失函數(shù)(center loss)[10]與YOLO損失函數(shù)聯(lián)合訓(xùn)練,降低類內(nèi)的距離,進一步提高網(wǎng)絡(luò)的分類性能。
YOLO主要思想是將輸入圖片劃分成s×s個網(wǎng)格,每個網(wǎng)格負(fù)責(zé)預(yù)測m個邊界框,則一幅圖的候選區(qū)域最多為s×s×m個。如果檢測目標(biāo)的中心落在某個網(wǎng)格中,那么這個網(wǎng)格就負(fù)責(zé)預(yù)測回歸這個目標(biāo),如圖1所示,人臉框efgh的中心o落在了網(wǎng)格abcd中,則網(wǎng)格abcd負(fù)責(zé)回歸預(yù)測出人臉。YOLO省去了two-stage方法中耗時的候選區(qū)域提取的步驟,提高了檢測速度,但由于網(wǎng)格劃分的尺度單一性,使得YOLO方法的召回率不夠高。另外,YOLO采用回歸方式定位人臉位置,速度雖然有所提升,但是定位準(zhǔn)確性要比two-stage方法中采用搜索方式定位方法要差些。
圖1 YOLO網(wǎng)格劃分
YOLO采用單一尺度存在召回率低的問題,召回率計算方法見式(1)
(1)
式中:TP(true positive)指正樣本中預(yù)測為正的數(shù)量,F(xiàn)N(false negative)為正樣本中預(yù)測為負(fù)的數(shù)量,YOLO召回率低是因為有些人臉沒有檢測到,TP值較低。如圖2(a)所示,當(dāng)人臉尺寸較小且距離較近時候,多個人臉的中心點就會落到同一個網(wǎng)格中。如果一個網(wǎng)格只負(fù)責(zé)預(yù)測兩個邊界框,則最終只能檢測到其中兩個人臉。如果將網(wǎng)格進一步細(xì)分,比如劃分成8×8,如圖2(b)所示就可以將距離近的小尺寸人臉劃分開。人臉中心將落到不同的網(wǎng)格中就能夠被檢測到,TP值提升,從而提高檢測的召回率。
圖2 不同網(wǎng)格劃分
當(dāng)檢測大尺寸人臉時,如果采用密集的網(wǎng)格劃分,如圖3所示,人臉中心點落到了候選框ABCD,則需要以候選框ABCD去回歸預(yù)測真實的邊界框EFGH,候選框與真正的邊界框差距較大,這樣導(dǎo)致YOLO對大尺寸人臉的定位不準(zhǔn)確,因此只采用密集的網(wǎng)格劃分,難以滿足實際的需求。
圖3 密集網(wǎng)格劃分
針對以上分析,本文提出由密集到稀疏的多尺度并行網(wǎng)絡(luò),結(jié)構(gòu)框架如圖4所示。對于一幅含有多個尺寸的人臉照片,采用多尺度的網(wǎng)絡(luò)來進行檢測,稀疏的網(wǎng)格劃分網(wǎng)絡(luò)對大尺寸人臉檢測效果良好,密集的網(wǎng)格劃分網(wǎng)絡(luò)對距離較近的小尺寸人臉檢測效果良好。
圖4 多尺度并行網(wǎng)絡(luò)結(jié)構(gòu)
圖4所示多尺度并行網(wǎng)絡(luò)結(jié)構(gòu)不僅提高了檢測的召回率,在一定程度上也提高了定位的準(zhǔn)確性。多尺度網(wǎng)絡(luò)結(jié)構(gòu)使得輸入圖片的同一個人臉可能會在不同尺度網(wǎng)絡(luò)中檢測出不同結(jié)果,如圖5(b)所示,兩個較細(xì)檢測框為兩種尺度下的兩個不同的檢測結(jié)果,經(jīng)過非極大值抑制求取平均合并后得到較粗的檢測框為多尺度網(wǎng)絡(luò)下檢測最終結(jié)果。在非極大值抑制過程中,對保留框與剔除框分別求取坐標(biāo)與寬高的加和平均值為最終的輸出結(jié)果。加和平均的結(jié)果由于是多個尺度網(wǎng)絡(luò)的檢測結(jié)果,比如圖5(a)所示的單尺度YOLO檢測定位要準(zhǔn)確。
圖5 單尺度與多尺度檢測結(jié)果對比
串行的多尺度網(wǎng)絡(luò)會使時間開銷增大,為了使檢測的速度與YOLO保持相同水平,MPYOLO采用基于生產(chǎn)者消費者模型的并行算法,具體算法見表1。多尺度網(wǎng)絡(luò)由串行變成并行工作,時間開銷由多個尺度網(wǎng)絡(luò)檢測的時間加和減少為單個尺度網(wǎng)絡(luò)檢測的時間,保證了YOLO在提高檢測性能的同時時間開銷不會大幅度增加。
表1 基于生產(chǎn)者消費者模型的并行檢測算法
YOLO損失函數(shù)采用的是平方和誤差,這種誤差的特點是誤差值大的將會變得更大從而增大不同誤差值之間的差距。平方和誤差損失函數(shù)作為神經(jīng)網(wǎng)絡(luò)的輸出層,有著計算方便的優(yōu)點,但是將隱藏層輸出值轉(zhuǎn)換成結(jié)果值時只考慮到了類間的分離,卻忽略了類內(nèi)的聚合問題。這樣導(dǎo)致的結(jié)果是類內(nèi)的距離可能比類間的距離還要大,如圖6(a)所示,類別1與類別2的類間距離比類內(nèi)距離還小。因此,引入中心聚合的思想,將類內(nèi)距離減小,如圖6(b)所示,相對的進一步增加了類間的區(qū)分度,提升檢測的性能。
圖6 中心聚合
為解決這一問題,本文在YOLO損失函數(shù)基礎(chǔ)上加入中心損失函數(shù),見式(2)
(2)
N表示所有樣本網(wǎng)格分塊總數(shù)量,xi表示第i(i=1,2,3,…,N) 個分塊全連接層之前的特征值,cyi表示第i個分塊的第yi個類別的中心。該公式有效地表示了類內(nèi)的變化,理想情況下,隨著深層特征的改變,應(yīng)該更新cyi, 換句話說,在每次迭代中需要考慮整個訓(xùn)練集并求取每個類的平均特征,實際中由于數(shù)據(jù)量巨大以及計算資源有限,這樣是不切實際的。因此,中心損失不能直接使用。
為解決這個問題,首先,不是基于整個訓(xùn)練集更新中心,而是基于小批量執(zhí)行更新。在每次迭代中,通過平均相應(yīng)類的特征來計算中心。其次,為了避免由少量錯誤標(biāo)記的樣本引起的大擾動,使用標(biāo)量α來控制中心值的學(xué)習(xí)率。c與Δc的更新表達(dá)式分別見式(3)和式(4)。最終采用標(biāo)準(zhǔn)隨機梯度下降進行優(yōu)化
(3)
式中:t表示迭代次數(shù)
(4)
其中
(5)
訓(xùn)練過程中,YOLO損失函數(shù)與中心損失函數(shù)結(jié)合,見式(6)
Lcls=LYOLO+λLc
(6)
標(biāo)量λ, 稱作懲罰系數(shù)用于平衡兩個損失函數(shù)。如果λ設(shè)置為0,YOLO損失函數(shù)則可以被認(rèn)為是這種聯(lián)合損失函數(shù)的一個特例。
本文實驗使用的計算機配置為ubuntu 16.04操作系統(tǒng),Intel Core i5處理器,內(nèi)存為8 GB,顯卡為NVIDIA GeForce GTX 745,開發(fā)環(huán)境使用的是Pycharm。
CelebA[11],它是香港中文大學(xué)提供的人臉數(shù)據(jù)集,包括10 177個名人身份,總共202 599個人臉。這些人臉圖像覆蓋多姿態(tài),多角度以及復(fù)雜的背景。CelebA數(shù)據(jù)集的特點是大部分圖像都只包含一張人臉,這樣在訓(xùn)練的時候可以確保一個網(wǎng)格中只能落入一個人臉的中心,使得對人臉的特征學(xué)習(xí)更加充分。
FDDB[12]是非常具有挑戰(zhàn)性的人臉檢測數(shù)據(jù)集,一共包含了2845張圖片,人臉總數(shù)達(dá)到5171個。這些人臉?biāo)尸F(xiàn)的狀態(tài)多樣,包括遮擋、罕見姿態(tài)、低分辨率以及失焦的情況,該數(shù)據(jù)集是評價人臉檢測算法的權(quán)威數(shù)據(jù)集。
從CelebA數(shù)據(jù)集中隨機選取15 000張作訓(xùn)練集。如圖7 所示為7×7網(wǎng)格劃分的訓(xùn)練網(wǎng)絡(luò)結(jié)構(gòu)圖,引入中心損失函數(shù)后,為了進一步增加網(wǎng)絡(luò)的分類能力在YOLO網(wǎng)絡(luò)卷積層最后一層后面增加一層參數(shù)為512的全連接層,同時為了防止過擬合,在最后輸出層之前增加dropout層。其它尺度的網(wǎng)格劃分的訓(xùn)練網(wǎng)絡(luò)與圖7結(jié)構(gòu)類似。圖7中 YOLO 卷積層的具體的網(wǎng)絡(luò)結(jié)構(gòu)參照文獻[9]。
圖7 訓(xùn)練網(wǎng)絡(luò)結(jié)構(gòu)
卷積層預(yù)訓(xùn)練參數(shù)使用YOLO網(wǎng)絡(luò)全連接層的前24層網(wǎng)絡(luò)參數(shù),這些參數(shù)在CoCo[13]數(shù)據(jù)集上取得了63.4%的平均準(zhǔn)確率。中心損失函數(shù)學(xué)習(xí)率設(shè)置為0.1,懲罰系數(shù)設(shè)置為0.1,將輸入圖片調(diào)整成448×448大小分別訓(xùn)練不同網(wǎng)格劃分的網(wǎng)絡(luò)。
本文在網(wǎng)格劃分為 {n×n|n=2,3,…,14} 做測試,其中7×7,10×10,14×14這3種網(wǎng)格劃分有較好的檢測結(jié)果。以7×7網(wǎng)格劃分的訓(xùn)練結(jié)果為例,如圖8所示。準(zhǔn)確率是評價分類器性能比較直觀的評價指標(biāo),本文每迭代5000次在訓(xùn)練集上進行測試。如圖8(a)所示,隨著迭代次數(shù)的增加,中心損失不斷優(yōu)化下降,最終趨于平穩(wěn)狀態(tài),此時在測試集上平均準(zhǔn)確度(average precision,AP)也不斷上升最終趨于飽和狀態(tài),趨近于1,表明訓(xùn)練的網(wǎng)絡(luò)已經(jīng)具備很強的分類能力。整體損失值同樣也隨著迭代次數(shù)的增加不斷優(yōu)化下降最終趨于平穩(wěn)狀態(tài),同樣AP值也不斷上升最終趨于飽和狀態(tài),趨近于1,如圖8(b)所示。
圖8 中心損失與整體損失的訓(xùn)練優(yōu)化
2.3.1 多尺度與單尺度方法對比
從CelebA數(shù)據(jù)集中隨機選取5000張圖片組成測試集。采用7×7,10×10,14×14這3種尺度的并行網(wǎng)絡(luò)結(jié)構(gòu)與單尺度7×7的YOLO方法進行測試,得到受試者工作特征曲線(receiver operating characteristic curve,ROC)對比如圖9所示。ROC曲線越靠近點(0,1),分類器檢測性能就越好;繪制ROC曲線時閾值不固定,也體現(xiàn)了分類器的泛化性能,越靠近點(0,1)分類器泛化性能越好。圖9所示多尺度網(wǎng)絡(luò)結(jié)構(gòu)的曲線要比YOLO單尺度的曲線更靠近點(0,1),這是因為多尺度網(wǎng)絡(luò)相對于單尺度的YOLO方法對數(shù)據(jù)集中不同尺寸的人臉有更強的檢測能力。稀疏的單尺度網(wǎng)絡(luò)對小尺寸人臉檢測性能不理想,但在多尺度中不僅保留有稀疏的網(wǎng)絡(luò),還存在密集的網(wǎng)絡(luò)可以提高對小尺寸的人臉檢測效果,因此多尺度的網(wǎng)絡(luò)結(jié)構(gòu)檢測性能和泛化性能都要優(yōu)于單尺度的YOLO。如圖9所示,采用本文多尺度結(jié)構(gòu)的YOLO在橫坐標(biāo)相同的情況下,縱坐標(biāo)要比單尺度YOLO的曲線高,也就是召回率高。
圖9 單尺度與多尺度YOLO的ROC對比
圖10 單尺度YOLO有無中心損失ROC對比
2.3.2 無中心損失對比
圖10所示為在7×7網(wǎng)格劃分下迭代55 000次YOLO算法有無引入中心損失后的ROC曲線,可以看到,引入中心損失后,ROC曲線要高于YOLO方法的曲線,也就是說在FP(false positive)相同的情況下,引入中心損失后的召回率要比YOLO方法要高,要更靠近左上角,分類性能有所提高。引入中心損失函數(shù)后,訓(xùn)練過程中人臉的特征被不斷聚合,不同人臉之間的差距不斷地減小,不同的人臉不斷地向著中心聚集,如此一來,最終人臉之間的聯(lián)系會變得更加緊密,相對的人臉與背景的差異就會變得明顯,因此網(wǎng)絡(luò)的分類性能會有所提高。
在ROC圖中當(dāng)兩條曲線交叉的時候無法直接看出哪一條曲線性能更佳,引入AUC(area under curve)值,它可以根據(jù)曲線右下方面積占比計算得出,AUC值越大,對應(yīng)的分類器性能越好。從第1次迭代到55 000次迭代每隔5000次在測試集上測試,繪制出單尺度YOLO有無引入中心損失AUC對比,如圖11所示。從圖中可以看出,開始的時候加入中心損失的AUC值要比原方法要低,這是因為訓(xùn)練開始階段,訓(xùn)練不夠充分,一定程度上破壞了類內(nèi)特征之間的聯(lián)系,特征的聚合還不足以去彌補。隨著迭代次數(shù)的增加達(dá)到兩條曲線交點30 000次迭代左右時,類內(nèi)距離開始小于類間距離,這時中心損失開始起作用,類內(nèi)距離不斷減小,分類性能不斷提高。從圖中兩條曲線的走勢可以看出,YOLO方法AUC值基本保持平穩(wěn)狀態(tài),加入了中心損失后AUC值呈現(xiàn)上升的趨勢,這也正是特征不斷中心聚合的過程,類內(nèi)聚合越緊密,相對的類間的距離越大,分類器分類效果越好。
為了更加直觀展示中心聚合后的效果,迭代55 000次后用5000個樣本的卷積層最后一層的特征的平均數(shù)與中位數(shù)畫出散點圖。圖12(a)和圖12(b)分別為未引入中心損失與引入中心損失的對比圖??梢钥吹?,加入中心損失后,散點圖更加集中,特征聚合程度要明顯高于未加入的YOLO算法。加入中心損失后類內(nèi)的距離減小了,使得類內(nèi)特征更加緊密,相對的類間的距離增大,這樣提高了網(wǎng)絡(luò)的分類性能。
圖11 單尺度YOLO有無中心損失AUC對比
圖12 特征聚合對比
2.3.3 人臉定位對比
為了比較兩種方法定位的準(zhǔn)確性,本文計算檢測到人臉的邊界框與真實人臉邊界框的平均交并比(intersection over union,IoU),平均交并比越大表明檢測結(jié)果與真實人臉邊界框重疊區(qū)域越大,定位也就越準(zhǔn)確。對比結(jié)果見表2。從表中可以看出,本文的方法平均IoU要比YOLO方法大。這是因為不同尺度的網(wǎng)絡(luò)都有可能準(zhǔn)確地檢測到人臉的一部分,對最終的檢測結(jié)果都有所貢獻,如果采用YOLO單純地剔除重疊框的策略就會忽略不同尺度網(wǎng)絡(luò)對檢測結(jié)果所做出的貢獻,在一定程度會導(dǎo)致定位的不夠準(zhǔn)確,而本文采用的策略是將不同尺度網(wǎng)絡(luò)檢測結(jié)果非極大值抑制的同時加和求取平均,這樣考慮到了不同尺度網(wǎng)絡(luò)的檢測結(jié)果,因此正如表2結(jié)果所示,加入了多尺度網(wǎng)絡(luò)后定位的準(zhǔn)確性要高于YOLO方法。
表2 平均IoU對比結(jié)果
2.3.4 整體結(jié)果對比
為了進一步驗證本文方法的有效性,在FDDB數(shù)據(jù)集上與YOLO進行對比。不失一般性地選取FP為1106,從準(zhǔn)確率、召回率以及檢測速度3個方面與YOLO進行對比,結(jié)果見表3。從表中可以看出,本文方法在FDDB上的準(zhǔn)確率和召回率要優(yōu)于YOLO方法。本文方法采用多尺度的網(wǎng)絡(luò)結(jié)構(gòu),對于差異大的多尺寸人臉圖片要比YOLO敏感,因此能夠在FDDB數(shù)據(jù)集上發(fā)揮多尺度的優(yōu)勢,檢測出更多尺寸的人臉。
表3 FDDB數(shù)據(jù)集對比結(jié)果
圖13為幾張在FDDB上隨機選取的實際檢測結(jié)果對比圖,白色邊框為YOLO方法檢測的得到的最終結(jié)果,黑色邊框為本文檢測結(jié)果??梢钥吹结槍Χ嘟嵌榷嘧藨B(tài)的人臉,本文方法的檢測結(jié)果相比于YOLO與實際的大小和位置更加吻合。
圖13 FDDB數(shù)據(jù)集檢測效果對比
為了進一步驗證本文方法的優(yōu)勢所在,本文選取目前主流的Face R-CNN[14]和最新的DSFD[15]從準(zhǔn)確率、召回率以及平均檢測速度3種具體數(shù)值指標(biāo)進行比較,結(jié)果見表4。從結(jié)果可以看到,本文方法的準(zhǔn)確率和召回率相比于YOLO都有所提高。由于本文采用了生產(chǎn)者消費者模型的并行檢測方式,檢測速度基本與YOLO持平。從實驗結(jié)果,可以看出雖然MPYOLO在檢測效果上與Face R-CNN和DSFD稍微有所差距,但是檢測速度有著明顯的優(yōu)勢。另外,MPYOLO的模型相比于Face R-CNN和DSFD要簡單,易于實現(xiàn)并且應(yīng)用。
表4 CelebA測試集對比結(jié)果
本文基于YOLO方法進行改進,提出了多尺度并行的檢測網(wǎng)絡(luò),多尺度網(wǎng)絡(luò)結(jié)構(gòu)能夠充分學(xué)習(xí)到不同尺度的人臉特征,提高多尺寸人臉的檢測效果。在減小時間開銷上,采用了基于生產(chǎn)者消費者模型的并行檢測算法,將多個尺度網(wǎng)絡(luò)檢測時間縮短為單尺度網(wǎng)絡(luò)的檢測時間。此外,引入中心損失函數(shù),能夠減小類內(nèi)距離,使人臉特征聯(lián)系更加緊密,進一步提高網(wǎng)絡(luò)的分類性能。實驗結(jié)果表明,MPYOLO的召回率有所提高,準(zhǔn)確率也有所提高,人臉定位的準(zhǔn)確性也有所提高,同時速度仍然保持與YOLO的相同水平。本文在對人臉圖片或者視頻處理方面有著良好的應(yīng)用價值。在今后的研究中會從其它方面進一步優(yōu)化MPYOLO模型,爭取能夠更快更準(zhǔn)地檢測并定位人臉。