李 莉,劉 陽,王 巍,耿 華,李麗宏
(河北工程大學(xué) 信息與電氣工程學(xué)院,河北 邯鄲 056000)
近年來,深度卷積神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測[1]領(lǐng)域取得了重大進(jìn)展。其中YOLOv3算法憑借速度快、精度高、可實現(xiàn)性強等優(yōu)勢成為眾多算法[2-5]中的佼佼者。但將YOLOv3算法直接用于某些特定場景下檢測目標(biāo)時,并不能滿足檢測要求,特別是口罩佩戴的檢測,由于場景復(fù)雜、人群密集、行人占圖像像素比例較小[6],是否佩戴口罩差異性小,導(dǎo)致檢測難度大。因此,學(xué)者們相繼對YOLOv3算法進(jìn)行針對性改進(jìn)。如文獻(xiàn)[7]通過引入跨階段局部網(wǎng)絡(luò)精簡特征提取網(wǎng)絡(luò)來提升口罩檢測速度,文獻(xiàn)[8]通過擴(kuò)建特征金字塔結(jié)構(gòu)來提升對口罩小目標(biāo)的檢測精度,文獻(xiàn)[9]通過添加淺層特征層來提高對口罩特征信息的利用率。這些通過復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)的YOLOv3算法雖有不錯的效果,但并未解決口罩佩戴檢測中遮擋、緊鄰目標(biāo)容易漏檢的問題,尤其在密集人群場景下檢測效果不佳。
本文針對以上問題,提出了基于通道注意力機制的YOLO-Mask檢測算法。首先,利用多尺度通道注意力機制挖掘目標(biāo)上下文關(guān)系,強調(diào)有用細(xì)節(jié)信息,抑制無效干擾信息。然后,針對數(shù)據(jù)集進(jìn)行目標(biāo)錨框聚類。最后,針對算法檢測效果的評價標(biāo)準(zhǔn)IoU對目標(biāo)物體尺度不敏感以及無法準(zhǔn)確反映預(yù)測框與真實框重疊情況[10]的問題,以CIoU作為損失函數(shù)優(yōu)化檢測算法。實驗結(jié)果表明,YOLO-Mask算法有效降低了遮擋、緊鄰目標(biāo)的漏檢率,相較于SSD、Efficientdet、原始YOLOv3主流算法,檢測精度更高,魯棒性更強。
YOLOv3算法由Joseph Redmon等提出,其網(wǎng)絡(luò)框架包括主干特征提取網(wǎng)絡(luò)Darknet53、特征金字塔加強網(wǎng)絡(luò)以及預(yù)測網(wǎng)絡(luò)YOLO Head這3部分,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv3結(jié)構(gòu)
首先輸入大小為416×416的圖片,經(jīng)過初始化后進(jìn)入Darknet53中的第一個殘差網(wǎng)絡(luò)[11](Residual),通過下采樣將寬和高壓縮,通道數(shù)擴(kuò)張,得到一個特征層,命名為layers1,Darknet53中有5個這樣的殘差網(wǎng)絡(luò),可以得到一系列包含圖片特征的特征層,接著取后3個特征層進(jìn)行特征加強網(wǎng)絡(luò)的多尺度特征融合,最后利用YOLO Head得到3個尺度的預(yù)測邊框,分別為13×13、26×26、52×52,用來檢測大、中、小物體。以檢測VOC數(shù)據(jù)集為例,輸入一張416×416的圖片,經(jīng)過Darknet53的多層運算,取layers3、layers4、layers5用作特征金字塔的構(gòu)建,最后利用YOLO Head進(jìn)行特征整合和調(diào)整通道數(shù)后得到3個大小的輸出層,分別為(13,13,75)、(26,26,75)、(52,52,75),其中75可以分為3×(20+1+4),3是YOLOv3針對每個特征層的特征點存在3個先驗框,20代表了VOC數(shù)據(jù)集分20個類別,1代表了框內(nèi)是否含有物體,4代表了預(yù)測框的調(diào)整參數(shù):中心點坐標(biāo)x,y和框的寬高W,H。 每個網(wǎng)格的類別置信度得分如式(1)
(1)
YOLOv3的損失函數(shù)定義請參見文獻(xiàn)[12],其Loss值計算如式(2)所示
Loss=Losscoor+Lossconf+Losscls
(2)
其中,目標(biāo)定位損失Losscoor以均方誤差(mean square error,MSE),即L2范數(shù)作為損失函數(shù)的目標(biāo)函數(shù)。首先,計算預(yù)測框與真實框的IoU, 然后通過對預(yù)先設(shè)定的IoU閾值對預(yù)測區(qū)域進(jìn)行篩選,選出IoU大于閾值的區(qū)域。
最后對篩選出來的區(qū)域,計算其對應(yīng)的Losscoor值,如式(3)所示
(3)
原始YOLOv3在多尺度目標(biāo)檢測上效果突出,但存在檢測遮擋、緊鄰目標(biāo)時漏檢和預(yù)測框與真實框無交集時無法優(yōu)化的問題。本文從主干特征提取網(wǎng)絡(luò)Darknet53、先驗框尺寸以及損失函數(shù)3個方面對原始YOLOv3進(jìn)行改進(jìn)。
2.1.1 SENet注意力機制
視覺注意力機制是人類視覺所特有的大腦信號處理機制。當(dāng)人類在瀏覽一張圖片時,視覺首先會快速瀏覽掃描全局,從而獲得重點關(guān)注的目標(biāo)區(qū)域,即注意力焦點,然后通過對這一目標(biāo)區(qū)域更加仔細(xì)識別,來獲得注意力焦點中更多有效的細(xì)節(jié)信息,抑制其它無效信息。深度學(xué)習(xí)中的注意力機制(attention mechanism[13])是機器學(xué)習(xí)中的一種數(shù)據(jù)處理方法,和人類的視覺注意力機制相似,其核心也是從眾多信息中選擇出更關(guān)鍵的信息。注意力機制可以將輸入的每個部分賦予不同的權(quán)重,從中選取出更加關(guān)鍵的信息,使模型更加關(guān)注有效信息,從而做出更加準(zhǔn)確的識別。注意力機制分為兩種:一種是軟注意力(soft attention),另一種是強注意力(hard attention)。
本文采用軟性通道注意力機制SENet(squeeze-and-excitation networks),主要由兩部分組成:Squeeze部分和Excitation部分。SENet結(jié)構(gòu)如圖2所示。
圖2 SENet結(jié)構(gòu)
圖2中,C′個W′*H′的特征層X經(jīng)過轉(zhuǎn)換操作Ftr得到C個W*H的特征層U,實現(xiàn)過程為式(4),uc為特征U的第c個二維矩陣,vc表示第c個卷積核,Xs表示第s個輸入
(4)
Squeeze操作是在得到U之后,采用全局平均池化操作對每個特征層的寬W和高H進(jìn)行壓縮,使其C個特征層轉(zhuǎn)化為1×1×C的數(shù)列。如式(5)所示
(5)
Excitation操作用來全面捕獲通道依賴性,如式(6)所示。為學(xué)習(xí)通道之間的非線性交互關(guān)系,使用了Sigmoid激活函數(shù)和ReLU函數(shù)。分別為式(6)中的σ,δ。w1為降維參數(shù),w2為升維參數(shù),s為各通道權(quán)重
s=Fex(z,W)=σ(g(z,W))=σ(w2δ(w1z))
(6)
最后通過式(7)進(jìn)行Scale操作得到最終的輸出。sc為第c個二維矩陣的權(quán)重
(7)
2.1.2 YOLO-Mask網(wǎng)絡(luò)結(jié)構(gòu)
當(dāng)樣本圖像中存在一些遮擋或緊鄰的目標(biāo)物體干擾時,現(xiàn)有目標(biāo)檢測網(wǎng)絡(luò)會錯誤的“認(rèn)為”該區(qū)域只有一類目標(biāo)置信度較高的特征可能性較大,這種置信度分布不平衡會造成目標(biāo)定位不準(zhǔn)確和大量的漏檢,導(dǎo)致檢測精度降低。為了提高Darknet53的特征提取能力,可采取增強感受野的方法來使特征提取網(wǎng)絡(luò)學(xué)習(xí)到全局特征[14],進(jìn)而平衡不同區(qū)域的置信度。
SENet中全局平均池化的操作將輸入特征圖壓縮為基于通道的一維向量,從而獲得全局的感受野,使得感受區(qū)域更廣,隨后通過兩個全連接層,在減少參數(shù)量的同時,通過Excitation操作學(xué)習(xí)通道間的依賴性,接著經(jīng)過Sigmoid激活函數(shù)將通道間的權(quán)重值定在0和1之間,最終輸入的特征與權(quán)重值相乘得到最后的輸出。
考慮到如果改變主干特征網(wǎng)絡(luò)的深層結(jié)構(gòu),需要將新的網(wǎng)絡(luò)在ImageNet數(shù)據(jù)集上重新進(jìn)行預(yù)訓(xùn)練,整個過程需要耗費大量的時間,而將SENet結(jié)構(gòu)加在layers3之前,由于SENet結(jié)構(gòu)不會改變特征層的大小,即改進(jìn)后的模型與預(yù)訓(xùn)練模型的參數(shù)維度相匹配,可直接加載已有的預(yù)訓(xùn)練權(quán)重進(jìn)訓(xùn)練。因此,本文選擇將SENet嵌入在Darknet53中的layers2和layers3層之間,改進(jìn)后的YOLO-Mask網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 YOLO-Mask網(wǎng)絡(luò)結(jié)構(gòu)
基于錨框的目標(biāo)檢測網(wǎng)絡(luò),需要合理的錨框設(shè)置,若錨框的大小與目標(biāo)的尺度不符,則正樣本數(shù)量會大大減少,導(dǎo)致大量漏檢和誤檢情況發(fā)生。YOLOv3采用K-means算法對數(shù)據(jù)集中的目標(biāo)進(jìn)行聚類得到9個尺寸的先驗框,分給3個不同的檢測層,針對COCO公開數(shù)據(jù)集的先驗框從小到大依次為(10,13),(16,30),(33,32),(30,61),(62,45),(59,119),(116,90),(156,198),(373,326)。而RMFD口罩遮擋人臉數(shù)據(jù)集中的目標(biāo)偏小,公開數(shù)據(jù)集的先驗框已不再適用。
為解決上述問題,優(yōu)化檢測效果,本文使用K-means++[15]聚類算法對口罩?jǐn)?shù)據(jù)集的維度和寬高進(jìn)行重新優(yōu)化聚類,得到RMFD數(shù)據(jù)集可視化聚類結(jié)果如圖4所示,其中橫坐標(biāo)表示目標(biāo)的寬,縱坐標(biāo)表示目標(biāo)的高,黑色三角表示聚類中心,最后獲得符合RMFD口罩遮擋人臉數(shù)據(jù)集的先驗框尺寸設(shè)置數(shù)值,具體見表1。
表1 優(yōu)化后RMFD數(shù)據(jù)集先驗框尺寸
圖4 RMFD數(shù)據(jù)集可視化聚類結(jié)果
采用L2范數(shù)損失來計算邊界框位置坐標(biāo)的回歸損失,并使用IoU作為目標(biāo)檢測效果的評價標(biāo)準(zhǔn)時會出現(xiàn)兩個問題:①當(dāng)預(yù)測框與真實框之間無交集時,其無法衡量兩個邊框之間的距離。如圖5所示。兩個場景的預(yù)測框與真實框都未相交,雖然圖5(a)的預(yù)測框離真實框更近,但兩個的IoU均為0。②IoU值的變化不能反應(yīng)MSE[16]的變化,如圖6所示,圖6(a)、圖6(b)兩組邊界框角點坐標(biāo)距離的MSE損失值相等,但I(xiàn)oU卻不同,說明MSE與IoU之間不具有強相關(guān)性。
圖5 IoU為0時的場景
圖6 L2范數(shù)損失值相等時IoU的變化
為解決上述問題,引入CIoU作為損失函數(shù),CIoU將目標(biāo)與錨框之間的尺度、距離、重疊率、懲罰項都考慮進(jìn)去,避免了像IoU一樣出現(xiàn)訓(xùn)練過程中發(fā)散等問題,使目標(biāo)框回歸變得更加穩(wěn)定。CIoU如式(8)所示
(8)
其中,ρ2(b,bgt) 表示預(yù)測框和真實框中心點之間的歐式距離,c代表的是兩個框之間最小閉包區(qū)域的對角線距離。α和v的式如式(9)、式(10)所示
(9)
(10)
CIoU的損失函數(shù)如式(11)所示
(11)
本文的實驗環(huán)境配置如下:處理器為AMD Ryzen7 4800H,顯卡為RTX 2060,16 GB內(nèi)存,操作系統(tǒng)為Windows10。實驗采用visual studio code編譯軟件,Python編程語言,深度學(xué)習(xí)框架為Pytorch。實驗使用Adam優(yōu)化器對網(wǎng)絡(luò)進(jìn)行優(yōu)化,初始學(xué)習(xí)率設(shè)置為0.001,每30個epoch,學(xué)習(xí)率變?yōu)樵瓉淼?.1,batch size為4,共訓(xùn)練120個epoch。
為評價YOLO-Mask對數(shù)據(jù)集中遮擋、緊鄰目標(biāo)的檢測效果以及預(yù)測框的回歸效果,本文選取由精準(zhǔn)率P(precision)、召回率R(recall)、平均精度AP(average percision)計算得來的F1得分和平均精度均值mAP(mean average percision)來評價模型的檢測效率。計算公式如式(12)~式(13)
(12)
(13)
其中,F(xiàn)1是P和R的調(diào)和平均數(shù),是用來衡量二分類模型精準(zhǔn)度的指標(biāo)。對所有類別求AP并取平均值即為mAP, 其是反應(yīng)網(wǎng)絡(luò)模型整體性能的重要指標(biāo)。
實驗所用數(shù)據(jù)集為PASCAL VOC(2007+2012)和口罩遮擋人臉數(shù)據(jù)集(real-world masked face dataset,RMFD)。其中VOC數(shù)據(jù)集共16 551張圖片,分20類。RMFD數(shù)據(jù)集是武漢大學(xué)于2020年3月免費開放的全球首個口罩遮擋人臉數(shù)據(jù)集。共8565張圖片,分Face和Face_mask兩類。為驗證改進(jìn)后YOLO-Mask模型的檢測效果,本文分別在上述兩個數(shù)據(jù)集進(jìn)行對比驗證。
統(tǒng)計網(wǎng)絡(luò)參數(shù)與幀速率,結(jié)果見表2。
表2 網(wǎng)絡(luò)參數(shù)量對比
3.5.1 PASCAL VOC數(shù)據(jù)集結(jié)果分析
為了評估YOLO-Mask的性能情況,對主流經(jīng)典目標(biāo)檢測網(wǎng)絡(luò)Faster R-CNN、SSD 以及原始YOLOv3,在PASCAL VOC數(shù)據(jù)集進(jìn)行訓(xùn)練和測試。實驗結(jié)果見表3。
結(jié)合表2和表3得出,YOLO-Mask在僅增加0.9%的參數(shù)量且不影響模型檢測實時性的前提下,在PASCAL VOC數(shù)據(jù)集上有13個目標(biāo)類別取得了最優(yōu)結(jié)果,其中在“Boat”、“Table”、“Plant”、“TV”等易遮擋、緊鄰的目標(biāo)上,相較原始YOLOv3取得了明顯的精度提升。在“Cow”、“Sheep”等樣本數(shù)量少,未得到細(xì)節(jié)特征信息加強的目標(biāo)上表現(xiàn)不佳,但總體mAP較YOLOv3提升了3%。說明本文算法有效加強了對目標(biāo)物體的特征信息利用率,使得樣本中可正確識別目標(biāo)的數(shù)量增加。實驗結(jié)果表明,YOLO-Mask 的mAP均優(yōu)于當(dāng)下主流的目標(biāo)檢測網(wǎng)絡(luò)。
表3 VOC實驗數(shù)據(jù)/%
3.5.2 RMFD數(shù)據(jù)集結(jié)果分析
圖7 loss下降曲線
表4為YOLO-Mask算法在RFMD數(shù)據(jù)集上的測試結(jié)果,相較SSD、Efficientdet和原始YOLOv3算法,改進(jìn)后YOLO-Mask算法的召回率R達(dá)到了最高值87.7%,精準(zhǔn)率P低于SSD、Efficientdet算法,而召回率和精準(zhǔn)率往往是一對矛盾的指標(biāo),F(xiàn)1分?jǐn)?shù)綜合了P和R兩個度量值,分值越高說明模型效果越好。YOLO-Mask的F1分?jǐn)?shù)相較其它3個主流算法分別提高了0.12、0.2、0.02,mAP分別提高了10.7%、6.4%、3.8%。實驗結(jié)果表明,YOLO-Mask算法的檢測精度最高,模型效果最佳。
表4 RFMD實驗數(shù)據(jù)
3.5.3 消融實驗
為了進(jìn)一步分析本文提出的改進(jìn)方法對YOLOv3模型的影響,設(shè)計了消融實驗,將本文算法分為4組實驗分別在RMFD數(shù)據(jù)集上進(jìn)行訓(xùn)練,消融實驗的結(jié)果見表5。
表5 消融實驗結(jié)果對比
由實驗A和原始YOLOv3算法對比可知,加入通道注意力機制的網(wǎng)絡(luò)模型性能得到顯著提升,mAP提升了2.7%,說明改進(jìn)后的特征提取網(wǎng)絡(luò)加強了特征信息的利用率,提高了檢測精度。實驗B在實驗A的基礎(chǔ)上對錨框進(jìn)行了K-means++聚類優(yōu)化,mAP提高了0.7%,最后YOLO-Mask在實驗B的基礎(chǔ)上使用了CIoU,使得mAP提高了0.4%??傊?,本文對YOLOv3的改進(jìn)方法在密集人群場景下的口罩檢測任務(wù)中均是有意義的。
3.5.4 定性分析
在圖8中,本文選取了原始YOLOv3和改進(jìn)后的YOLO-Mask在RMFD數(shù)據(jù)集上的表現(xiàn)。在第一組有緊鄰目標(biāo)的場景下,YOLOv3漏檢了一個“face”目標(biāo),而SE-YOLOv3則可以順利檢出。在第二組人群密集、存在小目標(biāo)和遮擋目標(biāo)的場景下,SE-YOLOv3算法很好展示出對小目標(biāo)檢測精度的提升,正確檢測出10個目標(biāo),比YOLOv3多檢測出2個小目標(biāo)和1個遮擋目標(biāo)。在第三組場景中,YOLOv3算法將小目標(biāo)“face”誤檢為“face_mask”。在第四組場景中,YOLOv3檢測出7個目標(biāo),而YOLO-Mask檢測出8個目標(biāo),降低目標(biāo)漏檢率的同時提高了目標(biāo)預(yù)測置信度,表現(xiàn)優(yōu)異。綜上所述,本文算法的檢測效果明顯優(yōu)于YOLOv3,更適用于密集人群場景下口罩佩戴檢測。
圖8 YOLOv3和YOLO-Mask的效果對比
本文在YOLOv3特征提取網(wǎng)絡(luò)中嵌入通道注意力機制SENet,提高網(wǎng)絡(luò)對關(guān)聯(lián)目標(biāo)特征信息的利用率。其次,采用K-means++算法對口罩?jǐn)?shù)據(jù)集進(jìn)行錨框聚類,提高檢測效率。最后,使用CIoU損失函數(shù),加速模型收斂。通過以上方法得到的YOLO-Mask算法在密集人群場景下口罩佩戴檢測表現(xiàn)優(yōu)異,有效提升了遮擋、緊鄰目標(biāo)的檢測精度,超過其它優(yōu)秀檢測算法的同時,又保證了算法的實時檢測速度。實驗中同時發(fā)現(xiàn),YOLO-Mask在檢測背景模糊、目標(biāo)重疊的場景下表現(xiàn)不佳,后續(xù)工作將繼續(xù)改善算法的檢測能力,提高檢測性能。