徐澤昊,劉 川
(巢湖學(xué)院信息工程學(xué)院 安徽 合肥 238014)
目前防控工作中行人佩戴口罩檢測(cè)無法實(shí)現(xiàn)高精度識(shí)別。因此針對(duì)口罩佩戴的檢測(cè)成為研究熱點(diǎn)。朱亞茹等[1]采用特征臉?biāo)惴?,通過面部區(qū)域特征來判斷行人是否佩戴口罩,但是此算法的檢測(cè)準(zhǔn)確性不高。相比傳統(tǒng)算法,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法可以獲取到更深層次的特征,適用于背景復(fù)雜的情況并能夠捕捉到目標(biāo)物體的泛化特性,從而使準(zhǔn)確率得到了提高。
目前,針對(duì)目標(biāo)檢測(cè)的深度學(xué)習(xí)方法有兩大類。一種是基于候選區(qū)的兩階段檢測(cè)算法,例如:Fast R-CNN、Faster R-CNN、Mask R-CNN等。它代替了傳統(tǒng)的滑動(dòng)窗口,通過神經(jīng)網(wǎng)絡(luò)等方式來進(jìn)行候選區(qū)域的生成。該方法可以很好地解決滑動(dòng)窗出現(xiàn)的目標(biāo)不明確的問題。劉攀等[2]利用Faster-RCNN算法實(shí)現(xiàn)了口罩佩戴檢測(cè),但這類算法檢測(cè)速度較慢、時(shí)效性低,不利于進(jìn)行實(shí)時(shí)監(jiān)測(cè)人流量大的地方。另一類是基于回歸的一階段的目標(biāo)檢測(cè)算法,例如:RetinaNet、SSD、YOLOv2、YOLOv3等。它們運(yùn)用卷積神經(jīng)網(wǎng)絡(luò)來完成檢測(cè)流程,選用了預(yù)定義候選框,直接在圖像中回歸出目標(biāo)檢測(cè)框和類型。這類算法更容易優(yōu)化訓(xùn)練并且檢測(cè)速率快,便于進(jìn)行實(shí)時(shí)監(jiān)測(cè)人流量大的地方。
本文提出一種基于Draknet-53為主干網(wǎng)絡(luò),進(jìn)行優(yōu)化改進(jìn)后的口罩佩戴識(shí)別檢測(cè)算法。首先,在原有的YOLOv3基礎(chǔ)上添加了SPP(spatial pyramid pooling)結(jié)構(gòu),解決了輸入神經(jīng)網(wǎng)絡(luò)圖像尺寸差異的問題,使模型適應(yīng)不同尺度物體。其次決定使用CIOU Loss作為模型的損失函數(shù)。由于CIOU損失函數(shù)中包含了重疊面積,中心點(diǎn)距離以及長寬比這三個(gè)主要因素,從而使得預(yù)測(cè)框更加符合真實(shí)框,盡而提高口罩佩戴檢測(cè)效果。再使用爬蟲工具來獲取大量樣本圖片,經(jīng)過Labelimg標(biāo)記以及人工篩選自建樣本集。最后再對(duì)樣本集采用K-Means算法進(jìn)行重新聚類得到新的錨框。經(jīng)過自建樣本集模型進(jìn)行訓(xùn)練及其驗(yàn)證可得,改進(jìn)后的口罩檢測(cè)佩戴算法相比較原始YOLOv3,mAP提高了1.8%,F(xiàn)PS提高了1.3%。
在2018年,Joseph Redmon等[3]在基于YOLOv2算法的基礎(chǔ)之上提出了YOLOv3算法。YOLOv3將YOLOv2中的網(wǎng)絡(luò)結(jié)構(gòu)中Darknet-19換成了Darknet-53,取消了YOLOv2中的最大池化層,并引入了殘差層結(jié)構(gòu)。其次YOLOv3通過聚類方法得到9個(gè)錨框取代了YOLOv2中的5個(gè)錨框,并用多尺度預(yù)測(cè)替代了YOLOv2中的單一預(yù)測(cè)。YOLOv3最終會(huì)輸出三種不同規(guī)模的特征圖來對(duì)進(jìn)行預(yù)測(cè),它們的尺寸分別為13×13,26×26以及52×52[4]。這些優(yōu)化使YOLOv3相比較YOLOv2具有更高的檢測(cè)精度以及檢測(cè)速度。Darknet-53結(jié)構(gòu)如圖1所示。
YOLOv3的網(wǎng)絡(luò)架構(gòu)可以分為DarkNet53主干網(wǎng)絡(luò)和多尺度預(yù)測(cè)模塊兩部分。DarkNet53主干網(wǎng)絡(luò)由53個(gè)卷積層組成,前52層卷積層主要由5組殘差結(jié)構(gòu)組成,最后一層為全連接層用來提取圖片特征并進(jìn)行分類[5]。YOLOv3結(jié)構(gòu)中使用了卷積、BN和Leaky ReLU激活函數(shù),這三部分構(gòu)成了模型的最小組件也就是DarknetConv2D結(jié)構(gòu)每一次卷積后都進(jìn)行L2正則化,是為防止模型過擬合并且使求解更穩(wěn)定快速。在多尺度預(yù)測(cè)中,YOLOv3模型中可以產(chǎn)生三種不同的特征層,分別用于檢測(cè)不同大小物體的口罩佩戴情況[6-7]。這三個(gè)特征層采用上取樣、特征融合、多次卷積處理后,最終通過DarknetConv2D和一次3×3卷積所獲得。最后形成三種不同特征層分別用來預(yù)測(cè)不同大小目標(biāo)的口罩佩戴情況。模型使用多尺度預(yù)測(cè)后,對(duì)于小目標(biāo)檢測(cè)的效果明顯提高。
YOLOv3在實(shí)時(shí)檢測(cè)過程中若遇到遮擋,密集人群以及小目標(biāo)檢測(cè)等問題時(shí)整體檢測(cè)效果欠佳。本文對(duì)原YOLOv3算法進(jìn)行了相應(yīng)的優(yōu)化,從而使模型更加適合口罩佩戴場(chǎng)景下的檢測(cè)。
空間金字塔池化(spatial pyramid pooling,SPP)是為解決輸入神經(jīng)網(wǎng)絡(luò)圖象尺寸不一致的問題而提出的一種解決方法。SPP可以將任意尺寸的圖像進(jìn)行多尺度的池化處理,并將其拼接為一段特定長度的特征量,對(duì)于圖像形變具有較好的抑制。SPP結(jié)構(gòu)如圖2所示,SPP層有4條分支,分別是由池化核為5×5,9×9,13×13,步長為1的最大池化下采樣這三個(gè)分支和由輸入直接到輸出這4個(gè)部分所構(gòu)成。
由于在卷積神經(jīng)網(wǎng)絡(luò)中的全連接層對(duì)輸入特征尺寸有大小的要求,且存在不同場(chǎng)景得到的數(shù)據(jù)大小不固定等問題,本文在原始YOLOv3中引入了SPP結(jié)構(gòu)。本文中引入的SPP結(jié)構(gòu)主要用于提取多尺度的局部信息,并將其與全局特征相結(jié)合,使其具有更多的特征表達(dá),繼而進(jìn)一步提升了口罩佩戴檢測(cè)的準(zhǔn)確度。
本文在Darknet-53網(wǎng)絡(luò)中的卷積集(Convolutional Set)模塊加入了SPP結(jié)構(gòu)。添加SPP結(jié)構(gòu)后,模型可以進(jìn)一步獲取多尺度局部特征信息。然后,再將獲得的局部特征與整體特征相結(jié)合,可以得到更為豐富的特征表達(dá),進(jìn)而讓模型適應(yīng)不同尺度的物體,提升預(yù)測(cè)精度。改進(jìn)后的YOLOv3結(jié)構(gòu)如圖3所示。
模型在進(jìn)行檢測(cè)時(shí),會(huì)在圖像上會(huì)生成大量候選框并會(huì)對(duì)生成的候選框是否含有物體進(jìn)行預(yù)測(cè),因此為計(jì)算出候選區(qū)域預(yù)測(cè)的準(zhǔn)確性而引入了交并比IOU(intersection over union)[8]。IOU表示預(yù)測(cè)框和實(shí)際框之間的交叉比例,預(yù)測(cè)框和實(shí)際框重疊區(qū)域越大,則表明該算法預(yù)測(cè)效果越好。如公式1所示。其中A和B分別表示預(yù)測(cè)框和真實(shí)框的面積。
IOU雖然考慮到了重疊面積的問題,并且具有良好的尺度不變性,但依然存有缺陷。若當(dāng)預(yù)測(cè)框和真實(shí)框之間不重疊時(shí),IOU一直為0無法讓網(wǎng)絡(luò)進(jìn)行調(diào)整,并且IOU只與兩框之間的重疊面積相關(guān),不能準(zhǔn)確地反映出它們之間的一致性。為了解決IOU無法準(zhǔn)確反映兩框之間的重合程度以及無梯度回傳等問題,因此本文引入了CIOU(Complete-IOU)損失函數(shù)替換原始IOU損失函數(shù)。
CIOU是在DIOU(Distance-IOU)的基礎(chǔ)上增加了長寬比這一因素,而增加了這一因素會(huì)使損失函數(shù)更偏向于朝重疊區(qū)域增多的方向加以優(yōu)化,特別是當(dāng)IOU為零時(shí),解決了IOU無梯度回傳的問題。如公式2所示。
CIOU將損失函數(shù)的3個(gè)主要因素包括重疊面積(IOU)、中心點(diǎn)距離以及長寬比等都包含在其中。對(duì)比IOU,增加了中心點(diǎn)距離以及長寬比的因素,使目標(biāo)框在回歸時(shí)具有較好的穩(wěn)定性,并能很好地解決IOU損失值在訓(xùn)練時(shí)產(chǎn)生發(fā)散等問題[9]。
本文實(shí)驗(yàn)環(huán)境包含為,Intel i7-10700k CPU 3.8 GHz,英偉達(dá)RTX 2080 Ti 11G CPU,16 GB DDR4內(nèi)存。系統(tǒng)的軟件部分使用了Windows10操作系統(tǒng)、PyTorch 1.6.0框架,并使用CUDA10.2和CUDNN7.6為GPU訓(xùn)練進(jìn)行加速。
本文所用的數(shù)據(jù)通過使用爬蟲工具,對(duì)網(wǎng)絡(luò)上的大量圖片進(jìn)行了爬取,對(duì)爬取下來的照片進(jìn)行人工篩選,相應(yīng)的數(shù)據(jù)清洗,然后整理并存儲(chǔ)標(biāo)記為原始數(shù)據(jù)集。原始數(shù)據(jù)集共有圖片8 765張,其中未佩戴口罩的圖片共有4 657張,佩戴口罩的圖片共有4 108張。并按8:2的比例,將8 765幅圖像分為訓(xùn)練集,驗(yàn)證集和測(cè)試集,訓(xùn)練集驗(yàn)證集共有7 012張,測(cè)試集共有1753張,接著對(duì)數(shù)據(jù)集進(jìn)行裁剪,旋轉(zhuǎn)和翻轉(zhuǎn)等進(jìn)行數(shù)據(jù)增加,并使用Labelimg進(jìn)行標(biāo)注,如圖4所示。
YOLOv3中引入了先驗(yàn)框(anchor box)思想,采用K-Means聚類算法根據(jù)標(biāo)注的目標(biāo)框(ground truth)選取了對(duì)應(yīng)的9個(gè)anchor box,并通過選擇合適的anchor box來進(jìn)一步提高檢測(cè)的精確度以及加快檢測(cè)速度。在口罩佩戴檢測(cè)任務(wù)中,通過聚類計(jì)算是為了讓anchor box更加接近真實(shí)框[10]。本文使用自建的樣本集,通過對(duì)標(biāo)注的口罩?jǐn)?shù)據(jù)集進(jìn)行聚類計(jì)算,經(jīng)過多次測(cè)試,重新計(jì)算出9個(gè)anchor box。對(duì)13×13的特征層使用(235,217),(199,161),(163,207)來檢測(cè)大型目標(biāo)口罩佩戴情況。在對(duì)26×26的特征層上用(158,145),(104,66),(91,131)來檢測(cè)中等目標(biāo)口罩佩戴情況。對(duì)52×52的特征層上用(55,69),(40,39),(20,26)來檢測(cè)較小目標(biāo)口罩佩戴情況。
為了檢驗(yàn)優(yōu)化之后的YOLOv3算法的性能,本文采取了mAP(mean average precision)平均精度和FPS(Frames Per Second)每秒傳輸幀數(shù)兩種指標(biāo)來對(duì)本文優(yōu)化過后的算法性能進(jìn)行了評(píng)估。如公式3、公式4所示。TP表示對(duì)圖像進(jìn)行分類時(shí),把該圖像劃分為正的樣本并正確地進(jìn)行識(shí)別;FP表示將此圖像分成正的樣本,但是是錯(cuò)誤的辨識(shí)。FN表示把該圖像劃分成負(fù)樣本但識(shí)別有誤。
本文在對(duì)優(yōu)化過后的模型進(jìn)行訓(xùn)練,在此基礎(chǔ)上,繪制出了訓(xùn)練過程中Ours模型和YOLOv3模型的損失值與Epoch的之間的對(duì)應(yīng)關(guān)系曲線,如圖5所示。
從圖中可以看出,改進(jìn)后的模型在訓(xùn)練代數(shù)為20前損失值迅速下降,訓(xùn)練代數(shù)達(dá)到80后損失值逐步平穩(wěn),當(dāng)訓(xùn)練代數(shù)達(dá)到100后,損失值基本不變并且總損失值趨于2。而YOLOv3算法的總損失值整體變化趨勢(shì)同本文改進(jìn)后的模型相同,但當(dāng)訓(xùn)練代數(shù)達(dá)到100后,總損失值趨向4,高于本文改進(jìn)后模型的總損失值。
通過與其他算法的性能對(duì)比,進(jìn)一步展示了本文算法的優(yōu)勢(shì),對(duì)比結(jié)果如表1所示。本文算法輸入的是分辨率為416×416的圖片。由表1可知,與原YOLOv3模型相比,該模型的精確度提高了1.8%,F(xiàn)PS也提高了1.3%,達(dá)到了27.8。相比較一階段SSD算法,本文優(yōu)化后的模型mAP提升了5.5%,精確度得到了一定的提升,雖FPS相對(duì)降低,但仍然可以達(dá)到實(shí)時(shí)監(jiān)測(cè)的要求。而相比較二階段Faster-RCNN算法,本文優(yōu)化后的模型FPS提升了25.5%,在檢測(cè)速度上有了很大的提高,雖然在精確度上有細(xì)微的降低,但不影響最終檢測(cè)結(jié)果的準(zhǔn)確性。并且本文優(yōu)化后的模型在低照度、故意遮擋以及密集場(chǎng)景等復(fù)雜情況下也具有較好的檢測(cè)效果。
表1 整體檢測(cè)性能對(duì)比
本文針對(duì)在檢測(cè)口罩佩戴情況時(shí)精確度較低,檢測(cè)效果欠佳以及對(duì)于圖像形變沒有較好的魯棒性等問題上對(duì)原算法進(jìn)行了優(yōu)化?;赮OLOv3的基礎(chǔ)之上改進(jìn)了anchor的參數(shù),改進(jìn)后的YOLOv3模型對(duì)于檢測(cè)口罩佩戴的精確度提高了1.8%左右,并且在YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)中增加了SPP結(jié)構(gòu)能夠產(chǎn)生固定大小的特征表示,使其對(duì)于圖像的形變具備更好的魯棒性[11]。最后我們將IOU替換成了CIOU,替換之后的算法將能夠更好地反應(yīng)出框的回歸問題,相較于IOU效率更高,使模型更加的容易收斂,在將IOU替換成了CIOU后,F(xiàn)PS能夠達(dá)到27.8左右,達(dá)到實(shí)時(shí)檢測(cè)。
在實(shí)際檢測(cè)中我們還發(fā)現(xiàn)陰雨、霧霾天氣對(duì)檢測(cè)效果會(huì)產(chǎn)生一定的影響,后續(xù)將考慮改進(jìn)檢測(cè)算法的模塊以及添加相應(yīng)的圖像增強(qiáng)技術(shù),從而進(jìn)一步提高檢測(cè)精確度。