冉鵬飛,劉銀華
(青島大學(xué) 自動(dòng)化學(xué)院,青島266071)
從2019年12月開始,新型冠狀病毒肺炎(COVID-19)席卷了中國(guó)31 個(gè)?。ㄗ灾螀^(qū)、直轄市)和新疆生產(chǎn)建設(shè)兵團(tuán)以及境外的許多國(guó)家[1]。目前中國(guó)已經(jīng)復(fù)工復(fù)學(xué),但全球疫情尚未得到控制,疫情還沒有結(jié)束,人們對(duì)發(fā)熱和呼吸道癥狀還要保持警惕。尤其是在人口密集的場(chǎng)合下,正確佩戴口罩是防控工作的重中之重?,F(xiàn)在是否配戴口罩通常是工作人員來檢查的,這種方法效率低下。本文研究了目標(biāo)檢測(cè)的相關(guān)算法,發(fā)現(xiàn)許多算法都可以用于檢測(cè)是否佩戴口罩,但是復(fù)雜的光照條件會(huì)給佩戴口罩的檢測(cè)過程帶來許多問題。其檢測(cè)復(fù)雜光照條件下的圖像時(shí)會(huì)得不到理想效果。
現(xiàn)在基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為兩種。第一種是雙階段的檢測(cè)算法,這種算法將目標(biāo)檢測(cè)分成兩個(gè)步驟,第一步是利用候選區(qū)域生成網(wǎng)絡(luò)獲取一個(gè)候選框,第二步通過卷積神經(jīng)網(wǎng)絡(luò)完成對(duì)候選框中候選目標(biāo)位置與類別的檢測(cè)。常見的雙階段目標(biāo)檢測(cè)算法主要是以Fast R-CNN[2]、Faster R-CNN[3]等為代表的算法。第二種是單階段目標(biāo)檢測(cè)算法,它可以直接回歸預(yù)測(cè)框,具有更快的檢測(cè)速度。常見的單階段目標(biāo)檢測(cè)算法SSD、YOLO 系列[4]等為代表。本文基于YOLOv4 算法為基礎(chǔ),針對(duì)在復(fù)雜光照條件下,口罩檢測(cè)效果不好的情況,本文主要改善工作有以下幾點(diǎn):
(1)在YOLOv4 的主干網(wǎng)絡(luò)中引入基于通道和空間注意力機(jī)制,同時(shí)在特征金字塔部分加入跨階段局部網(wǎng)絡(luò),增強(qiáng)特征圖的表達(dá)能力。
(2)根據(jù)不同系數(shù)的Gamma 變換會(huì)對(duì)圖像進(jìn)行處理,提出了一種可以選取符合復(fù)雜光照條件下的圖像的算法,從而構(gòu)建出復(fù)雜光照條件下的數(shù)據(jù)集并手工標(biāo)注用于口罩佩戴檢測(cè)任務(wù)的網(wǎng)絡(luò)訓(xùn)練與測(cè)試。
針對(duì)于兩階段的目標(biāo)檢測(cè)算法普遍存在的運(yùn)算速度慢的缺點(diǎn),YOLO 創(chuàng)造性地提出了單階段的方法,具備良好的識(shí)別速度和檢測(cè)精度。YOLOv4 在YOLOv3 的基礎(chǔ)上改進(jìn)的,雖然沒有革命性的改變,但是其網(wǎng)絡(luò)結(jié)構(gòu)更為復(fù)雜,并且使用了許多訓(xùn)練技巧來提升準(zhǔn)確率。
在主干特征提取網(wǎng)絡(luò)部分,YOLOv4 借鑒跨階段局部網(wǎng)絡(luò)(cross stage partial network,CSPNet)構(gòu)造出了CSPDarknet53 結(jié)構(gòu)。CSPNet 就是將原來的殘差塊的堆疊進(jìn)行拆解后,主干部分繼續(xù)進(jìn)行原來殘差塊的操作,另一部分則像一個(gè)殘差邊一樣,少許處理后直接連接到最后。CSPNet 結(jié)構(gòu)如圖1所示。
同時(shí)將DarknetConv2D 中的激活函數(shù)由Leaky-ReLU 換成了Mish。Mish 激活函數(shù)如式(1)所示:
圖1 CSPNet 結(jié)構(gòu)Fig.1 CSPNet structure
并且在CSPDarknet53 網(wǎng)絡(luò)中的最后一個(gè)特征層的卷積里加入了空間金字塔池化(spatial pyramid pooling,SPP),可以極大地增加感受野,分離出最顯著的上下文特征。特征金字塔部分,YOLOv4 在3 個(gè)有效特征層上可以做到對(duì)特征的反復(fù)提取,有效提升預(yù)測(cè)精度。YOLOv4 的網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
在最后的預(yù)測(cè)階段,改進(jìn)了損失函數(shù)。因?yàn)閷こ5慕徊⒈龋╥ntersection over union,IoU)無法直接優(yōu)化沒有重疊的部分,所以將IoU 改為CIoU,可以讓目標(biāo)框更加有魯棒性,不會(huì)出現(xiàn)訓(xùn)練過程中的發(fā)散等問題。CIoU 公式如下:
式中:ρ2(b,bgt)分別代表了預(yù)測(cè)框和真實(shí)框的中心點(diǎn)的歐式距離;c 代表的是能夠同時(shí)包含預(yù)測(cè)框和真實(shí)框的最小閉包區(qū)域的對(duì)角線距離。而α 和v 的公式如下:
相應(yīng)的損失函數(shù)為
卷積塊注意力模塊(convolutional block attention module,CBAM)是一種融合了通道注意力機(jī)制和空間注意力機(jī)制的注意力模塊。通過輸入的一個(gè)中間特征圖,CBAM 可以按照順序沿著通道和空間兩個(gè)獨(dú)立維度推斷注意圖,然后將注意圖與輸入特征圖相乘以進(jìn)行自適應(yīng)特征細(xì)化。本文在主干特征提取網(wǎng)絡(luò)中引入這一注意力模塊來提高模型對(duì)復(fù)雜光照特征的表達(dá)能力,使檢測(cè)精度得到提升。并且引入CBAM 使精度提高帶來的參數(shù)開銷問題可忽略不計(jì)。
圖2 YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 YOLOv4 network structure
SENet(squeeze-and-excitation networks)的工作僅利用了平均池化特征,CBAM 的通道注意力模塊在其基礎(chǔ)上增加了最大池化特征,通過使用兩種池化操作來聚合特征圖的空間信息,生成兩個(gè)不同的空間上下文描述符:分別表示平均池化和最大池化特征,接著再經(jīng)過多層感知器(MLP)生成通道注意圖Mc。公式如下:
式中:σ 為sigmoid 函數(shù)W0∈RC/r×C,W1∈RC×C/r;W0和W1分別代表多層感知器的權(quán)重系數(shù),并且ReLU激活函數(shù)后面W0。
通過要素之間的空間關(guān)系可以生成空間注意圖,為了計(jì)算空間注意力,首先沿通道軸應(yīng)用兩種池化操作,并將它們連接起來以生成有效的特征描述符。然后通過標(biāo)準(zhǔn)卷積層將它們連接起來并進(jìn)行卷積,從而生成空間注意圖。公式如下:
式中:σ 為sigmoid 函數(shù);f7×7代表濾波器大小為7×7的卷積運(yùn)算。
本文在YOLOv4 的主干特征提取網(wǎng)絡(luò)的ResBlock中嵌入該注意力模塊,確切位置的結(jié)構(gòu)如圖3 所示。通過先通道后空間注意力模塊相組合的形式,實(shí)現(xiàn)注意力集中,提高網(wǎng)絡(luò)在復(fù)雜光照中的學(xué)習(xí)能力,在訓(xùn)練中使模型學(xué)習(xí)到更多復(fù)雜光照中人臉佩戴口罩的信息,進(jìn)一步提高了檢測(cè)的準(zhǔn)確性。
圖3 ResBlock 中嵌入雙注意力模塊位置示意圖Fig.3 Location diagram of embedded dual attention module in ResBlock
本文研究了一種可以用來增強(qiáng)CNN 學(xué)習(xí)能力的新型骨干網(wǎng)絡(luò),在特征金字塔部分,YOLOv4 采用的普通的卷積操作同樣也引入了跨階段局部網(wǎng)絡(luò)(CSPNet)來加強(qiáng)它的學(xué)習(xí)能力??梢赃M(jìn)一步提高網(wǎng)絡(luò)特征融合的能力。在特征金字塔上結(jié)構(gòu)改進(jìn)對(duì)比如圖4 所示。
圖4 YOLOv4 和本文在特征金字塔的結(jié)構(gòu)Fig.4 YOLOv4 and the structure of the feature pyramid in this paper
YOLOv4 自帶的特征融合策略使得在普通光照下有著較高的檢測(cè)精度,但是在某些復(fù)雜光照情況下魯棒性卻不高。本文在這一基礎(chǔ)上進(jìn)一步改進(jìn),在特征金字塔部分應(yīng)用了CSP 結(jié)構(gòu),讓其在輕量化的同時(shí)保證了準(zhǔn)確性,減少了內(nèi)存成本。CSPNet 解決了網(wǎng)絡(luò)中進(jìn)行優(yōu)化時(shí),梯度信息會(huì)經(jīng)常覆蓋的問題。讓網(wǎng)絡(luò)可以重復(fù)利用特征,從而減少網(wǎng)絡(luò)參數(shù)數(shù)量。
數(shù)據(jù)集中的圖像數(shù)目很多,僅靠人工篩選費(fèi)時(shí)費(fèi)力。因此本文提出了一種篩選算法來對(duì)圖像進(jìn)行選擇,來得到符合本文所需要的數(shù)據(jù)集。
復(fù)雜光照的圖像有許多種,采集的圖像中常見的主要有光照偏強(qiáng)和光照偏弱兩類,前者圖像的某些細(xì)節(jié)可能會(huì)由于光照造成圖像前景區(qū)域較亮而喪失,后者圖像的前景區(qū)域會(huì)因?yàn)楣庹兆兊媚:鴣G失細(xì)節(jié)。其中可分成一維熵與二維熵兩種形式的圖像熵是基于圖像內(nèi)平均信息量的統(tǒng)計(jì)形式,二維熵是在一維熵的基礎(chǔ)上加入了空間特征,來表示圖像的灰度分布的空間特性。這里圖像的總體信息通過選用二維熵來進(jìn)行分析。
對(duì)于指定的一張彩色圖像,其色彩矩陣可以表示為如下形式[5]:
式中:x 和y 分別代表方向,然后令矩陣做如下變換:
式中:Qxx,Qyy與Qxy表示相應(yīng)的點(diǎn)積操作,由此本文可以將某一像素點(diǎn)的顏色變化差值?定義為
觀察某一像素點(diǎn)的顏色前后變化的差異,可以確定像素的細(xì)節(jié)信息發(fā)生改變。基于此,本文可以對(duì)圖像細(xì)節(jié)進(jìn)行檢測(cè)。這里分別求出閾值s 與閾值w,然后就可以將所有的圖像都劃分為前景與背景。并使用Gamma 矯正方法[6]進(jìn)一步提高圖像對(duì)比度。Gamma 矯正公式:
式中:β 為調(diào)整后對(duì)應(yīng)的像素灰度值;α 為輸入圖像像素的灰度值;αmax為α 的最大值;γ 為自定義的參數(shù),它決定了Gamma 矯正對(duì)圖像灰度值的改變程度。本文的圖像處理通過使用不同系數(shù)的Gamma變換,γ 大于1 會(huì)對(duì)光照偏強(qiáng)的圖像降低亮度同時(shí)減少細(xì)節(jié)數(shù)目,γ 小于1 會(huì)對(duì)光照偏弱的圖像提高亮度使圖像細(xì)節(jié)增加。分別求出變換前后圖像的細(xì)節(jié)數(shù)目變化大小和熵值的變化總體幅度,然后對(duì)比相應(yīng)的閾值,從而得出圖像的光照復(fù)雜度情況,就可以據(jù)此篩選出本文需要的圖像。
本文的數(shù)據(jù)集利用上文提出的篩選算法對(duì)AIZOO 和RMFD 這兩種數(shù)據(jù)集進(jìn)行篩選。一共篩選出11208 張圖片,其中包括3908 張人臉照片和7300張人臉佩戴口罩照片,并且按照9∶1 的比例劃分訓(xùn)練集和驗(yàn)證集。同時(shí)利用LabelImg 可視化圖片標(biāo)注工具對(duì)圖像進(jìn)行人工標(biāo)注,將人臉用方框進(jìn)行標(biāo)注,將標(biāo)注的方框分為是否佩戴口罩兩類。數(shù)據(jù)集標(biāo)注圖片如圖5 所示。
圖5 數(shù)據(jù)集示例圖片F(xiàn)ig.5 Sample data set image
本文采用查準(zhǔn)率(Precision)、召回率(Recall)、平均準(zhǔn)確率(AP)和平均準(zhǔn)確率均值(mAP)作為實(shí)驗(yàn)的評(píng)價(jià)指標(biāo)[7]:
式中:TP 表示檢測(cè)模型檢測(cè)正確的樣本數(shù)量;FP 表示檢測(cè)模型檢測(cè)錯(cuò)誤的樣本數(shù)量;FN 表示沒有被檢測(cè)出來的樣本數(shù)量。平均準(zhǔn)確率(AP)和平均準(zhǔn)確率均值(mAP):
式中:N 表示未佩戴口罩和佩戴口罩兩類;i 代表某個(gè)類別。
實(shí)驗(yàn)采用筆記本電腦在Pycharm 中通過Python語(yǔ)言編程實(shí)現(xiàn),選擇Tensorflow 1.13.2 作為后端的Keras 2.1.5 深度學(xué)習(xí)框架來搭建網(wǎng)絡(luò)模型。另外使用GPU 加速工具CUDA10.0,GPU 為NVIDIA GeForce RTX 2070 用來加速訓(xùn)練。為了驗(yàn)證實(shí)際訓(xùn)練效果如何,選用RetinaFace 檢測(cè)算法對(duì)本文數(shù)據(jù)集和隨機(jī)挑選的WiderFace 數(shù)據(jù)集分別進(jìn)行訓(xùn)練,在檢測(cè)模型檢測(cè)錯(cuò)誤的樣本數(shù)量為600 時(shí),佩戴口罩檢測(cè)的兩種數(shù)據(jù)集的檢出率分別為0.842 和0.785,根據(jù)TP 和FP 的關(guān)系繪制出操作特性曲線如圖6所示。
圖6 不同數(shù)據(jù)集訓(xùn)練后在測(cè)試集的操作特性曲線Fig.6 Operation characteristic curves of different data sets after training in the test set
從圖6 可以看出,在遇到復(fù)雜光照的情況下,普通數(shù)據(jù)集的檢測(cè)精度會(huì)大幅降低,而在經(jīng)過本文算法所得到的數(shù)據(jù)集進(jìn)行訓(xùn)練后,整個(gè)模型對(duì)復(fù)雜光照條件的泛化能力提升,因此也會(huì)提高檢測(cè)精度。
本文訓(xùn)練方式采用Adam 優(yōu)化器對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,共分為兩個(gè)階段:第一階段載入預(yù)訓(xùn)練權(quán)重,初始學(xué)習(xí)率設(shè)為0.001,并對(duì)其進(jìn)行動(dòng)態(tài)調(diào)整,批量數(shù)據(jù)樣本數(shù)設(shè)為8;遍歷50 次數(shù)據(jù)集;第二階段遍歷數(shù)據(jù)集次數(shù)到100 結(jié)束,將批量數(shù)據(jù)樣本數(shù)設(shè)為4,連續(xù)遍歷6 次數(shù)據(jù)集數(shù)值不下降則終止訓(xùn)練。最終訓(xùn)練完成后,本文算法的檢測(cè)結(jié)果的查準(zhǔn)率-召回率曲線如圖7 所示。并且和YOLOv4 算法對(duì)于人臉是否佩戴口罩進(jìn)行比較,得到查準(zhǔn)率-召回率曲線如圖8 所示。
圖7 本文算法檢測(cè)各類目標(biāo)的查準(zhǔn)率-召回率曲線Fig.7 Precision-recall rate curves of various targets detected by the algorithm in this paper
圖8 本文算法與YOLOv4 算法對(duì)比的查準(zhǔn)率-召回率曲線Fig.8 Precision-recall rate curve of comparison between the algorithm in this paper and YOLOv4 algorithm
之后在相同的實(shí)驗(yàn)環(huán)境下,使用相同的訓(xùn)練方式[8],訓(xùn)練了多個(gè)網(wǎng)絡(luò)模型,通過比較以證明本文方法的可行性。實(shí)驗(yàn)結(jié)果如表1 所示。
表1 本文算法與其他算法比較Tab.1 Comparison between the proposed algorithm and other algorithms
從圖8 中可以看出,本文算法和YOLOv4 算法相比未佩戴口罩即人臉檢測(cè)和口罩檢測(cè)分別得到了提升。而且通過表1 可知,在與別的算法相比較也可以看出有顯著的檢測(cè)效果。包括檢測(cè)精度和速度方面都得到了提升。接下來對(duì)光照偏強(qiáng)和光照偏弱兩種光照復(fù)雜的情況進(jìn)行具體檢測(cè)效果分析。其檢測(cè)示例效果如圖9 和圖10 所示。
圖9 光照偏強(qiáng)下檢測(cè)結(jié)果Fig.9 Detection results under light intensity bias
圖10 光照偏弱下檢測(cè)結(jié)果Fig.10 Detection results under low light intensity
由圖9 可以看出來,本文算法相比改進(jìn)之前的檢測(cè)到的目標(biāo)個(gè)數(shù)得到提升,最右邊的目標(biāo)雖然經(jīng)過太陽(yáng)照射但依然可以檢測(cè)到目標(biāo)。對(duì)于圖10 在光線偏弱的情況下,檢測(cè)到的目標(biāo)數(shù)從6 個(gè)提升到8 個(gè)。雖然沒有將目標(biāo)全部檢測(cè)出來,但是相比于改進(jìn)之前,檢測(cè)的結(jié)果有了明顯的改善。綜上所述,本文算法在復(fù)雜光照條件下檢測(cè)人臉佩戴口罩相比之前的算法,其效果更好。
本文以YOLOv4 算法為基礎(chǔ),提出了一種改進(jìn)的方法用來解決復(fù)雜光照下人臉佩戴口罩的檢測(cè)任務(wù)。同時(shí)提出了一種圖像篩選算法,制作出符合復(fù)雜光照條件下的數(shù)據(jù)集并進(jìn)行標(biāo)注。最后通過實(shí)驗(yàn)證明,其平均精度均值達(dá)到92.1%,各方面效果均得到了提升。未來工作將繼續(xù)對(duì)數(shù)據(jù)集進(jìn)行擴(kuò)充,并對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行進(jìn)一步優(yōu)化,來提高檢測(cè)的準(zhǔn)確性和實(shí)時(shí)性。