曾 成,蔣 瑜,張尹人
(1.成都信息工程大學(xué) 軟件工程學(xué)院,四川 成都 610000;2.武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢 430081)
M_YOLOv3是在YOLOv3[1]算法上進(jìn)行改進(jìn),用于快速檢測(cè)市民口罩佩戴情況的一種目標(biāo)檢測(cè)算法。在目標(biāo)檢測(cè)算法的發(fā)展中,過(guò)去以級(jí)聯(lián)分類器Cascade算法最為常見(jiàn),近年來(lái)深度學(xué)習(xí)發(fā)展迅速,在目標(biāo)檢測(cè)領(lǐng)域也有了許多突破。目前,基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法主要有兩種,一種是兩階段目標(biāo)檢測(cè)算法,例如:Fast R-CNN[2]、Faster RCNN[3]、Mask Rcnn[4]等,此種算法精度高,但是時(shí)效性較差,不適用于行人流量較大時(shí)的檢測(cè)。另一種是單階段目標(biāo)檢測(cè)算法,例如:SSD[5]、YOLO[6]、YOLOv2[7],此類方法檢測(cè)速度快,但識(shí)別物體的精準(zhǔn)度偏低。目前來(lái)看YOLOv3較好地平衡了檢測(cè)精度與時(shí)效性,將不同尺度的特征圖進(jìn)行融合,使用邏輯回歸代替全連接softmax的方法來(lái)分類,最后進(jìn)行邊框回歸,預(yù)測(cè)出目標(biāo)物體的位置和大小。
YOLOv3算法的缺點(diǎn)是對(duì)小目標(biāo)物體檢測(cè)效果不夠完美,而口罩正好屬于小目標(biāo)物體范疇內(nèi)。對(duì)此,改進(jìn)算法M_YOLOv3采用了增添一個(gè)預(yù)測(cè)通道的方法來(lái)解決此類問(wèn)題。具體方法如下:首先在特征提取網(wǎng)絡(luò)Darknet_D的淺層特征圖中進(jìn)行分支處理,隨后進(jìn)行Batch_normalization,接著和深層網(wǎng)絡(luò)提取的特征相融合,重構(gòu)類特征金字塔,在其底部額外增添一層結(jié)構(gòu),在金字塔底部使用最大的一組先驗(yàn)框作為目標(biāo)物體預(yù)測(cè)框進(jìn)行回歸計(jì)算[8]。
在卷積神經(jīng)網(wǎng)絡(luò)的理論中,特征圖越大,神經(jīng)網(wǎng)絡(luò)感受野越小,對(duì)特征的敏感度越高[9]。因此增添淺層網(wǎng)絡(luò)特征圖作為額外預(yù)測(cè)通道這一做法,能夠更好捕捉小目標(biāo)物體,例如口罩。實(shí)驗(yàn)選取的數(shù)據(jù)集來(lái)自網(wǎng)絡(luò),包括了4000余張圖片以及上萬(wàn)個(gè)口罩目標(biāo)。在基于上述數(shù)據(jù)集的實(shí)驗(yàn)中,改進(jìn)后的M_YOLOv3的mAP值比原YOLOv3算法提高了7.2。
目前基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法中,大多數(shù)主流算法都可分為主干網(wǎng)絡(luò)、尺寸變換和檢測(cè)器3個(gè)部分。主干網(wǎng)絡(luò)負(fù)責(zé)提取圖片數(shù)據(jù)的特征,尺寸變化則對(duì)提取到的特征進(jìn)行融合傳遞給檢測(cè)器,檢測(cè)器對(duì)處理后的數(shù)據(jù)進(jìn)行計(jì)算,預(yù)測(cè)出目標(biāo)物體的類別及其位置等信息,YOLOv3算法也恰好由這3部分構(gòu)成。
目標(biāo)檢測(cè)算法首先會(huì)選用一個(gè)特征提取網(wǎng)絡(luò)來(lái)處理圖片信息。YOLOv3在基于往期的YOLO系列特征提取網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上,額外采用了類似殘差網(wǎng)絡(luò)Resblock結(jié)構(gòu),多次使用了步長(zhǎng)為3×3、1×1卷積層,以及部分shortcut通道,構(gòu)建了如圖1所示的Darknet-53網(wǎng)絡(luò)。這個(gè)網(wǎng)絡(luò)主要是一些卷積、池化、殘差互相的堆積復(fù)用,其結(jié)構(gòu)共有53個(gè)卷積層,如圖1所示。

