李文豪,周斌*,胡波,張子涵
(1中南民族大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,武漢 430074;2武漢市東信同邦信息技術(shù)有限公司,武漢 430074)
人臉檢測(cè)是一項(xiàng)非常重要的計(jì)算機(jī)視覺(jué)任務(wù),是目標(biāo)檢測(cè)中的一個(gè)重要分支[1].基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為兩類(lèi):一類(lèi)基于區(qū)域建議,一類(lèi)無(wú)區(qū)域建議.基于區(qū)域建議的目標(biāo)檢測(cè)算法主要有R-CNN、Fast R-CNN、Faster R-CNN等[2],這類(lèi)基于區(qū)域建議的目標(biāo)檢測(cè)算法分為兩個(gè)步驟,首先會(huì)基于目標(biāo)生成一系列候選框,然后再由卷積神經(jīng)網(wǎng)絡(luò)分類(lèi)和坐標(biāo)回歸.基于區(qū)域建議的目標(biāo)檢測(cè)算法準(zhǔn)確率較高,但模型參數(shù)往往過(guò)大且實(shí)時(shí)性也較差.無(wú)區(qū)域建議的目標(biāo)檢測(cè)算法主要有2016年REDMON等[3]提出的YOLOv1,將候選框生成過(guò)程和分類(lèi)回歸結(jié)合在一起,大大降低了神經(jīng)網(wǎng)絡(luò)的計(jì)算復(fù)雜度,但是相較于基于區(qū)域建議的兩階段法在準(zhǔn)確率上較低.2017年REDMON等又提出了YOLOv2和YOLOv3算法[4],通過(guò)加入先驗(yàn)框,在保證模型推理速度的同時(shí)提高了準(zhǔn)確率.2020年ALEXEY等人在YOLOv3的基礎(chǔ)上引入空間金字塔結(jié)構(gòu)(SPP)、跨階段殘差結(jié)構(gòu)(CSP)等模塊提出了YOLOv4,在平均精度均值(mAP)上提升了10%,在檢測(cè)速度FPS上提升了12%[5].
這些主流的目標(biāo)檢測(cè)算法往往需要高算力設(shè)備,但移動(dòng)設(shè)備以及嵌入式設(shè)備在算力上無(wú)法支撐起這類(lèi)復(fù)雜模型,為了設(shè)計(jì)出能更好滿足不同算力設(shè)備的高準(zhǔn)確率和實(shí)時(shí)性高的目標(biāo)檢測(cè)器,模型縮放技術(shù)十分重要[5].最直接的模型縮放技術(shù)是改變骨干特征提取網(wǎng)絡(luò)的深度和卷積層中卷積核的個(gè)數(shù),然后訓(xùn)練出適合于不同設(shè)備的骨干網(wǎng)絡(luò).例如,在ResNet系列網(wǎng)絡(luò)中,ResNet-152和ResNet-101通常部署在云服務(wù)GPU這種超高算力的設(shè)備上,而ResNet-50和ResNet-34通常部署在個(gè)人GPU上,低端的嵌入式設(shè)備通常采用的是ResNet-18和ResNet-10.高陽(yáng)等人利用多層特征融合使得Faster R-CNN檢測(cè)精度提升了2.2%[5].鞠默然等人在YOLOv3的基礎(chǔ)上將經(jīng)過(guò)8倍下采樣的特征層通過(guò)上采樣連接到4倍下采樣特征層,加強(qiáng)模型淺層特征對(duì)目標(biāo)的檢測(cè)能力[7].邵偉平等人為了實(shí)現(xiàn)網(wǎng)絡(luò)輕量化,將YOLOv3網(wǎng)絡(luò)的主干特征提取網(wǎng)絡(luò)替換成Mobilenet,使得模型參數(shù)大小降低了90%[8].
近年來(lái),一些精巧設(shè)計(jì)的網(wǎng)絡(luò)模型和算子被提出.HOWARD等設(shè)計(jì)出MobileNets,將卷積神經(jīng)網(wǎng)絡(luò)中的普通卷積替換為深度可分離卷積,大大降低了計(jì)算量和參數(shù)量[9].WANG等人提出了一種新的上采樣算子CARAFE,相較于傳統(tǒng)以插值為基礎(chǔ)的上采樣擁有更大的感受野,CARAFE算子使每個(gè)像素點(diǎn)能夠更好地利用周?chē)男畔ⅲ?0].CARAFE上采樣核基于輸入內(nèi)容上采樣,這使得上采樣核和特征圖的語(yǔ)義信息相關(guān).CARAFE不會(huì)引入過(guò)多的參數(shù),也不會(huì)帶來(lái)多余的計(jì)算量,模型實(shí)現(xiàn)更加輕量化.
2017年LIN等人提出了特征金字塔網(wǎng)絡(luò)FPN(Feature Pyramid Networks),通過(guò)將高語(yǔ)義信息的深層特征圖通過(guò)上采樣然后再橫向連接到高分辨率低語(yǔ)義的淺層特征圖上,加強(qiáng)了模型淺層特征對(duì)目標(biāo)檢測(cè)的能力[11].但FPN采用的是基于最近鄰插值法的上采樣,這樣會(huì)導(dǎo)致每個(gè)像素點(diǎn)無(wú)法很好地使用周?chē)袼攸c(diǎn)的信息.MISTRA在2019年提出了Mish激活函數(shù),計(jì)算量較LeakyRelu有略微增加,但是在最終精度上比LeakyRelu激活函數(shù)提升了1.671%[12].
綜合考慮計(jì)算量、參數(shù)量和模型推理速度,本文在YOLOv4-Tiny的基礎(chǔ)上提出YOLO-SD-Tiny,YOLO-SD-Tiny在主干特征提取網(wǎng)絡(luò)上將第五部分CSP-Body替換成基于Mish激活函數(shù)的MCSP-body,將第六部分CBL替換成CBM,使得信息可以更好地深入神經(jīng)網(wǎng)絡(luò).在特征金字塔網(wǎng)絡(luò)中將基于最近鄰插值的上采樣替換成基于CARAFE提出的SD(Self-DeConvolution),讓每個(gè)像素點(diǎn)可以更好地利用周?chē)畔?,并且減少計(jì)算量和參數(shù)量.最終實(shí)驗(yàn)結(jié)果表明,YOLO-SD-Tiny相較于YOLOv4-Tiny在遮擋人臉數(shù)據(jù)集OccludeFace上檢測(cè)速度提升了9.64%,AP提升了4.89%,在準(zhǔn)確率和實(shí)時(shí)性上有一定提升,可以更好地部署于算力較低的設(shè)備中,具有工程應(yīng)用價(jià)值.
YOLO-SD-Tiny模型圖見(jiàn)圖1.由圖1可見(jiàn)YOLO-SD-Tiny由主干特征提取網(wǎng)絡(luò)、FPN特征金字塔網(wǎng)絡(luò)和YOLO Head三部分組成.主干特征提取網(wǎng)絡(luò)用來(lái)提取信息;FPN特征金字塔網(wǎng)絡(luò)將深層特征圖上采樣然后橫向連接到淺層特征層,增強(qiáng)淺層目標(biāo)檢測(cè)能力;YOLO Head部分用來(lái)預(yù)測(cè).
圖1 YOLO-SD-Tiny網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 YOLO-SD-Tiny Network structure diagram
FPN也就是特征金字塔網(wǎng)絡(luò),是一種自上而下的特征融合方法[11].特征金字塔網(wǎng)絡(luò)采用的是自上而下的簡(jiǎn)單融合,也就是將更抽象,語(yǔ)義更強(qiáng)的高層特征圖上采樣,將上采樣得到的特征圖通過(guò)橫向連接至前一層特征圖.在將高層特征融合到淺層特征之后可以幫助淺層特征更好地檢測(cè)目標(biāo).傳統(tǒng)的上采樣是基于插值法,插值法無(wú)法利用特征圖語(yǔ)義信息,且感受野也很小.本文在CARAFE的基礎(chǔ)上提出Self-DeConvolution,簡(jiǎn)稱(chēng)SD.SD分為兩個(gè)模塊,第一個(gè)模塊是上采樣核預(yù)測(cè)模塊,第二個(gè)模塊是特征遍歷模塊.對(duì)于形狀為H×W×C的特征輸入圖F,給定整數(shù)上采樣率為σ,SD之后會(huì)得到一個(gè)形狀為σH×σW×C新的特征圖.對(duì)于輸出特征圖中的某一個(gè)點(diǎn)lt=(xt,yt),在輸入特征圖F中都可以找到一個(gè)點(diǎn)l=(x,y)與之相對(duì)應(yīng),其中x=將l的鄰域記為N(Fl,k).
上采樣核預(yù)測(cè)模塊中,首先通過(guò)1×1卷積將通道數(shù)壓縮到Cr.接下來(lái)通過(guò)卷積φ為lt基于輸入特征圖F預(yù)測(cè)一個(gè)與位置信息相關(guān)的核ωlt,在此階段參數(shù)為其中kencoder=karea-1,ωlt的計(jì)算如式(1):
然后再將得到的核ωlt通過(guò)加權(quán)求和算子reshape后得到.最終通過(guò)softmax歸一化核σH×σW×karea×karea使得核權(quán)重和為1.的計(jì)算見(jiàn)式(2):
上采樣核預(yù)測(cè)模塊整體流程如圖2所示.
圖2 上采樣核預(yù)測(cè)流程Fig.2 Upsampling kernel prediction process
特征遍歷模塊見(jiàn)圖3.對(duì)于在輸出特征層(上采樣核)的點(diǎn)lt,將其映射回輸入特征圖對(duì)應(yīng)的點(diǎn)l,取出以之為中心的karea×karea的區(qū)域,和預(yù)測(cè)出的該點(diǎn)的上采樣核做點(diǎn)積,得到輸出值.相同位置的不同通道共享同一個(gè)上采樣核.這樣對(duì)于特征輸入圖F中的一點(diǎn)l鄰域圖N(Fl,karea),在l的karea×karea區(qū)域每個(gè)像素點(diǎn)對(duì)輸出特征圖的貢獻(xiàn)不同,基于特征的內(nèi)容而不是位置的距離.這樣特征重組而來(lái)的特征圖語(yǔ)義可以比原始特征圖更強(qiáng),因?yàn)槊總€(gè)像素點(diǎn)都可以關(guān)注來(lái)自局部區(qū)域中相關(guān)點(diǎn)的信息.
圖3 特征遍歷流程Fig.3 Feature traversal process
激活函數(shù)可以完成神經(jīng)元輸入到輸出的非線性變化,對(duì)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練有重要意義.神經(jīng)網(wǎng)絡(luò)常采用的激活函數(shù)有Sigmoid、Tanh、ReLU、LeakyReLU等[13],但它們都有一定的缺陷.以ReLU激活函數(shù)為例,當(dāng)輸入為負(fù)的時(shí)候,梯度會(huì)變?yōu)榱?,從而?dǎo)致梯度消失;LeakyReLU激活函數(shù)接受負(fù)值輸入時(shí),允許輕微的負(fù)梯度,在一定程度上避免了輸入為負(fù)所帶來(lái)梯度消失的影響.Mish激活函數(shù)于2019年提出[12],Mish激活函數(shù)計(jì)算見(jiàn)式(3).
Mish激活函數(shù)的取值范圍為[≈-0.31,+∞].Mish激活函數(shù)與LeakyReLU激活函數(shù)曲線的對(duì)比見(jiàn)圖4.由圖4可見(jiàn),Mish激活函數(shù)在取值范圍上允許存在輕微負(fù)值和沒(méi)有設(shè)置最大值帶來(lái)了效果更好的梯度流.神經(jīng)網(wǎng)絡(luò)的輸入在經(jīng)過(guò)平滑的激活函數(shù)映射后可以讓信息更好地深入網(wǎng)絡(luò),得到更好的準(zhǔn)確率.
圖4 Mish和LeakyRelu的比較Fig.4 Comparison of Mish and LeakyRelu
YOLO-SD-Tiny的損失函數(shù)分為三個(gè)部分,分別為置信度損失、分類(lèi)損失和邊界框回歸損失.采用CIOU損失函數(shù)來(lái)作為邊界框回歸損失[5].IOU指的是預(yù)測(cè)框和真實(shí)框的交集和并集的比值,作為邊界框回歸準(zhǔn)確程度的衡量標(biāo)準(zhǔn)[14],IOU,CIOU計(jì)算見(jiàn)式(4)和式(5):
其中,B為預(yù)測(cè)框,Bgt為真實(shí)框.
其中,α為權(quán)重函數(shù),v是用來(lái)衡量邊界框的長(zhǎng)寬比的參數(shù)見(jiàn)式(6):
在分類(lèi)損失方面,引入GHM(gradient harmonizing mechanism)損失用來(lái)解決正負(fù)樣本不平衡的問(wèn)題和特別難分的樣本(離群點(diǎn))的問(wèn)題[15].離群點(diǎn)的梯度模長(zhǎng)d要比一般的樣本大很多,如果模型被迫去關(guān)注這些樣本,反而可能會(huì)降低模型準(zhǔn)確率.為了同時(shí)衰減易分樣本和特別難分的樣本提出梯度密度GD(g),計(jì)算見(jiàn)式(7):
其中,δε(gk,g)表明在樣本1-N中,梯度模長(zhǎng)分布在范圍內(nèi)的樣本個(gè)數(shù),lε(g)代表了區(qū)間的長(zhǎng)度.因此梯度密度GD(g)的物理含義就是單位梯度模長(zhǎng)g所處部分的樣本總數(shù).接下來(lái),使用交叉熵和該樣本梯度密度的倒數(shù)作乘法就可以得到GHM損失,計(jì)算見(jiàn)式(8):
其中N是樣本總數(shù),公式(9)是二元交叉熵?fù)p失,p∈[0,1]是模型預(yù)測(cè)的概率,p*∈{0,1}是某個(gè)類(lèi)別的真實(shí)標(biāo)簽.
YOLO-SD-Tiny的損失函數(shù)在邊界框回歸損失采用CIOU損失來(lái)加快邊界框回歸速度,在分類(lèi)損失采用GHM損失來(lái)解決正負(fù)樣本不平衡的問(wèn)題以及特別難分的樣本(離群點(diǎn))的問(wèn)題.
當(dāng)以416×416為輸入的時(shí)候,YOLO-SD-Tiny的整體網(wǎng)絡(luò)模型見(jiàn)圖1.由圖1可見(jiàn),YOLO-SD-Tiny分為三個(gè)部分,主干特征提取網(wǎng)絡(luò),特征金字塔網(wǎng)絡(luò)和YOLO Head.主干特征提取網(wǎng)絡(luò)由兩個(gè)CBL、兩個(gè)CSP-Body、一個(gè)MCSP-Body和CBM構(gòu)成.CBL代表卷積(Convolution)、批量歸一化(Batch Normalization)和LeakyReLU激活函數(shù),CBM是將CBL中激活函數(shù)替換成Mish激活函數(shù).CSP-Body由三個(gè)CBL結(jié)構(gòu)和一個(gè)Maxpool組成,CSP-Body將上一層傳遞過(guò)來(lái)的特征圖劃分為兩個(gè)部分,然后通過(guò)跨階段層次結(jié)構(gòu)將它們組合起來(lái).CSP-Body通過(guò)殘差結(jié)構(gòu)可以增強(qiáng)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,在保證神經(jīng)網(wǎng)絡(luò)精度不損失的同時(shí)減少內(nèi)存占用以及降低計(jì)算量[5].MCSP-Body將CSP-Body中的CBL結(jié)構(gòu)替換成基于Mish激活函數(shù)的CBM結(jié)構(gòu),使得信息更好地流入網(wǎng)絡(luò).FPN模塊采用SD上采樣,減小計(jì)算量和參數(shù)量.
YOLO-SD-Tiny目標(biāo)檢測(cè)整體過(guò)程:首先需要用S×S個(gè)網(wǎng)格劃分輸入圖像,這S×S個(gè)網(wǎng)格中每個(gè)網(wǎng)格僅僅負(fù)責(zé)預(yù)測(cè)中心點(diǎn)落在該網(wǎng)格中的目標(biāo),并計(jì)算出3個(gè)預(yù)測(cè)框,每個(gè)預(yù)測(cè)框?qū)?yīng)5+C個(gè)值;其中,C表示數(shù)據(jù)集中類(lèi)別總數(shù),5表示預(yù)測(cè)邊界框中心點(diǎn)坐標(biāo)(x,y)、預(yù)測(cè)框?qū)捀叱叽?w,h)和置信度.然后,求解網(wǎng)絡(luò)預(yù)測(cè)的類(lèi)別置信度,其與目標(biāo)落入網(wǎng)格的概率P(nobject)、網(wǎng)格預(yù)測(cè)第i類(lèi)目標(biāo)的精度P(nclass|nobject)、交并比(IOU)有關(guān),表達(dá)式見(jiàn)式(10):
若目標(biāo)中心落入該網(wǎng)格,則P(nobject)=1,否則為0;為預(yù)測(cè)框和真實(shí)框之間的交并比.最后,使用DIOU NMS[16]篩選出得分最高的預(yù)測(cè)框作為目標(biāo)檢測(cè)框,輸出特征圖分別為26×26、13×13,從而實(shí)現(xiàn)目標(biāo)的定位和分類(lèi).
制作OccludeFace數(shù)據(jù)集基于WIDER FACE[17].根據(jù)人密集程度、遮擋程度、背景復(fù)雜程度選取1500張圖像,然后對(duì)采集到的數(shù)據(jù)樣本進(jìn)行旋轉(zhuǎn)、拼接等數(shù)據(jù)增廣處理,最終獲得3000張圖像,隨機(jī)選取90%圖像用作訓(xùn)練集,10%圖像作為測(cè)試集.
當(dāng)前在目標(biāo)檢測(cè)領(lǐng)域有多種性能評(píng)估指標(biāo),本文采用最為廣泛使用的準(zhǔn)確率(Precision)和召回率(Recall)來(lái)評(píng)估模型,計(jì)算公式見(jiàn)式(11)、(12):
其中準(zhǔn)確率P是用來(lái)評(píng)估預(yù)測(cè)結(jié)果的,式(11)中TP(True Positive)表示模型把正樣本正確地預(yù)測(cè)為正樣本的個(gè)數(shù),F(xiàn)P(False Positive)表示被預(yù)測(cè)為正樣本的負(fù)樣本個(gè)數(shù);召回率是用來(lái)評(píng)估樣本的,表示的是全部樣本中有多少正樣本被正確地預(yù)測(cè)了,F(xiàn)N(False Negative)表示模型把原本是正樣本的輸入預(yù)測(cè)為了負(fù)樣本.
AP表示單個(gè)類(lèi)別在不同置信度閾值下Precision和Recall構(gòu)成的PR曲線與坐標(biāo)所圍成的面積,綜合考慮了準(zhǔn)確率和召回率,對(duì)單類(lèi)目標(biāo)檢測(cè)的識(shí)別效果評(píng)價(jià)較為全面.FPS為模型一秒可以檢測(cè)的圖像數(shù)量,F(xiàn)PS值越大說(shuō)明模型的檢測(cè)速度越快.
使用Pytorch深度學(xué)習(xí)框架搭建實(shí)驗(yàn)環(huán)境,通過(guò)RTX2060 6GB顯卡進(jìn)行GPU加速,具體環(huán)境如表1所示.
表1 實(shí)驗(yàn)環(huán)境配置單Tab.1 Experimental environment configuration sheet
遷移學(xué)習(xí)可以運(yùn)用已有的知識(shí)來(lái)學(xué)習(xí)新的知識(shí),核心問(wèn)題就是找到已有知識(shí)和新知識(shí)之間的相似性.在OccludeFace數(shù)據(jù)集與PASCAL VOC2007[18]數(shù)據(jù)集之間存在著相似性,因此可以利用PSCAL VOC2007數(shù)據(jù)集先行訓(xùn)練網(wǎng)絡(luò),然后將訓(xùn)練好的參數(shù)通過(guò)遷移學(xué)習(xí)的方式運(yùn)用到OccludeFace數(shù)據(jù)集上,這樣就可以解決OccludeFace數(shù)據(jù)集數(shù)據(jù)量較小的問(wèn)題.具體做法就是將整體網(wǎng)絡(luò)通過(guò)VOC2007數(shù)據(jù)集訓(xùn)練,然后在OccludeFace訓(xùn)練的時(shí)候就可以凍結(jié)主干特征提取網(wǎng)絡(luò)來(lái)加快訓(xùn)練速度.
設(shè)置輸入為416×416,總迭代次數(shù)total_epoch為100,凍結(jié)主干特征提取網(wǎng)絡(luò)freeze_epoch為50,凍結(jié)訓(xùn)練的batch_size為4,初始學(xué)習(xí)率lr為0.001,未凍結(jié)訓(xùn)練的epoch為50,batch_size為2,初始學(xué)習(xí)率lr為0.0001.YOLO-SD-Tiny和YOLOv4-Tiny訓(xùn)練loss見(jiàn)圖5.
圖5 訓(xùn)練損失比較Fig.5 Training loss comparison
將本文算法與YOLOv4-Tiny在數(shù)據(jù)集OccludeFace上做對(duì)比分析.同時(shí)對(duì)YOLO-SD-Tiny(with MCSP-Body)和YOLO-SD-Tiny(with GHM&CIOU)做消融實(shí)驗(yàn)(圖6),驗(yàn)證不同模塊對(duì)模型的影響,實(shí)驗(yàn)結(jié)果見(jiàn)表2.由表2可見(jiàn),引入基于Mish激活函數(shù)的MCSP-Body相較于YOLOv4-Tiny在AP上提升了0.51%,說(shuō)明梯度不會(huì)消失且平滑的激活函數(shù)可以使信息更好地深入網(wǎng)絡(luò),從而提升檢測(cè)準(zhǔn)確率.在分類(lèi)損失部分引入GHM損失和在邊界框回歸部分引入CIOU損失的YOLO-SD-Tiny相較于原始的YOLOv4-Tiny模型在AP上提升了1.61%,說(shuō)明綜合考慮了重疊面積、中心點(diǎn)和縱橫比的CIOU和解決了正負(fù)樣本不平衡和難分樣本的GHM損失可以增加模型的檢測(cè)準(zhǔn)確率.YOLO-SD-Tiny相較于YOLOv4-Tiny在AP上提升了4.89%,檢測(cè)速度FPS上提升了9.64%.綜合表2中各種實(shí)驗(yàn)數(shù)據(jù)對(duì)比,可以驗(yàn)證本文所提出的改進(jìn)方法可以有效提高人臉檢測(cè)精度和檢測(cè)速度(圖7).
圖7 實(shí)驗(yàn)檢測(cè)結(jié)果對(duì)比Fig.7 Comparison of experimental test results
表2 實(shí)驗(yàn)結(jié)果對(duì)比Tab.2 Comparison of experimental results
圖6 消融實(shí)驗(yàn)結(jié)果對(duì)比Fig.6 Comparison of ablation experiment results
本文針對(duì)目標(biāo)檢測(cè)模型過(guò)大而導(dǎo)致在低性能設(shè)備上無(wú)法部署,實(shí)時(shí)性差等問(wèn)題,提出YOLO-SDTiny模型.在主干特征提取網(wǎng)絡(luò)部分引入基于Mish激活函數(shù)MCSP-Body,讓信息可以更好地流入網(wǎng)絡(luò).在特征金字塔網(wǎng)絡(luò)部分引入SD模塊來(lái)加快特征融合的速度和感受野.通過(guò)實(shí)驗(yàn)結(jié)果分析可以看出,在OccludeFace數(shù)據(jù)集上本文所提出的YOLO-SDTiny相較于YOLOv4-Tiny在AP提升了4.89%,檢測(cè)速度提升了9.64%,具有一定的工程應(yīng)用價(jià)值.