宋傳旗
關(guān)鍵詞:人臉識別;雙向特征金字塔網(wǎng)絡(luò)BiFPN;YOLOv5;檢測精度
0 引言
深度學(xué)習(xí)在人工智能領(lǐng)域獲得發(fā)展與廣泛應(yīng)用,如自動翻譯、人臉識別等智能化技術(shù)都離不開深度學(xué)習(xí)。基于深度學(xué)習(xí)的目標(biāo)檢測劃分為單階段目標(biāo)檢測和兩階段目標(biāo)檢測。兩階段目標(biāo)檢測步驟通過特征提取與目標(biāo)檢測兩個部分來完成;而單階段目標(biāo)檢測則是將上述步驟合二為一來完成。兩階段目標(biāo)檢測算法以R-CNN[1]、FastR-CNN[2]為代表,需要先進(jìn)行區(qū)域選擇,再進(jìn)行分類;單階段目標(biāo)檢以YOLO[3]、SSD[4]算法為代表,是將區(qū)域選擇和分類合并到同一個網(wǎng)絡(luò)結(jié)構(gòu)中,共同構(gòu)建出以“分類+回歸”為基礎(chǔ)框架的多任務(wù)模型。
本文利用開源人臉數(shù)據(jù)集WiderFace[5]作為訓(xùn)練數(shù)據(jù)集,通過改進(jìn)YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)中的Neck 部分,彌補(bǔ)原始YOLOv5 算法中特征金字塔網(wǎng)絡(luò)(featurepyramid networks)FPN+PAN[6]特征融合結(jié)構(gòu)缺少原始信息的缺點(diǎn),利用BiFPN[7]的特征融合思想,減少卷積過程中特征信息的丟失,提升算法的檢測精度。
1 YOLOv5 目標(biāo)檢測算法
1.1 YOLOv5 系列算法概述
YOLO 系列算法是應(yīng)用于目標(biāo)檢測的深度神經(jīng)網(wǎng)絡(luò)模型。該系列算法模型可劃分為兩個任務(wù)部分:一是對檢測目標(biāo)分類,二是對檢測目標(biāo)的位置確認(rèn)。
YOLOv5 的高性能且易于使用的特點(diǎn),使其在目標(biāo)檢測領(lǐng)域運(yùn)用更加廣泛。本文以YOLOv5s 模型來展開人臉檢測算法研究,圖1 為YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)示意圖。從圖1 可以看出YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)主要由四部分組成,分別是Input(輸入端)、Backbone(基準(zhǔn)網(wǎng)絡(luò))、Neck、Prediction(輸出網(wǎng)絡(luò))。
1.2 YOLOv5 算法的網(wǎng)絡(luò)結(jié)構(gòu)
首先Inpu(t 輸入端)是輸入原始數(shù)據(jù)圖像,圖像大小為608*608,在該階段使用Mosaic 數(shù)據(jù)增強(qiáng)的方式以及自適應(yīng)錨框、自適應(yīng)的圖片縮放對原始圖像進(jìn)行預(yù)處理,這種方式豐富了數(shù)據(jù),提升了對小目標(biāo)檢測能力。
Backbone(基準(zhǔn)網(wǎng)絡(luò))使用Focus 模塊實(shí)現(xiàn)了快速下采樣,該模塊能夠在沒有信息丟失的情況下將信息集中到通道上,使接下來的特征提取更加充分。SPP模塊的使用則提高了圖像的尺度不變性,有效增加了主干特征的接收范圍,更容易使網(wǎng)絡(luò)收斂,提高了準(zhǔn)確率。
Neck 網(wǎng)絡(luò)結(jié)構(gòu)采用FPN+PAN 結(jié)構(gòu),F(xiàn)PN 層向下采樣,不斷縮小圖像,通過融合高低層特征提升目標(biāo)檢測的效果,后面添加PAN 結(jié)構(gòu)向上采樣,充分利用網(wǎng)絡(luò)淺層特征進(jìn)行分割,頂層也可以接收底層帶來的豐富位置信息。
Prediction(輸出網(wǎng)絡(luò))用于完成目標(biāo)檢測結(jié)果的輸出,為評價對象定位算法是否精準(zhǔn),YOLOv5 采用損失函數(shù)GIOU[8]計(jì)算,以及采用非最大抑制算法把GIOU_Loss貢獻(xiàn)值不是最大的其他預(yù)測結(jié)果去掉,輸出概率最大的分類結(jié)果通過分析YOLOv5 算法模型的原理以及網(wǎng)絡(luò)結(jié)構(gòu),發(fā)現(xiàn)在針對人臉檢測識別過程中,對小模型和超小模型的數(shù)據(jù)檢測結(jié)果不精確。因此我們將BiFPN(Bidirectional Feature Pyramid Network,雙向加權(quán)特征金字塔網(wǎng)絡(luò))特征融合結(jié)構(gòu)引入YOLOv5 算法,在特征提取網(wǎng)絡(luò)中加入小目標(biāo)檢測層,提取淺層的物理信息來加強(qiáng)對小目標(biāo)的檢測能力。
2 YOLOv5 改進(jìn)
2.1 BiFPN 頭部特征融合網(wǎng)絡(luò)
YOLOv3 采用的如圖2(a) 所示,F(xiàn)PN 特征融合結(jié)構(gòu)本質(zhì)上受到單向信息流的限制。從上到下傳輸特征信息,并通過上采樣和低級別特征融合高級別特征,以獲得用于預(yù)測的特征圖。YOLOv4 和YOLOv5采用的如圖2(b)所示結(jié)構(gòu),PAN 特征融合結(jié)構(gòu)增加了一個額外的自下而上的路徑聚合網(wǎng)絡(luò),它將淺層定位信息傳輸?shù)缴顚?,并在多個尺度上增強(qiáng)定位能力。谷歌大腦團(tuán)隊(duì)提出的BiFPN 特征融合結(jié)構(gòu)如圖2(c)所示。他們將雙向(自下而上和自上而下)路徑視為特征網(wǎng)絡(luò)層,并多次重復(fù)同一層以實(shí)現(xiàn)更高級別的特征融合。他們在此結(jié)構(gòu)的基礎(chǔ)上提出了名為EfficientDet 的目標(biāo)檢測算法,和同時期的其他目標(biāo)檢測算法如YOLOv3、MaskRCNN、NAS-FPN 等相比,在準(zhǔn)確率、檢測速度和運(yùn)算量上EfficientDet 均是一枝獨(dú)秀,從圖3 可以看到詳細(xì)的實(shí)驗(yàn)數(shù)據(jù)對比圖。
2.2 Neck 部分的改進(jìn)
隨著YOLO 算法的發(fā)展,EfficientDet 算法的性能已經(jīng)比不上YOLOv4 和YOLOv5,但是它提出的BiFPN 特征融合結(jié)構(gòu)卻值得我們參考,所以我們將BiFPN 特征融合結(jié)構(gòu)融入到Y(jié)OLOv5 算法,改進(jìn)后的YOLOv5 結(jié)構(gòu)中的Neck 層的網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。
YOLOv5 中的PANet 通過自頂向下和自底向上的路徑聚合實(shí)現(xiàn)了較好的多尺度特征融合結(jié)果, 但計(jì)算量較大,且自底向上特征融合階段的輸入特征中并沒有主干網(wǎng)絡(luò)生成的原始輸出特征,如圖4 所示。BiFPN 采用跨連接去除PANet 中對特征融合貢獻(xiàn)度較小的節(jié)點(diǎn),在同一尺度的輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)間增加一個跳躍連接,在不增加較多成本的同時,融合了更多的特征。在同一特征尺度上,把每一個雙向路徑看作一個特征網(wǎng)絡(luò)層, 并多次反復(fù)利用同一層,以實(shí)現(xiàn)更高層次的特征融合。
算法改進(jìn)后,PAN 結(jié)構(gòu)每個結(jié)點(diǎn)的輸入邊都有一條是來自主干特征提取網(wǎng)絡(luò)部分的原始特征層,訓(xùn)練過程有了原始特征信息的持續(xù)參與,就可以有效避免訓(xùn)練學(xué)習(xí)過程偏離人們的期望,特征融合也更加合理有效,從而使得檢測精度有所提升。
3 實(shí)驗(yàn)與結(jié)果分析
3.1 實(shí)驗(yàn)環(huán)境
為了驗(yàn)證YOLOv5Face算法在人臉檢測和識別中的效果,本次實(shí)驗(yàn)在Ubuntu16.04 操作系統(tǒng)下完成軟件平臺搭建和實(shí)驗(yàn),GPU選用NVIDIAGeForceGTX1660Ti ,軟件工具:prcharm2022.1社區(qū)版、Anaconda3、python3.7、Pytorch1.11.0、tensorflow-gpu1.8.1、cuda10.2。
3.2 實(shí)驗(yàn)數(shù)據(jù)集
本文的實(shí)驗(yàn)研究數(shù)據(jù)選用了WiderFace 的公開人臉數(shù)據(jù)集,其中包含了393703 個人臉圖像,為了更好的檢測識別功能,有利于對模型準(zhǔn)確率的檢測,其數(shù)據(jù)集中的所有圖像均具備明顯的差別。本次實(shí)驗(yàn)選用的WiderFace 的公開人臉數(shù)據(jù)集由61 個事件進(jìn)行類別劃分,其中每組事件選取其中80% 圖像為訓(xùn)練集,剩余20% 為測試集。算法網(wǎng)絡(luò)進(jìn)行了30 次迭代訓(xùn)練,為了加快訓(xùn)練速度并防止過擬合,初始學(xué)習(xí)率設(shè)置為0.001,學(xué)習(xí)率衰減系數(shù)設(shè)置為0.0001,權(quán)值衰減系數(shù)設(shè)置為0.0005。
3.3 實(shí)驗(yàn)評判標(biāo)準(zhǔn)
在目標(biāo)檢測當(dāng)中,通常使用精確率(precision)、召回率(recall)、PR 曲線、平均精度(average precision,AP)和多個類平均精度(mean average precision,mAP)來作為評價指標(biāo),平均精度與精確率和召回率有關(guān)。式⑴為精確率公式,式⑵為召回率計(jì)算公式。
其中,TP 代表被正確檢測出來的目標(biāo)數(shù)量;FP 代表檢測錯誤的目標(biāo)數(shù)。TP 和FP 作為分母說明準(zhǔn)確度在主觀上評判預(yù)測的效果好壞。FN 則代表未被檢測出來的目標(biāo)數(shù)。TP 和FN 作為分母說明召回率在客觀程度評判預(yù)測效果好壞[9]。Precision 代表預(yù)測正確的正樣本個數(shù)與預(yù)測為正樣本個數(shù)的比值,Recall 則代表獲得判定樣本占總樣本數(shù)的比重。
3.4 實(shí)驗(yàn)結(jié)果與分析
本文首先使用改進(jìn)前的YOLOv5 對WiderFace 數(shù)據(jù)集的訓(xùn)練集和驗(yàn)證集上進(jìn)行30 個迭代周期的訓(xùn)練和驗(yàn)證,訓(xùn)練結(jié)果曲線圖中可見,其中橫向坐標(biāo)的迭代次數(shù)為30,則表示其中有30 個訓(xùn)練迭代周期,縱坐標(biāo)其中Box 是BoundingBox 的GIoU 損失函數(shù)均值,值越小邊界框就越準(zhǔn);Precision 代表分類器所衡量的正類;Recall 則是正類中被正確預(yù)測的正確率;Objectness是目標(biāo)檢測loss 均值,越小代表目標(biāo)檢測的正確率越高。一般主要觀察Recall 和Precision 的波動情況判斷網(wǎng)絡(luò)的訓(xùn)練效果,通過改進(jìn)后與改進(jìn)前的Recall 和Precision 的數(shù)值通過圖6 與圖7 對比,可知改進(jìn)后檢測準(zhǔn)確度更高,網(wǎng)絡(luò)的訓(xùn)練效果更好。圖8 與圖9 是WiderFace 數(shù)據(jù)集的訓(xùn)練結(jié)果對比。
為了驗(yàn)證Neck部分改進(jìn)的有效性,將原始YOLOv5算法中的FPN+PAN 結(jié)構(gòu)改為本文提出的權(quán)重的BiFPN 結(jié)構(gòu),其余部分保持不變,然后將其與原始YOLOv5 算法在WiderFace 數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)對比,實(shí)驗(yàn)結(jié)果統(tǒng)計(jì)如表1 所示。
基于上述圖9 中可以看出,通過改進(jìn)Neck 部分,使得算法在少量增加計(jì)算量和參數(shù)量的情況下,YOLOv5 訓(xùn)練算法的人臉識別精準(zhǔn)度達(dá)到91.2%,比改進(jìn)前增加1.2 個百分點(diǎn),召回率達(dá)到83.5%,比改進(jìn)前增加0.9 個百分點(diǎn),檢測速度也有所加快,所進(jìn)行的訓(xùn)練集試驗(yàn)中均可實(shí)現(xiàn)目標(biāo)的有效識別,說明該改進(jìn)在一定程度上加強(qiáng)了Neck 部分的特征融合,證明了該改進(jìn)方法的有效性。
4 結(jié)束語
本文通過改進(jìn)YOLOv5 的Neck 部分網(wǎng)絡(luò)結(jié)構(gòu),將BiFPN 特征融合結(jié)構(gòu)引入YOLOv5 算法,采用使PAN結(jié)構(gòu)每個結(jié)點(diǎn)的輸入邊都有一條是來自主干特征提取網(wǎng)絡(luò)部分的原始特征層,訓(xùn)練過程有了原始特征信息的持續(xù)參與特征融合也更加合理有效,從而使得檢測精度有所提升。基于文中的實(shí)驗(yàn)檢測分析結(jié)果來看,改進(jìn)后的YOLOv5 能夠增強(qiáng)小尺度人臉的快速精準(zhǔn)識別的準(zhǔn)確度,也因此判定在司機(jī)疲勞檢測中該算法具有極高的可行性。后續(xù)將結(jié)合車載攝像頭進(jìn)行人臉疲勞檢測,更精確的識別人臉面部器官的變化來實(shí)現(xiàn)對列車司機(jī)的疲勞監(jiān)控。