圖1 YOLOv3使用的Darknet-53網(wǎng)絡(luò)
YOLOv3使用3個(gè)尺度進(jìn)行預(yù)測(cè)。這里的多尺度預(yù)測(cè)是一種類似FPN特征金字塔[10]結(jié)構(gòu)。以coco數(shù)據(jù)集為例,YOLOv3采用了以下3個(gè)尺寸進(jìn)行預(yù)測(cè)。
(1)小尺度:(13*13的feature map)
特征圖尺寸最小,其感受野最大。故使用最大的anchors(116*90),(156*198),(373*326),適合檢測(cè)較大尺寸目標(biāo)。
(2)中尺度:(26*26的feature map)
特征圖尺寸適中,其感受野適中。故使用中間尺寸的anchors(30*61),(62*45),(59*119),適合檢測(cè)中等尺寸目標(biāo)。
(3)大尺度:(52*52的feature map)
特征圖尺寸最大,其感受野最小。故使用最小的anchors(10*13),(16*30),(33*23),適合檢測(cè)較小尺寸目標(biāo)。
這3個(gè)特征圖的尺寸是基于輸入圖片為416*416時(shí),特征提取網(wǎng)絡(luò)每一個(gè)卷積層都會(huì)下采樣,之后的特征圖尺寸減半。YOLOv3所選取的3個(gè)尺度分別是3、4、5次殘差結(jié)構(gòu)卷積后的特征圖,故其為原尺寸的1/8、1/16和1/32。
多尺度預(yù)測(cè)的核心意義在于,讓訓(xùn)練網(wǎng)絡(luò)同時(shí)學(xué)習(xí)不同卷積層提取后的特征信息,把不同尺度且相鄰的特征圖兩兩疊加進(jìn)行融合,其原理類似于殘差網(wǎng)絡(luò)結(jié)構(gòu)中的恒等映射。因此,網(wǎng)絡(luò)模型能夠?qū)W習(xí)到從不同尺度,去檢測(cè)不同尺寸的目標(biāo)物體,極大提高了算法的魯棒性和泛化能力。
1.3.1 anchors
YOLOv3通過(guò)訓(xùn)練集的標(biāo)簽數(shù)據(jù),把xml中記錄手工標(biāo)記邊框的width、height進(jìn)行9個(gè)簇的K-Means聚類。其格式是(width,height),如(116*90)。數(shù)字前后代表,由先驗(yàn)邊框聚類得出的寬度(width)和高度(height)。
1.3.2 預(yù)測(cè)邊框回歸計(jì)算
訓(xùn)練網(wǎng)絡(luò)實(shí)際上學(xué)習(xí)的指標(biāo)是tx、ty、tw、th這4個(gè)偏移值,再進(jìn)行偏移值到真實(shí)值的編碼轉(zhuǎn)換,進(jìn)而繪制出預(yù)測(cè)邊框。使用偏移值進(jìn)行回歸計(jì)算這一做法的創(chuàng)新性在于,這種編碼格式對(duì)于輸出處理過(guò)程(通過(guò)目標(biāo)置信度進(jìn)行激活函數(shù)鏈接、改變對(duì)坐標(biāo)中心的網(wǎng)格偏移量、應(yīng)用錨點(diǎn)等)非常方便,對(duì)于網(wǎng)絡(luò)訓(xùn)練結(jié)束后的微調(diào)過(guò)程,也有很大幫助。其中,Cx,Cy是中心點(diǎn)所在確定方格的相對(duì)坐標(biāo)值單位,如示意圖邊框的中心點(diǎn)坐標(biāo)是(1,1);而pw、ph代表預(yù)測(cè)框的寬高,bx、by、bw、bh則分別代表真實(shí)框的中心點(diǎn)與當(dāng)前格子中心的相對(duì)橫、縱偏移值,以及真實(shí)框的寬、高;σ則代表某激活函數(shù),如原算法選擇的sigmoid;真實(shí)框的計(jì)算公式與網(wǎng)絡(luò)學(xué)習(xí)的tx、ty、tw、th偏移值有關(guān),如圖2所示。

