任小康,劉行行
(西北師范大學(xué)計算機(jī)科學(xué)與工程學(xué)院,甘肅 蘭州 730070)
隨著深度學(xué)習(xí)目標(biāo)檢測算法的不斷改進(jìn)和優(yōu)化,研究人員通過研究網(wǎng)絡(luò)深度、卷積核大小和特征尺度,構(gòu)造出不同的卷積神經(jīng)網(wǎng)絡(luò)并取得了較好的成果。Girshick等人[1]提出了區(qū)域卷積神經(jīng)網(wǎng)絡(luò)R-CNN(Region-Convolutional Neural Network),在分類任務(wù)中將選擇性搜索與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合,有效地避免了滑動窗口和窮舉法產(chǎn)生的冗余候選區(qū)域。Fast R-CNN[2]在R-CNN基礎(chǔ)上加入了空間金字塔池化SPP(Spatial Pyramid Pooling)[3],實現(xiàn)了多尺度輸入。由于Fast R-CNN使用選擇性搜索篩選候選框非常耗時,研究人員在其基礎(chǔ)上加入了區(qū)域候選網(wǎng)絡(luò)RPN(Region Proposals Network),構(gòu)建了Faster R-CNN[4],檢測速度大幅提升。與上述3種神經(jīng)網(wǎng)絡(luò)不同,Redmon等人[5]于2016年提出了YOLO(You Only Look Once),將目標(biāo)檢測作為一個簡單的回歸問題進(jìn)行求解,以圖像像素作為輸入,邊界框坐標(biāo)和類別概率作為輸出,即只需檢測1遍圖像就能預(yù)測出物體的類別和位置。由于YOLO存在大量定位誤差且召回率較低,以YOLO為基礎(chǔ)的YOLOv2[6]在每個卷積層中加入批歸一化BN(Batch Normalization)層[6],顯著改善了收斂效果并有助于網(wǎng)絡(luò)模型正則化。在YOLOv2算法的基礎(chǔ)上,對數(shù)據(jù)集進(jìn)行融合,Redmon等人[6]又提出了一個實時檢測算法,能識別超過9 000類對象,該算法被稱為YOLO9000。YOLOv3[7]以YOLOv9000為基礎(chǔ),采用Darknet-53作為主干網(wǎng)絡(luò)并使用多尺度融合進(jìn)行預(yù)測,進(jìn)一步提高了速度和精確度。當(dāng)今主流目標(biāo)檢測算法主要分為2類:一類是雙步目標(biāo)檢測算法,這類算法先通過選擇性搜索算法或RPN網(wǎng)絡(luò)等獲得候選區(qū)域,然后再通過分類器進(jìn)行分類,如Fast R-CNN、Faster R-CNN和Mask-RCNN[8]等;另一類是單步目標(biāo)檢測算法,這類算法的特點是將提取候選區(qū)域和分類融合到一個網(wǎng)絡(luò)中,通過卷積核計算類別分?jǐn)?shù)和位置偏差,如YOLO、YOLOv9000和YOLOv3等。單步目標(biāo)檢測算法的檢測速度普遍高于雙步目標(biāo)檢測算法,但檢測準(zhǔn)確率和定位精確度不如雙步目標(biāo)檢測算法。
雖然國內(nèi)疫情基本穩(wěn)定,但全球疫情仍很嚴(yán)峻。因此,出入公共場所仍需佩戴口罩。為減輕防疫人員的工作量,本文提出了一種改進(jìn)網(wǎng)絡(luò)模型Face_mask Net,用于檢測公共場所人群是否佩戴口罩。
Face_mask Net以YOLOv3算法為基礎(chǔ),首先對殘差塊進(jìn)行改進(jìn),增加了少量計算量以提高目標(biāo)檢測精確度;其次,為了減少網(wǎng)絡(luò)模型計算量并提高訓(xùn)練速度,引入了跨階段局部網(wǎng)絡(luò)CSPNet(Cross Stage Partial Network)[9],并將改進(jìn)后的殘差塊與CSPNet模塊進(jìn)行融合,替換掉3個尺度上的殘差塊;接著,采用距離交并比DIoU(Distance-IoU)損失函數(shù)[10]以取代交并比IoU(Intersection over Union)損失函數(shù)[11],并將NMS(Non-Maximum Suppression)分類器[12]替換為DIoU-NMS[10],DIoU與DIoU-NMS相結(jié)合用于抑制冗余候選框,提高對遮擋目標(biāo)的檢測效果;最后,對網(wǎng)絡(luò)跨尺度融合部分進(jìn)行改進(jìn),以減少不同尺度融合所造成的特征損失。
YOLOv3算法中的損失函數(shù)為IoU損失函數(shù)。IoU值表示錨框與目標(biāo)框的交集、并集的比值,IoU 損失函數(shù)如式(1)所示:
(1)
其中,Bgt代表目標(biāo)框,B代表錨框。當(dāng)目標(biāo)框和錨框重疊或不相交時,LIoU為0,這時無法判斷目標(biāo)框和錨框是相交還是重疊,且不相交時無法回傳梯度。為提高YOLOv3算法對遮擋目標(biāo)檢測的魯棒性,本文采用DIoU 損失函數(shù),替換原本的IoU損失函數(shù)。
DIoU是在IoU基礎(chǔ)上添加了中心點歸一化距離,如式(2)所示,公式中不僅考慮了目標(biāo)框與錨框的重疊面積,還考慮了目標(biāo)框與錨框之間的中心點距離。
(2)
其中,b和bgt分別代表錨框和目標(biāo)框的中心點,ρ代表錨框與目標(biāo)框中心點的歐氏距離,c代表可以同時覆蓋錨框和目標(biāo)框最小矩形的對角線距離。由于DIoU 損失函數(shù)能夠直接最小化2個目標(biāo)框之間的距離,因此收斂速度要比廣義交并比GIoU(Generalized Intersection over Union)損失函數(shù)[13]快。
由于YOLOv3算法訓(xùn)練的網(wǎng)絡(luò)模型對小目標(biāo)檢測精確度不高,本文網(wǎng)絡(luò)模型Face_mask Net在13*13尺度特征提取過程中融入了SPP模塊。如圖1所示,SPP模塊具有4個并行分支,主要由3個最大池化層和1個跳躍連接組成,其中3個最大池化層的卷積核大小分別為5*5,9*9和13*13。SPP模塊實現(xiàn)了局部特征和全局特征的融合,融合后的特征圖具有更豐富的表達(dá)能力,適用于檢測目標(biāo)存在較大差異的情況。圖1展示了SPP模塊的具體組成,其中DBL(Darknetconv2d_BN_Leaky)是YOLOv3算法的基本組件,由卷積層、BN和Leaky激活函數(shù)組成。
在傳統(tǒng)NMS中,IoU指標(biāo)用于抑制冗余預(yù)測框,對于遮擋情況經(jīng)常會產(chǎn)生錯誤抑制。DIoU-NMS算法將DIoU作為NMS抑制冗余預(yù)測框的準(zhǔn)則,該準(zhǔn)則不僅要考慮重疊區(qū)域,還要考慮目標(biāo)框和錨框的中心點距離。對于得分最高的預(yù)測框M,可以將DIoU-NMS算法的得分(si)更新公式定義如式(3)所示:
(3)
(4)
式(4)為DIoU 損失函數(shù)的懲罰項,用于最小化目標(biāo)框和錨框中心點之間的歸一化距離。式(3)中si是分類得分,ε是NMS閾值,M是得分最高的錨框。通過同時考慮IoU和懲罰項來移除其他錨框Bi,篩選出最佳錨框。
深度卷積神經(jīng)網(wǎng)絡(luò)在圖像分類應(yīng)用中取得了一系列突破。該類網(wǎng)絡(luò)將低級、中級、高級特征和分類器以端到端多層方式進(jìn)行集成,特征的“級別”可以通過堆疊層的數(shù)量即深度來豐富。普通網(wǎng)絡(luò)(Plain Network)思想主要來自視覺幾何組VGG(Visual Geometry Group)[14],隨著層數(shù)的增加,精確度逐漸飽和,然后迅速退化。其中,退化是指隨著網(wǎng)絡(luò)深度增加,精確度不增反降的現(xiàn)象。這種退化并不是由于過度擬合造成的。從理論上分析,網(wǎng)絡(luò)深度越深越好,但實際上,如果沒有殘差網(wǎng)絡(luò),對于普通網(wǎng)絡(luò)來說,深度越深意味著網(wǎng)絡(luò)越難訓(xùn)練。殘差網(wǎng)絡(luò)ResNet(Residual Network)[15]可以解決上述問題,即使網(wǎng)絡(luò)再深,網(wǎng)絡(luò)性能也不會衰減。其次,它還有助于解決梯度消失和梯度爆炸等問題。
殘差塊的主要設(shè)計包括2部分:快捷連接和恒等映射。快捷連接是可以跳過一層或多層的連接,它簡單地執(zhí)行恒等映射,并將其輸出添加到堆疊層的輸出,圖2a中弧線箭頭表示快捷連接,卷積層間的箭頭表示恒等映射。快捷連接能夠有效處理反向傳播過程中出現(xiàn)的梯度消失問題,這有助于深層網(wǎng)絡(luò)的訓(xùn)練。YOLOv3殘差塊只有2層,如圖2a所示,由1*1的瓶頸層、3*3的深度卷積層和快捷連接組成,瓶頸層和深度卷積層通過恒等映射連接。為提高YOLOv3檢測小目標(biāo)的準(zhǔn)確率,本文對處理13*13特征圖的殘差塊進(jìn)行了優(yōu)化。首先,在原來3*3深度卷積層下增加了1*1逐點卷積層,瓶頸層負(fù)責(zé)減小和恢復(fù)特征圖維數(shù),使深度卷積層成為輸入或輸出維數(shù)較小的瓶頸,即形成“瓶頸結(jié)構(gòu)”,該結(jié)構(gòu)的作用是增加網(wǎng)絡(luò)深度的同時提高網(wǎng)絡(luò)準(zhǔn)確性。其次,在快捷連接上增加了1*1逐點卷積層,目的是實現(xiàn)特征圖不同通道之間的信息通信并進(jìn)一步提高準(zhǔn)確性,如圖2b所示。
YOLOv3在13*13尺度特征圖處理上使用了4個殘差塊,本文則使用了2個改進(jìn)后的殘差塊,目的是在不降低檢測準(zhǔn)確率的同時盡量減少參數(shù)量。在處理13*13尺度特征圖上,未改進(jìn)前的YOLOv3殘差塊總參數(shù)量為(1*1*32*64+3*3*64*64)*4=155648,YOLOv3改進(jìn)后殘差塊總參數(shù)量為(1*1*32*64+3*3*64*64+1*1*64*2)*2=78080,改進(jìn)前后參數(shù)量總量降低了77 568。對比表1中第4組和第5組數(shù)據(jù)可發(fā)現(xiàn),使用Res_C殘差塊的網(wǎng)絡(luò)模型比未使用該模塊的YOLOv3-spp-C的平均準(zhǔn)確率均值mAP值提高了0.84%,這說明改進(jìn)后的網(wǎng)絡(luò)模型在降低殘差塊參數(shù)量的同時并未對網(wǎng)絡(luò)檢測準(zhǔn)確率造成負(fù)面影響。
當(dāng)神經(jīng)網(wǎng)絡(luò)變得更深、更寬時,其性能也將逐步變得強(qiáng)大。但是,神經(jīng)網(wǎng)絡(luò)的卷積層等基礎(chǔ)模塊數(shù)量也隨之增加,導(dǎo)致神經(jīng)網(wǎng)絡(luò)的計算量增多,最終影響神經(jīng)網(wǎng)絡(luò)檢測精確度。本文使用CSPNet模塊的主要目的是使網(wǎng)絡(luò)模型能夠?qū)崿F(xiàn)更豐富的梯度組合,同時減少網(wǎng)絡(luò)模型的計算量。該模塊將特征圖處理分為2步:第1步將基礎(chǔ)層的特征圖劃分為2個部分;第2步通過跨階段層次結(jié)構(gòu)將它們合并。通過分割梯度流,使梯度流通過不同的路徑傳播,如圖3所示。圖3a中的特征圖只經(jīng)過n個殘差塊和瓶頸層處理,而圖3b中則是將特征圖劃分成2部分,Part2特征圖經(jīng)過n個殘差塊和瓶頸層處理,Part1則是直接與處理后的Part2特征圖進(jìn)行連接,最終到達(dá)過渡層。由于只有一半的特征通過殘差塊,因此不再需要引入瓶頸層。圖3中2個模塊在每秒十億次浮點運(yùn)算BFLOPs(Billion FLoat Operations Per second)相同的情況下,圖3b模塊內(nèi)存訪問成本在理論上可以得到降低。劃分特征圖的目的是減少特征圖處理的計算量,同時可以保留部分特征圖的高層語義特征,提高網(wǎng)絡(luò)推理速度和準(zhǔn)確性。
本文引入CSPNet以增強(qiáng)YOLOv3的學(xué)習(xí)能力。CSPNet主要有3個優(yōu)點:(1)提升了網(wǎng)絡(luò)學(xué)習(xí)能力,在網(wǎng)絡(luò)輕量化后仍能保持足夠的準(zhǔn)確性;(2)改進(jìn)了殘差塊和過渡層的信息流,優(yōu)化了梯度反向傳播路徑,并為網(wǎng)絡(luò)每一層平均分配計算量,有效提高了每個計算單元的利用率,進(jìn)而減少不必要的能耗;(3)提升了網(wǎng)絡(luò)處理速度并降低了內(nèi)存占用率。在YOLOv3的基礎(chǔ)上,本文將Res_C融入到CSPNet中并替換3個尺度上的殘差塊,改進(jìn)后的CSP模塊命名為CSP_C,具體結(jié)構(gòu)如圖4所示。圖4a中DBL模塊是YOLOv3算法中的基本模塊,它由卷積層、批歸一化和Leaky激活函數(shù)組成,而ResN則是由DBL和N個殘差塊組成;圖4b由CSPNet模塊與N個Res結(jié)合而來;圖4c以CSPNet模塊為基礎(chǔ),在特征圖分流中增加了DBL模塊,目的是使劃分后Part1和Part2的特征圖維度、尺度保持一致,以提高網(wǎng)絡(luò)檢測精確度,減少參數(shù)量。
從表1中可以看出,第6組含有CSP_C模塊的本文網(wǎng)絡(luò)模型相比第5組不含有該模塊的網(wǎng)絡(luò)模型mAP值提高了1.07%。對比結(jié)果表明,改進(jìn)后的CSP模塊有助于提升網(wǎng)絡(luò)模型準(zhǔn)確率。
尺度縮小模型是將輸入圖像編碼設(shè)計為具有單調(diào)遞減分辨率的中間特征,該模型無法為檢測和定位任務(wù)提供足夠分辨率的特征。由于特征分辨率低,直接使用尺度縮小模型的頂層特征在檢測小物體方面效果不佳。多尺度編碼器-解碼器架構(gòu)可以有效解決該問題。將尺度縮小的網(wǎng)絡(luò)用作編碼器,通常將其稱為骨干模型。然后,將解碼器網(wǎng)絡(luò)應(yīng)用于骨干網(wǎng)以恢復(fù)其特征分辨率。解碼器網(wǎng)絡(luò)的設(shè)計與骨干模型完全不同。典型的解碼器網(wǎng)絡(luò)由一系列跨尺度連接組成,這些跨尺度連接將骨干網(wǎng)中的低層和高層特征組合在一起,以生成強(qiáng)大的多尺度特征圖。
Table 1 Comparison of ablation experimental results
YOLOv3骨干網(wǎng)DarkNet是典型的尺度縮小模型,該網(wǎng)絡(luò)中引入了特征金字塔網(wǎng)絡(luò)FPN(Feature Pyramid Network)[16],并采用3個不同尺度的特征圖檢測目標(biāo),3個尺度大小分別為13*13,26*26和52*52。對3個尺度檢測的特征圖進(jìn)行融合處理,可以在保留高層圖像語義信息的基礎(chǔ)上獲得更多的低層圖像特征信息,但跨尺度融合中會出現(xiàn)部分特征損失,如圖5a所示,13*13*512特征圖首先經(jīng)過上采樣處理成26*26*256特征圖,然后直接與26*26*512特征圖進(jìn)行相加操作,相加后得到26*26*768特征圖。最后使用1*1逐點卷積層處理得到26*26*256特征圖,該過程特征圖的維度從768下降到256,維度下降后部分特征會丟失,進(jìn)而對目標(biāo)檢測和定位產(chǎn)生影響。為減小該影響,本文對跨尺度融合進(jìn)行了改進(jìn),如圖5b所示,首先用3*3深度卷積和1*1逐點卷積層對26*26*512特征圖進(jìn)行降維處理,目的是使處理后的特征圖的分辨率和特征維度與目標(biāo)塊相匹配,然后將2個重新采樣后的輸入特征圖逐個相加合并,最后使用1*1逐點卷積層對26*26*512特征圖進(jìn)行處理,特征圖維度從處理前的512降低到256。相比YOLOv3算法訓(xùn)練得到的網(wǎng)絡(luò)模型,本文網(wǎng)絡(luò)模型在跨尺度融合時產(chǎn)生的特征丟失較少,降低了因跨尺度融合造成的不利影響。本文將改進(jìn)后的網(wǎng)絡(luò)模型命名為Frame_C。對比表1中YOLOv3-spp-C和YOLOv3-spp-DIoU的數(shù)值可以發(fā)現(xiàn),改進(jìn)后的網(wǎng)絡(luò)比改進(jìn)前的mAP值提高了0.46%。
本文所有網(wǎng)絡(luò)模型訓(xùn)練環(huán)境均為Linux系統(tǒng)下的Ubuntu 18.04.3 LTS,使用8 GB內(nèi)存的NVIDIA Tesla P4顯卡,且訓(xùn)練均采用darknet53.conv.74作為預(yù)訓(xùn)練權(quán)重,其中訓(xùn)練參數(shù)設(shè)定如下:初始學(xué)習(xí)率為0.001,再分割數(shù)量subdivisions為16,批大小為64,動量為0.9等。本文收集、標(biāo)記、匯總了口罩檢測數(shù)據(jù)集,并將其命名為Face_mask Dataset。該數(shù)據(jù)集由9 056幅不同地區(qū)行人的照片(如戴口罩行人和未戴口罩行人)組成,并使用LabelImg進(jìn)行標(biāo)注,如圖6所示。圖6a標(biāo)注了4個目標(biāo),其中最右側(cè)人臉為難負(fù)例,對應(yīng)xml文件的〈difficult〉為1。圖6b中的〈name〉為類名,〈bndbox〉為目標(biāo)框坐標(biāo)信息,〈truncated〉為圖像是否經(jīng)過縮放處理。
本文將該數(shù)據(jù)集劃分為2類:一類命名為face類,如未戴口罩和用手捂臉等非口罩遮擋臉部的人;另一類命名為face_mask類,即正確佩戴口罩的人。face類主要選自WIDER FACE[17]和MAFA[18]數(shù)據(jù)集,并從中挑選3 114幅圖像進(jìn)行重新標(biāo)注。face_mask類照片主要來自網(wǎng)絡(luò)爬蟲、行人戴口罩視頻截圖和RWMFD數(shù)據(jù)集[19],同樣對6 312幅圖像進(jìn)行重新標(biāo)注。Face_mask Dataset中樣本總數(shù)為9 056,隨機(jī)選取8 242幅組成訓(xùn)練集,814幅組成驗證集,91幅組成測試集。Face_mask Dataset由戴口罩正臉、側(cè)臉、人臉等圖像組成,其中主要增加了人、手等非目標(biāo)類遮擋口罩的圖像,如圖7所示,目的是增強(qiáng)數(shù)據(jù)集多樣性,提高網(wǎng)絡(luò)檢測遮擋目標(biāo)的魯棒性。
本文使用查準(zhǔn)率P(Precision)、召回率R(Recall)、平均準(zhǔn)確率AP(Average Precision)和平均準(zhǔn)確率均值mAP(mean Average Precision)作為評價網(wǎng)絡(luò)模型性能的指標(biāo),其定義分別如式(5)~式(8)所示:
(5)
(6)
(7)
(8)
其中,TP表示網(wǎng)絡(luò)模型正確檢測出目標(biāo)類(face類和face_mask類)的數(shù)量;FP表示網(wǎng)絡(luò)模型檢測中將非目標(biāo)類判定為目標(biāo)類的數(shù)量;FN表示樣本中存在目標(biāo)類,但未將其檢測出的數(shù)量。查準(zhǔn)率顯示網(wǎng)絡(luò)模型預(yù)測正確的結(jié)果的概率,而召回率則顯示目標(biāo)類被找出的概率。一般情況下,隨著召回率的上升,查準(zhǔn)率會呈下降趨勢。式(8)中N表示目標(biāo)類別的數(shù)量。通常AP是指單個類別的平均準(zhǔn)確率,而mAP是AP值在所有類別下的均值。為了更直觀地表示AP,本文引入了PR曲線,PR曲線所在的坐標(biāo)系中,橫坐標(biāo)表示召回率,縱坐標(biāo)表示查準(zhǔn)率,PR曲線下方的面積代表某個目標(biāo)類的AP值。
(1)消融實驗結(jié)果。
為分析不同網(wǎng)絡(luò)分支或模塊對整個網(wǎng)絡(luò)模型的影響,本文采用消融實驗對比衡量本文網(wǎng)絡(luò)模型的效果。根據(jù)式(6),表1中的mAP值由AP50、AP55、AP60、AP65、AP70、AP75、AP80、AP85、AP90取平均值得到。表1中第1列表示具有不同模塊的網(wǎng)絡(luò)模型,第1組是由YOLOv3算法訓(xùn)練的網(wǎng)絡(luò)模型;第2組是以DIoU作為損失函數(shù)、DIoU-NMS作為分類器的YOLOv3-DIoU;第3組為在YOLOv3-DIoU的基礎(chǔ)上加入了SPP模塊;第4組是在第3組的基礎(chǔ)上對網(wǎng)絡(luò)跨尺度融合部分進(jìn)行了改進(jìn);第5組是將前一組骨干網(wǎng)上的殘差塊替換為Res_C;第6組是將第5組的13*13殘差塊替換為改進(jìn)后的CSP_C模塊。
(2)PR曲線評估。
本文使用AP75對樣本進(jìn)行劃分,閾值高于75%的樣本為正例,小于75%的樣本為負(fù)例,進(jìn)而計算相應(yīng)的查準(zhǔn)率和召回率。根據(jù)召回率與查準(zhǔn)率呈反比的特點,PR曲線總體呈下降趨勢,PR曲線與坐標(biāo)軸圍成的封閉圖形面積越大,網(wǎng)絡(luò)模型分類效果就越好。本文繪制了AP75下的YOLOv3算法訓(xùn)練的網(wǎng)絡(luò)模型與本文網(wǎng)絡(luò)模型關(guān)于face、face_mask類的PR曲線,如圖8所示。從圖8a可以看出,虛線(Face_mask Net)與坐標(biāo)軸圍成的面積明顯大于實線(YOLOv3)與坐標(biāo)軸所圍成的面積,這表明Face_mask Net在face類上的分類效果優(yōu)于YOLOv3算法訓(xùn)練的網(wǎng)絡(luò)模型的。同樣,比較圖8b中2條曲線與坐標(biāo)軸圍成的面積可發(fā)現(xiàn),本文網(wǎng)絡(luò)模型在face_mask類上的分類效果也略優(yōu)于YOLOv3算法訓(xùn)練的網(wǎng)絡(luò)模型的。
圖9比較了3種網(wǎng)絡(luò)模型檢測正常人臉和戴口罩人臉的檢測準(zhǔn)確率,可以看出檢測未帶口罩目標(biāo)的準(zhǔn)確率均達(dá)到99%以上,但對戴口罩目標(biāo)的檢測準(zhǔn)確率存在差異,其中YOLOv3-C-Res_C比YOLOv3高了約0.5%和2.7%,主要原因是改進(jìn)后的殘差塊增強(qiáng)了網(wǎng)絡(luò)模型對目標(biāo)檢測的準(zhǔn)確率,尤其是戴口罩目標(biāo)。本文網(wǎng)絡(luò)模型與YOLOv3-C-Res_C相比,檢測戴口罩目標(biāo)和未戴口罩目標(biāo)的準(zhǔn)確率均提高了約1%。YOLOv3-C-Res_C與本文網(wǎng)絡(luò)模型的差異在于CSP_C模塊,該模塊使用了特征圖分流結(jié)構(gòu),在一定程度上優(yōu)化了網(wǎng)絡(luò)反向傳播,進(jìn)而提高了網(wǎng)絡(luò)模型檢測準(zhǔn)確率。從圖9中的AP值可以看出,CSP_C和Res_C模塊在一定程度上提高了網(wǎng)絡(luò)模型檢測戴口罩目標(biāo)的準(zhǔn)確率。
圖10比較了3種網(wǎng)絡(luò)模型檢測中、小尺度戴口罩目標(biāo)和人臉目標(biāo)的檢測效果。圖10a中YOLOv3可以檢測出小尺度的人臉目標(biāo),但漏檢了右側(cè)小尺度戴口罩目標(biāo)。YOLOv3漏檢小尺度目標(biāo)的主要原因是小目標(biāo)在圖像中所占像素少,經(jīng)過多層卷積處理之后得到的13*13尺度特征圖中的特征極不明顯。本文網(wǎng)絡(luò)模型改進(jìn)了13*13尺度特征處理中的殘差塊結(jié)構(gòu)并融合了CSPNet模塊,將原有的4個殘差塊縮減到2個殘差塊,既減少了卷積層數(shù)目,又減少了參數(shù)量,便于特征圖的分流。YOLOv3-C-Res_C能有效檢測出右側(cè)小尺度戴口罩目標(biāo),但未檢測出小尺度人臉目標(biāo)。本文網(wǎng)絡(luò)模型可以檢測出小尺度人臉和戴口罩目標(biāo),且對中尺度口罩目標(biāo)檢測準(zhǔn)確率維持在96%以上。3種網(wǎng)絡(luò)模型檢測結(jié)果對比可以得出,改進(jìn)后的殘差塊和CSP_C模塊提高了網(wǎng)絡(luò)模型檢測小目標(biāo)的能力。
圖11比較了3種網(wǎng)絡(luò)模型檢測小尺度戴口罩側(cè)臉目標(biāo)檢測效果,YOLOv3和YOLOv3-C-Res_C均只檢測出了2個正臉戴口罩目標(biāo),而Face_mask Net檢測出了另外2個小尺度戴口罩側(cè)臉目標(biāo)。由此可見,改進(jìn)后的CSP_C模塊增強(qiáng)了網(wǎng)絡(luò)模型檢測小尺度戴口罩側(cè)臉目標(biāo)的能力。
為驗證DIoU與DIoU-NMS相結(jié)合對嚴(yán)重遮擋目標(biāo)的檢測效果,圖12著重比較了YOLOv3與本文網(wǎng)絡(luò)模型。首先,檢測密集人群中戴口罩目標(biāo)被嚴(yán)重遮擋的效果,如圖12b和圖12c所示。從圖12a中可以看到,中間后排有位醫(yī)生被前面宣誓醫(yī)生的手擋住了面部,只露出下半部分口罩。YOLOv3漏檢了該目標(biāo),而本文網(wǎng)絡(luò)模型可以有效檢測出該目標(biāo),主要原因是DIoU與DIoU-NMS在選擇候選框時同時考慮了目標(biāo)框與錨框中心點之間的距離、重疊率及尺度,使得目標(biāo)框回歸變得更加穩(wěn)定,這樣可以有效避免目標(biāo)被嚴(yán)重遮擋時產(chǎn)生的錯誤抑制。
其次,檢測人臉目標(biāo)被嚴(yán)重遮擋效果,如圖13b和圖13c所示。從圖13a中可以看出,被嚴(yán)重遮擋的目標(biāo)有4個,但人眼能夠區(qū)別的遮擋目標(biāo)只有2個,一個是被電子溫度計遮擋的女子,另一個是該女子旁邊的戴口罩男子。比較圖13b和圖13c可發(fā)現(xiàn),本文網(wǎng)絡(luò)模型能夠檢測出被嚴(yán)重遮擋的人臉目標(biāo),但漏檢了被嚴(yán)重遮擋的戴口罩目標(biāo),主要原因是該目標(biāo)遮擋率超過了90%,在數(shù)據(jù)集標(biāo)注中屬于難負(fù)例,因而本文網(wǎng)絡(luò)模型不能有效檢測出該目標(biāo)。
為了進(jìn)一步測試Face_mask Net的檢測效率,本節(jié)以YOLOv2、YOLOv3-spp等主流單步目標(biāo)檢測算法訓(xùn)練的網(wǎng)絡(luò)模型作為參照,根據(jù)BFLOPs、每秒傳輸幀數(shù)FPS(Frames Per Second)等指標(biāo)綜合評價網(wǎng)絡(luò)模型性能。對比實驗在Face_mask Dataset數(shù)據(jù)集上進(jìn)行,測試環(huán)境為:AMD R7-4800H處理器,NVIDIA GeForce RTX 2060 6 GB顯卡,8 GB內(nèi)存,操作系統(tǒng)為Ubuntu 18.04,對比結(jié)果如表2所示。
Table 2 Comparison of performance indicators of different network models
對比表2數(shù)據(jù)可以發(fā)現(xiàn),本文網(wǎng)絡(luò)模型雖然在BFLOPs上略高于其他網(wǎng)絡(luò)模型,但準(zhǔn)確率上遠(yuǎn)比其他網(wǎng)絡(luò)模型高,且漏檢率低。本文網(wǎng)絡(luò)模型漏檢率低的原因是測試視頻中小目標(biāo)占比較高,由于改進(jìn)了網(wǎng)絡(luò)結(jié)構(gòu)和殘差塊,本文網(wǎng)絡(luò)模型漏檢小目標(biāo)的數(shù)量明顯小于其他網(wǎng)絡(luò)模型的。對比FPS,本文網(wǎng)絡(luò)模型比YOLOv3算法訓(xùn)練的網(wǎng)絡(luò)模型少了約1幀,主要原因是網(wǎng)絡(luò)模型的BFLOPs大小對GPU浮點運(yùn)算能力有一定影響。當(dāng)GPU浮點運(yùn)算能力固定時,BFLOPs值越大,網(wǎng)絡(luò)模型檢測視頻的FPS就越小。本文網(wǎng)絡(luò)模型由于BFLOPs較大,測試視頻的幀數(shù)會略有下降。表2中,YOLOv3-tiny由于結(jié)構(gòu)簡單,深度為23層,其中卷積層的數(shù)量明顯少于其他網(wǎng)絡(luò)模型的,因此FPS會較高,但檢測準(zhǔn)確率低于其他模型且漏檢率高。
本文提出了基于YOLOv3算法的改進(jìn)Fask_mask Net,著眼于解決小尺度佩戴口罩目標(biāo)檢測困難的問題。首先,為進(jìn)一步提高檢測準(zhǔn)確率,本文對殘差塊進(jìn)行了改進(jìn),改進(jìn)后的殘差塊相比改進(jìn)前的殘差塊在目標(biāo)檢測準(zhǔn)確率上有了一定程度的提高。其次,為減少網(wǎng)絡(luò)計算消耗并提高訓(xùn)練速度,本文引入了CSP模塊,并將改進(jìn)后的殘差塊與CSP模塊進(jìn)行融合,替換掉3個尺度上的殘差塊。再次,采用DIoU損失函數(shù)取代IoU損失函數(shù),并將NMS分類器替換為DIoU-NMS,DIoU與DIoU-NMS相結(jié)合抑制了冗余候選框,提高了對遮擋目標(biāo)的檢測效果。然后對網(wǎng)絡(luò)13*13,26*26和52*52跨尺度融合處進(jìn)行改進(jìn),減少了融合后特征的丟失。最后,在Face_mask Dataset數(shù)據(jù)集上進(jìn)行網(wǎng)絡(luò)模型有效性驗證和對比實驗。實驗結(jié)果表明,本文網(wǎng)絡(luò)模型可以有效提升復(fù)雜場景中口罩佩戴檢測的準(zhǔn)確率,AP75下的平均準(zhǔn)確率為58%,比改進(jìn)前的YOLOv3高了4.11%。在接下來的工作中,將繼續(xù)改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)并優(yōu)化網(wǎng)絡(luò)模型,以獲得更高的準(zhǔn)確率和更低的時間成本,還會繼續(xù)采集更多的真實場景圖像以擴(kuò)充現(xiàn)有的數(shù)據(jù)集,以便更好地應(yīng)用于防疫部門。