于 波,馮 偉
(東北石油大學(xué)物理與電子工程學(xué)院,黑龍江 大慶 163000)
自從2019年12月份以來,新冠肺炎疫情蔓延到全球各地,新型冠狀病毒具有較強的傳染性,它可以通過空氣作為媒介進行傳播,其形式主要有飛沫和氣溶膠等,并且可以在較適宜的環(huán)境中存活5天左右[1-2]。因此佩戴醫(yī)用外科口罩和N95口罩可以有效避免該病毒在人與人之間傳播。雖然公共場合下佩戴口罩是每個的責(zé)任,但仍需要靠政府和社會的管理,因此在人流量密集的區(qū)域比如高鐵站,地鐵站和旅游景區(qū)等地方可以采用一定的手段進行管理和監(jiān)督,例如使用基于神經(jīng)網(wǎng)絡(luò)的目標檢測算法進行一定程度上的監(jiān)督,這種檢測算法較以往傳統(tǒng)算法在檢測精度和速度上都有了很大提升。
近年來,目標檢測算法進入了快速發(fā)展階段[3-5]。2014年Chen等人提出了RCNN網(wǎng)絡(luò)[6],RCNN通過用CNN提取出固定的特征,對每個類別都用SVM進行分類訓(xùn)練,代替了用遷移學(xué)習(xí)的softmax分類器,雖然在當(dāng)年實現(xiàn)了較高質(zhì)量的目標檢測,但是其SVM訓(xùn)練和候選框回歸訓(xùn)練不僅占據(jù)了大量的磁盤空間,更對計算的實時性有著巨大的挑戰(zhàn)。在2016年,Girshick等人提出了Fast RCNN[7],F(xiàn)ast RCNN在RCN上提出了區(qū)域建議共享卷積計算的思想,即在最后一層卷積層和第一個全連接層上添加了ROI[8]來提取每個區(qū)域建議的固定長度,從而提高了檢測速度和質(zhì)量,Ren等人提出了Faster RCNN[9],F(xiàn)aster RCNN顯著的加快了檢測的速度,可以將Faster RCNN看作RPN+Fast RCNN,利用anchor[10]機制將區(qū)域建議和卷積網(wǎng)絡(luò)聯(lián)系在一起,anchor機制也影響了SSD[11]目標檢測算法的提出。RCNN這一系列思想主要是在保證一定的檢測速度的同時,對目標檢測精度有著更高要求,屬于兩階段檢測框架(Two Stage Framework)包括了對區(qū)域建議進行的預(yù)處理,使整個檢測過程分為兩個階段。2016年redmon等人提出了YOLO[12]檢測算法,其算法將區(qū)域建議階段取消,通過將卷積后的特征圖劃分為SxS的網(wǎng)格,對每個網(wǎng)格都進行分類和回歸運算得到預(yù)測結(jié)果,由于完全拋棄了區(qū)域建議階段,YOLO的速度較RCNN系列有著較大的提升。同年,Liu等人提出了SSD檢測算法,SSD算法和YOLO算法同屬于單階段檢測框架(One Stage Framework)SSD由于采用了在多個不同大小的特征圖上進行檢測,對不同尺度的目標檢測具有較好的魯棒性,其檢測速度不僅快于YOLO,檢測精度也相對于Faster RCNN有一定的競爭力。
然而,傳統(tǒng)的SSD檢測算法采用smooth L1建立回歸的損失函數(shù),這一做法導(dǎo)致?lián)p失函數(shù)和評價函數(shù)并不統(tǒng)一,極有可能出現(xiàn)目標函數(shù)局部最優(yōu)并不是IoU局部最優(yōu)的問題。因此本文提出了一種基于SSD改進的口罩佩戴檢測算法。
本文提出的改進SSD算法考慮到了不同相交方式對目標函數(shù)的影響,提出兩框的交集與包含兩框的最小框之比。若真實框和預(yù)測框沒有交集將導(dǎo)致兩框的交集與包含兩框的最小框之比為零,讓目標函數(shù)很難收斂,鑒于此,本文另外增加了根據(jù)真實框和預(yù)測框的幾何中心點之間的歐式距離的目標函數(shù)。綜上所述,本文提出的新的目標函數(shù)即兩框的交集與包含兩框的最小框之比與真實框和預(yù)測框的幾何中心點之間的歐氏距離之和的目標函數(shù)。
在實驗中將分別采用自然場景下的口罩佩戴數(shù)據(jù)集和VOC2007數(shù)據(jù)集對改進的SSD算法進行訓(xùn)練和評估。采用的口罩佩戴數(shù)據(jù)集從互聯(lián)網(wǎng)上進行搜索和獲取,分為戴口罩和沒有戴口罩兩大類,并對采集到的圖片打上標簽和標記出真實框。VOC2007數(shù)據(jù)集是目標檢測中常用的數(shù)據(jù)集,該數(shù)據(jù)集標注了人、車和椅子等20類常見的物體,通過對預(yù)測結(jié)果的分析可以評判一個目標檢測算法的優(yōu)劣。
在相同實驗環(huán)境中運行SDD算法的代碼和改進SSD算法的代碼,輸入口罩佩戴數(shù)據(jù)集和VOC2007數(shù)據(jù)集,輸出預(yù)測框和對應(yīng)的類別,計算mAP-50。
實驗表明,改進的SSD算法較SSD算法在口罩佩戴數(shù)據(jù)集上mAP-50提高了1.96%,在VOC2007數(shù)據(jù)集上mAP-50提高了1.97%。
本章節(jié)對IoU、SSD算法進行詳細介紹
IoU是一種評價目標檢測器的一種指標。圖三中介紹了矩形A、B與包含A、B的最小框C。
圖1 矩形A、B與包含A、B的最小框C
對于真實框和通過目標檢測算法所的出來的預(yù)測框,需要用IoU這個指標對真實框和預(yù)測款進行判斷,IoU是一個比值關(guān)系,即兩框的交集與兩框的并集的比值,公式如下
(1)
對于檢測框的擬合實際上是一種回歸任務(wù),和分類任務(wù)不同的是,預(yù)測框和真實框需要進行坐標的匹配,而坐標的完全匹配是不可靠的,因此IoU作為一種評價坐標擬合的指標,可以獎勵那些擬合程度較好的IoU框。同時IoU還有一個很好的特性就是尺度不變性,即對尺度不敏感,預(yù)測框和真實框的關(guān)系在不同尺度具有不變的特性。相比于smoothL1 Loss,IoU可以反映預(yù)測框和真實框的重合程度,如圖2所示,不同的預(yù)測框和真實框計算得到的smoothL1 Loss的值一致,IoU卻有著差異,這會預(yù)測出在檢測口罩佩戴上產(chǎn)生截取不完整的情況。但IoU也有這自己的局限性,即并不能很好的反映兩個物體是以怎樣的方式相交的,如圖3 所示,IoU相差很小,但圖3中兩幅圖反映的真實框和預(yù)測框相交方式卻有所差別,用IoU并不能很好的對真實框進行預(yù)測。若把IoU作為目標函數(shù)進行優(yōu)化,也會伴隨著其它問題,例如兩個框沒有相交的情況下,根據(jù)定義IoU的值為0,這時沒有梯度回傳,無法進行學(xué)習(xí)訓(xùn)練。用IoU作為目標函數(shù)也就無法衡量預(yù)測框與真實框是否相鄰或者很遠。
圖2 smoothL1損失相同時IoU的表現(xiàn)
圖3 IoU近似真實框和預(yù)測框相交情況
SSD算法是單階段檢測框架的具有代表性的算法,骨干網(wǎng)絡(luò)采用了VGG網(wǎng)絡(luò)進行搭建,VGG[13]網(wǎng)絡(luò)是由牛津大學(xué)計算機視覺組和谷歌旗下的團隊共同提出的,在2014年ImageNet競賽中獲得了第二名的成績。VGG網(wǎng)絡(luò)結(jié)構(gòu)簡潔,泛化能力強便于作為其它網(wǎng)絡(luò)的骨干網(wǎng)絡(luò),其采用了小卷積核和多卷積子層,能夠有效的減少參數(shù)的數(shù)量,增強非線性映射并提高網(wǎng)絡(luò)的表達能力。SSD算法同時借鑒了Faster RCNN和YOLO的思想,將通過骨干網(wǎng)絡(luò)的特征圖分割成SxS的大小的defaUlt box,在每個default box上引進anchor機制,即通過在每個default box上加入不同尺度和大小的錨框來擬合對應(yīng)在該default box的真實框,此舉是為了讓偏差都可以分布在很小的范圍內(nèi),防止直接擬合帶來的退化問題。為了提高小目標檢測的魯棒性,SSD加入了多尺度特征圖[14],即在不同尺寸的特征圖上進行分類和回歸,該策略充分的利用了從骨干網(wǎng)絡(luò)中采集到的語義信息,SSD的結(jié)構(gòu)如圖4所示。
圖4 SSD結(jié)構(gòu)圖
SSD算法在對bounding box進行預(yù)測的時候采用了smooth L1損失,對于置信度誤差,采用了softmax loss,SSD的損失函數(shù)如下公式所示,其中N表示先驗框正樣本的數(shù)量,x表示某個先驗框和真實框是否匹配,c表示置信度,l表示先驗框?qū)?yīng)的邊界的預(yù)測值,而g代表的是真實框的位置參數(shù)。用非極大值抑制(NMS)對預(yù)測結(jié)果進行篩選,去除類別一致且高度重合的框,這樣大大減少了計算量,在滿足不損失精度的情況下,能滿足實時性的要求。
(2)
結(jié)合上文所敘述的用IoU作為目標函數(shù)所存在的問題,可以發(fā)現(xiàn)導(dǎo)致這些問題的原因可能是對于重疊區(qū)域和非重疊區(qū)域的關(guān)注,而忽略了包含預(yù)測框和真實框的區(qū)域和預(yù)測框和真實框的幾何距離。
因此本文提出了一種兼顧包含預(yù)測框和真實框的區(qū)域和預(yù)測框和真實框的幾何距離的計算方法,公式如下
(3)
其中,公式的前一項關(guān)注的是預(yù)測框和真實框交集與包含預(yù)測框和真實框的最小區(qū)域,滿足了對包含預(yù)測框和真實框的區(qū)域的要求,公式的后一項中關(guān)注預(yù)測框和真實框的幾何距離,p表示預(yù)測框中心點的坐標值,pgt表示真實框中心點的坐標值,ρ2代表對預(yù)測框和真實框取歐式距離,其中τ∈(0,1),當(dāng)|A∩B|取0時,τ取1,這時EIoU就退化成計算預(yù)測框和真實框的歐氏距離的公式,當(dāng)|A∩B|不為0時,τ取0這時,EIoU計算預(yù)測框和真實框交集與包含預(yù)測框和真實框的最小區(qū)域的比值。通過公式可知,在|A∩B|不為0的情況下,EIoU可以隨預(yù)測框和真實框的重疊區(qū)域增大而增大,隨包含預(yù)測框和真實框的區(qū)域增大而減小。這一公式可以滿足對SSD的改進目標。
EIoU與IoU都可以反映預(yù)測框與真實框的擬合程度,EIoU計算復(fù)雜度和IoU幾乎相當(dāng),但EIoU可以計算預(yù)測框與真實框交集為0的情況。
SSD算法中對預(yù)測框的坐標進行僅僅進行了smooth L1的計算,這種情況下會導(dǎo)致如引言部分所敘述的smooth L1 值一樣的情況下IoU的值卻有著不同,導(dǎo)致這種情況發(fā)生的是由于評價指標和目標函數(shù)的不統(tǒng)一。因此本文提出新的SSD的目標函數(shù),成為原目標函數(shù)的約束函數(shù),該函數(shù)在原有SSD目標函數(shù)的基礎(chǔ)上只針對定位損失進行優(yōu)化,對于置信度損失保持原樣,具體公式如下。
Lloc(x,l,g)
(4)
本文通過使用在SSD網(wǎng)絡(luò)基礎(chǔ)上修改了原損失函數(shù)和IoU評價指標為EIoU來進行模型的訓(xùn)練。在互聯(lián)網(wǎng)上下載SSD的預(yù)訓(xùn)練模型權(quán)重進行遷移學(xué)習(xí)。分別使用SSD和改進SSD在同一實驗環(huán)境下進行模型的訓(xùn)練。
為保證實驗具有普遍性,本文將采用訓(xùn)練每個算法時保存的Loss值較低的四個模型,在四個模型中分別計算mAP-50的值,再從這些值中選出最優(yōu)模型進行對比。
此次實驗設(shè)備信息為:CPU i5 9300H,GPU RTX2060,內(nèi)存 32GB,操作系統(tǒng)為Windows 10 Pro,應(yīng)用的深度學(xué)習(xí)框架為pytorch,采用的數(shù)據(jù)集分別為自制的口罩數(shù)據(jù)集和VOC2007數(shù)據(jù)集。
4.1.1 口罩數(shù)據(jù)集采集
從互聯(lián)網(wǎng)上爬取相關(guān)視頻,對視頻進行按照時間段逐幀采集圖像,之后保存為.jpg格式的圖片。用labelImg對圖片中的人物是否帶口罩分別進行類別標注和真實框標注,最后得到關(guān)于口罩數(shù)據(jù)集的jpg文件和xml文件。
圖5 標注佩戴口罩的labelimg軟件
4.1.2 口罩佩戴檢測實驗
在整個口罩數(shù)據(jù)集中,戴口罩和未戴口罩的具體數(shù)據(jù)下表所示。在進行訓(xùn)練之前對輸入模型的數(shù)據(jù)進行數(shù)據(jù)預(yù)處理,例如增強、降低亮度對比度,圖片尺度變化,色域扭轉(zhuǎn)等方式,對數(shù)據(jù)進行預(yù)處理可以有效的提高網(wǎng)絡(luò)的魯棒性和泛化能力,對在自然場景中的口罩佩戴識別更為精確。
表1 口罩數(shù)據(jù)集信息
模型訓(xùn)練中將初始學(xué)習(xí)率設(shè)置為0.001,訓(xùn)練輪數(shù)為30輪,每輪訓(xùn)練為791次,每次迭代的batch size為16,一共迭代23730次,每次。觀察SSD與改進SSD的損失值,如下圖所示,上邊為改進SSD下邊為原版SSD。
圖6 改進SSD Loss值變化和原版SSD Loss變化
通過Loss值對比發(fā)現(xiàn),改進SSD算法的定位損失從剛開始就已經(jīng)趨于穩(wěn)定了,而置信度損失在前十輪中下降較快,后二十輪趨于緩慢,而原版SSD算法的定位損失和置信度損失下降在前二十輪中下降較快,后十輪中趨于緩慢。
4.1.3 口罩佩戴檢測實驗結(jié)果
本實驗結(jié)果采用的是AP50以及mAP作為評價標準,將得到的四個較優(yōu)模型進行計算,選出其中mAP最高值進行SSD算法和改進SSD算法的對比。
口罩佩戴檢測實驗結(jié)果的AP50和mA-50的具體數(shù)據(jù)如下表所示。
表2 口罩佩戴數(shù)據(jù)集的類別AP和mAP-50
從測試集中隨機抽取兩張圖片輸入改進SSD網(wǎng)絡(luò),用訓(xùn)練好的權(quán)重進行預(yù)測,置信度設(shè)為0.5,NMS的閾值設(shè)為0.45。檢測結(jié)果如圖7所示。
仿照口罩佩戴檢測實驗,將口罩佩戴數(shù)據(jù)集更改為VOC2007數(shù)據(jù)集,在相同設(shè)備實驗環(huán)境下分別對SSD算法和改進SSD算法進行訓(xùn)練,對四個較低的Loss的權(quán)重進行mAP評估,得到最優(yōu)的mAP值的模型。
VOC2007數(shù)據(jù)集的實驗結(jié)果的AP50和mAP-50的具體數(shù)據(jù)如下表所示。
表3 VOC2007數(shù)據(jù)集的類別AP
表4 VOC2007數(shù)據(jù)集的類別AP
表5 VOC2007數(shù)據(jù)集的mAP
圖7 口罩佩戴檢測實驗樣例
由圖6可見SSD算法和改進SSD算法的定位損失,置信度損失和總損失??梢园l(fā)現(xiàn)改進SSD算法的定位損失較SSD算法的在收斂速度上快于SSD算法,因此本文推測原因有兩個,一是目標函數(shù)和評價指標的統(tǒng)一會讓損失函數(shù)的收斂速度變快,二是由于采用了預(yù)測框和真實框的中心點的歐式距離這一思想,使得在網(wǎng)絡(luò)剛開始訓(xùn)練的時候可以讓預(yù)測框和真實框沒有交集的情況下快速收斂。另外,改進SSD算法的置信度損失也較SSD算法收斂較快,本文推測是由于采用EIoU思想產(chǎn)生的預(yù)測框的與真實框更好的擬合導(dǎo)致目標可以在預(yù)測框中被分類,所以置信度會收斂較快。
從表2中可知改進SSD算法的口罩佩戴數(shù)據(jù)集的mAP-50較 SSD算法提高1.96%。雖然未佩戴口罩的檢測的mAP略低于SSD算法0.53%,但戴口罩的檢測的mAP-50高于SSD算法4.84%,這對于口罩佩戴檢測的效果提升有明顯幫助。
從圖7的第一幅圖中可以看出對于不同型號的口罩改進SSD算法都能準確識別,本文推測原因是在數(shù)據(jù)預(yù)處理時對圖片進行增強、降低亮度對比度等方式,且對于分辨率不高的目標,即第一幅圖的從左往右的第一個目標和第三個目標,改進SSD算法都能準確識別,本文推測可能是采用了多尺度特征圖,這豐富了目標的語義信息,可以使網(wǎng)絡(luò)學(xué)習(xí)到更魯棒的特征。
從表3、4、5可以看出對于VOC2007數(shù)據(jù)集,改進SSD算法較SSD算法提高了1.97%的mAP-50。同時可以發(fā)現(xiàn)對于大物體,改進SSD算法會優(yōu)于SSD算法,而小物體SSD算法會優(yōu)于改進SSD算法。本文推測是由于采用了EIoU的策略,使網(wǎng)絡(luò)關(guān)注包含預(yù)測框和真實框的最小框,對于小物體而言,若回歸產(chǎn)生的坐標稍大一點,可能分類網(wǎng)絡(luò)就很難檢測到目標,而這對于定位損失來說是由于是小物體所產(chǎn)生的數(shù)值不會太大,但對于置信度損失來說,就可能產(chǎn)生較大的數(shù)值,反映到最后的mAP上就是小物體檢測效果不佳。
本文首先發(fā)現(xiàn)對于SSD現(xiàn)有的損失函數(shù)計算是簡單的對坐標進行smooth L1計算,這種計算方法不能能好的描述物體的重合情況,若把 IoU作為目標函數(shù)進行優(yōu)化的情況,也存在著無法衡量預(yù)測框與真實框的相交方式。因此本文提出了用EIoU作為目標函數(shù)進行優(yōu)化的策略,不僅讓評價指標和損失函數(shù)統(tǒng)一,也對預(yù)測框和真實框的相交方式有了較好的反映。在損失函數(shù)收斂上采用EIoU的改進SSD算法有著更快的收斂速度,且在口罩佩戴數(shù)據(jù)集和VOC2007數(shù)據(jù)集中mAP也高于原本的SSD算法。該算法訓(xùn)練出來的口罩佩戴檢測在當(dāng)前疫情情況下有較高應(yīng)用價值,未來希望將能將繼續(xù)優(yōu)化改進SSD算法,使口罩佩戴檢測模型精度更高,更希望疫情能早日過去。