圖2 YOLOv3邊框回歸
Darknet53作為YOLOv3的特征提取網(wǎng)絡(luò),在原算法中把圖片信息進(jìn)行特征提取后傳遞給檢測(cè)器進(jìn)行邊框回歸運(yùn)算,且經(jīng)原作者Redmon J實(shí)驗(yàn)證明,Darknet53在性能和效率上較早期Darknet系列的網(wǎng)絡(luò)都有顯著提升[1]。由于M_YOLOv3會(huì)增添一個(gè)預(yù)測(cè)通道,若在淺層網(wǎng)絡(luò)直接添加此通道進(jìn)行預(yù)測(cè),因卷積層較少,此時(shí)的特征圖并無(wú)有效的語(yǔ)義信息,在此基礎(chǔ)上進(jìn)行預(yù)測(cè)幾乎沒(méi)有任何參考價(jià)值。故M_YOLOv3提出了Darknet_D網(wǎng)絡(luò),它是于Darknet53的基礎(chǔ)上,在其尾部增添了一個(gè)殘差結(jié)構(gòu)的特征提取網(wǎng)絡(luò)。改進(jìn)后的類特征金字塔使用殘差結(jié)構(gòu)3、4、5、6處理后的特征圖來(lái)進(jìn)行多尺度預(yù)測(cè),如圖3所示。

圖3 M_YOLOv3的特征提取網(wǎng)絡(luò)
YOLOv3算法原使用的是3*3結(jié)構(gòu)的類特征金字塔結(jié)構(gòu),對(duì)應(yīng)9個(gè)尺寸的邊框。原理是通過(guò)Darknet53的3層Res_body結(jié)構(gòu)(其全稱為Resblock_body)類似殘差網(wǎng)絡(luò)的相加原理把各個(gè)特征圖進(jìn)行疊加,并且因此得出3個(gè)尺寸的預(yù)測(cè)輸出Y。改進(jìn)算法M_YOLOv3算法將其改造為4*4 的類特征金子塔結(jié)構(gòu),不僅層次更加分明,對(duì)不同尺寸更加敏感,且在每一個(gè)類特征金字塔輸出層額外增加一個(gè)預(yù)測(cè)候選邊框供其使用,則輸出的預(yù)測(cè)值Y會(huì)更加準(zhǔn)確。
此外,在殘差結(jié)構(gòu)Resblock_body中,M_YOLOv3保留了YOLOv3的DBL結(jié)構(gòu)但對(duì)其進(jìn)行參數(shù)修改,這種集卷積、歸一化、激活函數(shù)于一體的網(wǎng)絡(luò)模塊,能夠很好保留圖像信息并進(jìn)行特征提取。
經(jīng)過(guò)特征金字塔處理后的數(shù)據(jù),模型把它打包成4個(gè)Y值,每一個(gè)Y值由4個(gè)’anchor結(jié)構(gòu)’組成,每一個(gè)’anchor結(jié)構(gòu)’又包含此預(yù)測(cè)值的中心坐標(biāo)x、y,偏移值和預(yù)測(cè)邊框的寬高w、h,及其預(yù)測(cè)類別classes和置信度score,如圖4所示。

圖4 改進(jìn)后的類似特征金字塔結(jié)構(gòu)
原YOLOv3算法一共有9個(gè)先驗(yàn)邊框,并且用這9個(gè)不同大小的邊框分成3組,對(duì)不同尺度的3個(gè)特征圖進(jìn)行預(yù)測(cè)。
本次實(shí)驗(yàn)數(shù)據(jù)的目標(biāo)物體尺寸差別較大,某些口罩的像素小于64*64px,某些口罩的像素大于512*512px。這些過(guò)大的尺寸差別導(dǎo)致原YOLOv3算法在口罩?jǐn)?shù)據(jù)集上表現(xiàn)欠佳。改進(jìn)算法M_YOLOv3使用了16個(gè)預(yù)測(cè)邊框作為候選框。其中每4個(gè)候選框?qū)?yīng)一個(gè)特征圖,每個(gè)特征圖使用4個(gè)候選邊框進(jìn)行預(yù)測(cè)。故增加先驗(yàn)邊框數(shù)量這一做法,能更好適應(yīng)數(shù)據(jù),提高算法識(shí)別精度,并增強(qiáng)其泛化能力。
(1)
IoU(intersection over union)的中文名稱是“交并比”,即為預(yù)測(cè)邊框和真實(shí)邊框的交集,與兩個(gè)框的并集之比,在諸多基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法中,IoU都是一項(xiàng)重要的區(qū)域計(jì)算指標(biāo),如式(1)所示,其中B和Bgt分別代表預(yù)測(cè)框和真實(shí)框的面積。
YOLOv3使用1和IoU的差值進(jìn)行梯度回歸,使用該損失函數(shù)能夠簡(jiǎn)單有效地收斂訓(xùn)練網(wǎng)絡(luò)損失值,如式(2)所示。但此損失函數(shù)在特定情況下無(wú)法正常使用,例如真實(shí)邊框和預(yù)測(cè)邊框出現(xiàn)無(wú)交集的情況,無(wú)論邊框遠(yuǎn)近,此時(shí)LIoU都恒等于1,那么預(yù)測(cè)邊框和真實(shí)邊框的遠(yuǎn)近就沒(méi)有意義。在這種情況下算法無(wú)法判定兩個(gè)邊框的好壞以及損失值收斂的方向,如圖5所示

圖5 邊框無(wú)交集情況
(2)
針對(duì)這個(gè)問(wèn)題,Rezatofighi H提出了GIoU[11]理念,在原來(lái)的損失函數(shù)加上了懲罰項(xiàng),出現(xiàn)邊框無(wú)交集情況時(shí),兩個(gè)邊框距離越遠(yuǎn)損失值越大,如式(3)所示
(3)
式中:C是兩個(gè)邊框的最小外接矩形,在此情況下,出現(xiàn)邊框之間無(wú)交集情況時(shí),也能判斷距離的遠(yuǎn)近,并因此找到下降梯度。
GIoU也無(wú)法適用于所有情況,若兩個(gè)邊框存在包含關(guān)系,如一大一小兩邊框A和B,小邊框A面積和B面積的并集等于A的面積,即BA∪BB=BA。 則在任意包含情況下Loss值始終相等,這就和上述LIoU出現(xiàn)的問(wèn)題相似,算法無(wú)法找到損失值下降方向,如圖6所示。

圖6 邊框存在包含關(guān)系
DIoU是ZhengZhaohui等[12]在GIoU的基礎(chǔ)上進(jìn)行了改進(jìn)從而推論出的另一種交并比損失函數(shù)
(4)
式中:d表示兩個(gè)邊框中心點(diǎn)的歐氏距離。c是最小外接矩形的對(duì)角線距離。它的計(jì)算方式和GIoU類似,也是在原IoU損失函數(shù)的基礎(chǔ)上加上了懲罰項(xiàng)。不同的是DIoU的懲罰項(xiàng)更為合理,能夠解決邊框出現(xiàn)包含情況時(shí)難以找到回歸梯度的問(wèn)題,如圖7所示。

圖7 DIoU邊框
DIoU同樣也能提供預(yù)測(cè)邊框的移動(dòng)方向。但若出現(xiàn)兩框包含的情況,GIoU無(wú)法適應(yīng),而DIoU不僅能找到預(yù)測(cè)框移動(dòng)的方向,并且損失函數(shù)收斂十分迅速。
在上述提到的IoU損失函數(shù),其作用都是輔助最終Loss收斂,更合理的IoU損失函數(shù)能夠使算法更好地?cái)M合數(shù)據(jù)。
在M_YOLOv3算法中使用DIoU來(lái)替換原有的LIoU作為損失函數(shù),在此基礎(chǔ)上進(jìn)行預(yù)測(cè)框和真實(shí)框的交并比計(jì)算,經(jīng)實(shí)驗(yàn)驗(yàn)證有更好的檢測(cè)效果。
在YOLOv3算法中,訓(xùn)練網(wǎng)絡(luò)的損失函數(shù)實(shí)際上是由中心點(diǎn)損失、寬高損失、分類損失和置信度損失,這個(gè)損失值相加得出,如式(5)所示
Loss=Lxy+Lwh+Lc+Ls
(5)
2.4節(jié)提到的DIoU損失函數(shù)會(huì)改進(jìn)Lxy和Lwh的計(jì)算,使這兩個(gè)損失值的計(jì)算更加合理。
由于YOLOv3是多尺度檢測(cè),在損失值收斂時(shí)會(huì)把每個(gè)邊框都計(jì)算一次。那么寬高較大的邊框Lxy和Lwh的值會(huì)偏高,對(duì)總體的Loss值產(chǎn)生了錯(cuò)誤的影響。
為了解決這個(gè)問(wèn)題,原作者提出了比例系數(shù)box_loss_scale這一指標(biāo),它是由數(shù)字2和偏移值w和h的乘積做差值計(jì)算得出,其中w和h是0到1之間的ground_truth寬高偏移值,如式(6)所示。在Lxy和Lwh計(jì)算的最后一步都會(huì)進(jìn)行比例系數(shù)放縮,增加小尺寸邊框的影響權(quán)重,進(jìn)而減小因先驗(yàn)框尺寸不同而導(dǎo)致的無(wú)意義影響
box_loss_scale=2-w*h
(6)
因本實(shí)驗(yàn)小尺寸目標(biāo)偏多,在M_YOLOv3算法中比例系數(shù)m_box_loss_scale提高為原系數(shù)的1.4倍,如式(7)所示
m_box_loss_scale=(2-w*h)*1.4
(7)
如式(5)所示,總Loss值由4個(gè)獨(dú)立的Loss相加而得。因M_YOLOv3使用了DIoU且增大了比例系數(shù),在式(5) 中等號(hào)右邊4個(gè)相加項(xiàng)除Lc外都進(jìn)行了加權(quán)計(jì)算。為平衡4個(gè)損失值的影響權(quán)重,M_YOLOv3在最終Loss計(jì)算時(shí),把分類損失值Lc進(jìn)行了加權(quán)計(jì)算,如式(8)所示
Loss=0.95*(Lxy+Lwh+Ls)+1.15*Lc
(8)
3.1.1 數(shù)據(jù)集介紹
本次實(shí)驗(yàn)選用公開(kāi)口罩?jǐn)?shù)據(jù)集1,該數(shù)據(jù)集來(lái)自網(wǎng)絡(luò),由labelimg軟件標(biāo)注。按照300 px為界限把輸入圖片分為,小尺寸、中尺寸、大尺寸、超大尺寸(長(zhǎng)寬任意屬性大于900 px),分別有658張、1557張、566張、134張,未注明大小有1150張,共計(jì)4065張圖片。
本數(shù)據(jù)集與VOC2007數(shù)據(jù)集格式一致,每一條數(shù)據(jù)都采用圖片與其相對(duì)應(yīng)的xml相結(jié)合。每一張圖片對(duì)應(yīng)一個(gè)xml文件,記錄圖片上目標(biāo)物體的各種屬性,如目標(biāo)物體在圖片的中心點(diǎn)、標(biāo)記框的寬高、目標(biāo)物體的類別等信息。本次數(shù)據(jù)集中只有兩個(gè)類,”face_mask”和”face”。
在上述的目標(biāo)物體的屬性中,目標(biāo)物體標(biāo)記框的長(zhǎng)和寬顯得尤為重要,它們可以表示目標(biāo)物體的尺寸。因YOLOv3原版算法的實(shí)驗(yàn)是在VOC2007數(shù)據(jù)集上進(jìn)行的,而本次實(shí)驗(yàn)的數(shù)據(jù)是檢測(cè)人臉和口罩,與VOC2007數(shù)據(jù)集相比則目標(biāo)尺寸普遍偏小。故在此把本次數(shù)據(jù)集和VOC2007數(shù)據(jù)集的目標(biāo)物尺寸作比較,按照單邊64、128、256、512為界限進(jìn)行尺寸大小歸類,見(jiàn)表1。

表1 目標(biāo)尺寸大小分布
由此可見(jiàn),本次數(shù)據(jù)集的分布更加廣泛和細(xì)致,且小目標(biāo)尺寸偏多。改進(jìn)算法提出的4層金字塔結(jié)構(gòu),并將anchors 數(shù)目從9增加到16的做法,在理論上支持M_YOLOv3 能得出更好的識(shí)別效果。
3.1.2 數(shù)據(jù)增強(qiáng)
在深度學(xué)習(xí)理論中,訓(xùn)練數(shù)據(jù)越充足,訓(xùn)練模型的效果越好。由于本次實(shí)驗(yàn)數(shù)據(jù)僅4000余張圖片并不充足,使用數(shù)據(jù)增強(qiáng)手段來(lái)模擬更多數(shù)據(jù)樣本就具有很強(qiáng)的必要性。不但能使算法模型有更多的學(xué)習(xí)樣本,同時(shí)也因數(shù)據(jù)增強(qiáng)增加了噪聲,減少模型過(guò)擬合的現(xiàn)象。
在本次實(shí)驗(yàn)中,使用了縮放圖片、平移變換、翻轉(zhuǎn)、顏色抖動(dòng)(RGB->HSV->RGB)以及boxes的重定位等數(shù)據(jù)增強(qiáng)手段,確保本次實(shí)驗(yàn)數(shù)據(jù)充足,增強(qiáng)模型的泛化能力,提高算法魯棒性。
3.2.1 環(huán)境
實(shí)驗(yàn)在Windows10的操作系統(tǒng)下完成,計(jì)算機(jī)內(nèi)存為16 G,CPU為AMD Ryzen 52600,GPU 為RTX 2060S,顯存為8 GB;python 版本為3.5,使用了Keras2.1.5、Tensorflow1.4.0、matplotlib以及cv2等三方庫(kù)的部分接口進(jìn)行編碼和畫(huà)圖,并通過(guò)CUDA8.0進(jìn)行網(wǎng)絡(luò)訓(xùn)練的加速。
3.2.2 訓(xùn)練參數(shù)及訓(xùn)練流程
為得到合適的先驗(yàn)框大小,最常用的手段就是對(duì)標(biāo)記數(shù)據(jù)進(jìn)行聚類。在諸多聚類方法中,在事先設(shè)定好簇的個(gè)數(shù)條件下,K-Means無(wú)疑成為了首選方案。
K-Means算法思路非常直觀,初始人為設(shè)定常數(shù)K,K代表算法最終劃分出來(lái)的類別數(shù)量值。算法會(huì)隨機(jī)選定初始點(diǎn)為質(zhì)心,并通過(guò)計(jì)算每一個(gè)樣本與質(zhì)心之間的相似度(一般使用歐氏距離),將樣本點(diǎn)分類到最相似的一個(gè)簇中,接著,重新計(jì)算每個(gè)簇的質(zhì)心(即為簇心),重復(fù)這樣的過(guò)程,直到簇心不再改變,最終就確定了每個(gè)樣本所屬的簇以及簇心。
M_YOLOv3使用了簇?cái)?shù)量為16的K-Means算法進(jìn)行聚類。得到的16組anchors后又進(jìn)行了類似歸一化的處理,最終得出anchors尺寸如下: (23,23),(35,34),(44,44),(53,54),(65,63),(76,75),(89,91),(108,105),(121,123),(142,142),(164,175),(167,158),(190,190),(215,212),(253,254),(372,362)。 括號(hào)中的兩個(gè)值(width,hight)分別代表anchor的寬和高。
考慮到本次實(shí)驗(yàn)的硬件條件,輸入圖片尺寸統(tǒng)一resize為352*352,初始學(xué)習(xí)率設(shè)置為0.001,在回調(diào)過(guò)程中使用監(jiān)視val_loss變化的方法來(lái)減小學(xué)習(xí)率,其中的參數(shù)設(shè)置為patience=6,factor=0.4。總訓(xùn)練批次epoch=800,batch_size=10,訓(xùn)練網(wǎng)絡(luò)Loss值的收斂情況如圖8所示。

圖8 Loss收斂
3.3.1 對(duì)于小目標(biāo)的識(shí)別效果
在對(duì)輸入圖片進(jìn)行檢測(cè)的時(shí)候,一張圖片往往包括很多個(gè)目標(biāo),就容易發(fā)生漏檢的情況,尤其是小尺寸目標(biāo)物的漏檢情況更為常見(jiàn),如圖9所示(文本框較長(zhǎng)的矩形框代表“口罩”,文本框較短的矩形框代表“人臉”)。
圖9中YOLOv3算法和Tiny_YOLOv3算法發(fā)生了漏檢情況,而M_YOLOv3憑借多種改進(jìn)措施,對(duì)小目標(biāo)物更為敏感,不容易發(fā)生漏檢情況。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的算法,一定程度上改善了對(duì)小目標(biāo)物體識(shí)別困難的問(wèn)題,如圖9所示。

圖9 3種算法檢測(cè)效果對(duì)比
3.3.2 困難條件下的識(shí)別效果
在實(shí)驗(yàn)中,3種檢測(cè)算法對(duì)于多數(shù)圖片的檢測(cè)效果比較良好,錯(cuò)誤主要發(fā)生在混淆和遮擋的數(shù)據(jù)上。如圖10中,第一排圖片的口罩和人臉顏色非常接近,只有M_YOLOv3算法判定正確(文本框較長(zhǎng)的矩形框代表“口罩”,文本框較短的矩形框代表“人臉”);第二排圖片則是紙折扇遮擋面目,其形狀顏色大小都與口罩十分類似,所有算法的識(shí)別結(jié)果均錯(cuò)誤。

圖10 部分遮擋和混淆圖片識(shí)別效果
3.3.3 mAP評(píng)價(jià)指標(biāo)
目標(biāo)檢測(cè)領(lǐng)域使用的評(píng)價(jià)指標(biāo)主要是mAP(mean average precision),平均精度均值,即為AP的平均值。而AP則是通過(guò)式(9)得出,本質(zhì)上是選取0.1作為γ的間隔,把每個(gè)γ對(duì)應(yīng)的Pinterp值相加,最后取均值。其中Pinterp是PR曲線中,以召回率(recall)作為橫坐標(biāo)點(diǎn),曲線所對(duì)應(yīng)的縱坐標(biāo)值,如式(10)所示(在計(jì)算過(guò)程中,若橫坐標(biāo)x1無(wú)對(duì)應(yīng)的縱坐標(biāo)值,則使用最靠近兩點(diǎn)x2、x3所對(duì)應(yīng)曲線上的點(diǎn),做延長(zhǎng)線與x=x1直線相交,交點(diǎn)即為x1對(duì)應(yīng)縱坐標(biāo)值)
(9)

(10)
圖11是類別”face”對(duì)應(yīng)的P-R曲線,在圖中可得出M_YOLOv3的PR曲線略優(yōu)于未改動(dòng)的算法。本次實(shí)驗(yàn)總共有兩個(gè)類,”face_mask”類和”face”類。mAP值就是對(duì)兩個(gè)類的AP值求和取平均。
3.3.4 實(shí)驗(yàn)結(jié)果
經(jīng)實(shí)驗(yàn)得出,M_YOLOv3算法對(duì)比原版Tiny_YOLOv3和YOLOv3算法在mAP值上分別提升了15.9和7.2,檢測(cè)能力優(yōu)于原版算法。M_YOLOv3的fps值為24,能夠在一定程度上做到實(shí)時(shí)檢測(cè)口罩佩戴情況,見(jiàn)表2。

表2 各算法實(shí)驗(yàn)結(jié)果
改進(jìn)算法M_YOLOv3算法在YOLOv3的基礎(chǔ)上加深特征提取網(wǎng)絡(luò)并增添預(yù)測(cè)通道,且使用了更合理的損失函
數(shù),改善了YOLOv3算法對(duì)小尺寸目標(biāo)識(shí)別困難的問(wèn)題,適用于小目標(biāo)物體的檢測(cè)。在基于小尺寸目標(biāo)偏多的口罩?jǐn)?shù)據(jù)集實(shí)驗(yàn)中得出結(jié)論,mAP指數(shù)相較于原版YOLOv3提升了7.2。
在實(shí)驗(yàn)中,部分?jǐn)?shù)據(jù)迷惑性極強(qiáng),例如圖10中女性用紙折扇遮擋口部,文中幾個(gè)算法都全部錯(cuò)誤判定它是口罩。針對(duì)這個(gè)問(wèn)題,暫時(shí)無(wú)法解決,值得下一步去思考并尋找答案,或許使用類似DOTA數(shù)據(jù)集四點(diǎn)坐標(biāo)的數(shù)據(jù)格式會(huì)改善這一問(wèn)題。
除YOLOv3算法外,其它目標(biāo)檢測(cè)算法也百家爭(zhēng)鳴。作為學(xué)者應(yīng)該緊隨時(shí)代腳步,不斷地學(xué)習(xí)理解其它的目標(biāo)檢測(cè)算法及其網(wǎng)絡(luò)結(jié)構(gòu),如單階段的RetinaNet[13]、YOLOv4,雙階段的DCR、SNIP[14]、SNIPER等。