任 鈺,劉全金,黃 忠,胡浪濤,劉國明
(安慶師范大學電子工程與智能制造學院,安徽 安慶 246133)
新型冠狀病毒肺炎是一種新型傳染病,有研究表明佩戴口罩能將新冠肺炎病毒的感染風險從17.4%降到3.1%[1]。疫情防控期間,在人流密集的公共場所,確保每個人佩戴口罩對防控疫情至關(guān)重要。人工檢測口罩佩戴耗費人力、物力且效率低。隨著計算機硬件技術(shù)的發(fā)展,深度學習在圖像識別和目標檢測等領(lǐng)域得到廣泛應(yīng)用。以卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)為核心搭建的深度學習模型在2012年的ImageNet圖像分類挑戰(zhàn)賽中獲得冠軍,掀起了研究深度學習的熱潮[2]。疫情發(fā)生后,研究者將基于深度學習的目標檢測算法用于口罩佩戴檢測。管軍霖融合圖像高低頻成分提出基于YOLOv4卷積神經(jīng)網(wǎng)絡(luò)的口罩佩戴檢測方法,提高了低分辨率人臉目標的檢測性能[3]。鄧黃瀟將Retinanet算法與ResNet50結(jié)合,改善了復(fù)雜背景下口罩佩戴檢測效果[4]。上述算法均存在自然場景下多口罩目標檢測能力不足的問題。為此,本文利用遷移學習思想,以Faster R-CNN算法為檢測框架,分別采用VGG16、ResNet50和ResNet101作為特征提取網(wǎng)絡(luò)進行口罩佩戴檢測實驗,并與常見的目標檢測算法YOLOv3和SSD進行對比實驗。從FDDB和MAFA數(shù)據(jù)集中挑選出6 870張圖像,對圖像重新標注,構(gòu)建不同自然場景下人臉佩戴口罩數(shù)據(jù)集。通過調(diào)整學習率和權(quán)重衰減等參數(shù),對Faster R-CNN網(wǎng)絡(luò)進行訓練,以適應(yīng)不同環(huán)境下的多目標口罩佩戴檢測任務(wù),進一步提高模型的多目標檢測精度和魯棒性。
在2012年的ImageNet圖像分類挑戰(zhàn)賽中,Hinton團隊首次使用以卷積神經(jīng)網(wǎng)絡(luò)為核心搭建的深度學習模型AlexNet將分類誤差降到了15%[5]。卷積層與下一層之間的一個完整的特征映射過程是由濾波器組成,如圖1所示。在第l層的任意一次特征映射中,第l+1層中(i,j)處的特征值Zi,j表示為Zi,j=,其中,Xi,j是以位置(i,j)為中心的輸入濾波器,為nc通道上濾波器的權(quán)重特征向量,是nc通道上濾波器的偏置向量。激活函數(shù)將非線性性質(zhì)引入卷積網(wǎng)絡(luò)以構(gòu)造更深的卷積網(wǎng)絡(luò)。激活函數(shù)中最常用的是ReLu激活函數(shù),一次典型的非線性卷積映射表示為Y=ReLu(sum(X*W+b))。
圖1 單層卷積神經(jīng)網(wǎng)絡(luò)
目標檢測是計算機視覺領(lǐng)域中的一個重要課題。相比傳統(tǒng)算法,基于深度學習的目標檢測算法能提取到圖像高層特征,提高特征表達能力,識別精度得到大幅提升[6]。基于深度學習的目標檢測算法,主要分為兩類:一類是邊框回歸的單階段目標檢測算法,代表算法有YOLO系列[7]、SSD系列[8]、RetinaNet[9]和EfficientDet[10]等;另一類是以候選區(qū)域推薦為主的雙階段目標檢測算法,代表算法有R-CNN系列[11]、SPP-Net[12]和Mask R-CNN[13]等。
2014年,Ross Girshick首先使用選擇性搜索算法生成待分類的候選區(qū)域,再送入模型中進行檢測,提出雙階段R-CNN(Region-based CNN)算法。作為利用CNN進行目標檢測的開山之作,R-CNN采用AlexNet進行特征提取,最終的MAP(Mean Average Precision)值比傳統(tǒng)方法提升近20%。
2015年Girshick等吸收了SPP-Net的思想提出了Fast R-CNN[14],將R-CNN最后一個池化層改成感興趣區(qū)域池化層。Fast R-CNN將輸入的原圖像以及由選擇性搜索算法提取的2 000個感興趣區(qū)域的坐標信息一起輸入到CNN中,這樣,只需一次CNN前向傳播就可以完成R-CNN中2 000次前向傳播的計算。2016年,Ren等[15]以原始Fast R-CNN為基礎(chǔ),在公共特征圖上設(shè)置一個滑動窗,提出RPN網(wǎng)絡(luò)?;瑒哟翱诿炕瑒右淮螘a(chǎn)生若干個以其為中心、不同尺度與長寬比的錨框,根據(jù)卷積的平移不變性,以每個錨框中心位置為基準提供給RPN,得到一個候選區(qū)域。圖2展示了RPN的結(jié)構(gòu),一個特征圖經(jīng)過滑動窗口處理,得到256維特征,然后通過全連接層得到目標的類別和坐標偏移值。
圖2 區(qū)域推薦網(wǎng)絡(luò)(RPN)結(jié)構(gòu)
本文在Fast R-CNN算法上加入?yún)^(qū)域推薦網(wǎng)絡(luò)(RPN),提出Faster R-CNN算法。針對復(fù)雜場景下口罩特征難以提取和多目標等特點,以Faster R-CNN為檢測框架搭建口罩佩戴檢測模型,模型訓練和測試流程如圖3所示。首先RPN從公共特征圖中產(chǎn)生一系列人臉和佩戴口罩人臉的候選框,然后利用卷積的平移不變性,將RPN生成的候選框位置信息映射回特征圖中,再通過感興趣區(qū)域池化層生成固定大小的特征圖并送入由全連接層構(gòu)成的分類網(wǎng)絡(luò),進行口罩佩戴檢測。
圖3 口罩佩戴檢測模型訓練和測試流程
因為目前沒有公開的自然場景下人臉佩戴口罩的數(shù)據(jù)集,所以本文從FDDB數(shù)據(jù)集和MAFA遮擋人臉數(shù)據(jù)集中抽取6 870張圖像,使用Labelimg圖像標注軟件進行統(tǒng)一標注,制作成Pascal VOC格式的數(shù)據(jù)集。標注的信息為矩形框的左上角坐標值、右下角坐標值和類別。圖像分為佩戴口罩人臉和未佩戴口罩人臉兩個類別。按照9:1:1將數(shù)據(jù)集劃分成訓練集、驗證集和獨立測試集,獨立測試集不參與口罩檢測模型訓練,圖像樣本數(shù)見表1。
表1 數(shù)據(jù)集中待檢測目標分布
圖4顯示了口罩佩戴檢測圖像標注圖例,共有2個待檢測目標(人臉),均為佩戴口罩目標,具體標注數(shù)據(jù)如表2所示。每個目標共有5個參數(shù),前4個參數(shù)是矩形框在圖像中的坐標,第5個參數(shù)是標簽類別。
圖4 口罩佩戴檢測圖像標注圖例
表2 使用Labelimg軟件標注示例
2.3.1 特征提取網(wǎng)絡(luò)
視覺幾何網(wǎng)絡(luò)(VGG)由于層數(shù)較淺,無法提取到復(fù)雜背景下目標的高層語義特征。ResNet[16]利用殘差學習的思想,運用跳躍連接的方法緩解訓練過程中梯度消失的現(xiàn)象。相比原有的VGG16,本文使用的ResNet層數(shù)更深。輸入x通過殘差層后輸出F(x),殘差塊的輸出為F(x)+x,如圖5所示。運用跳躍連接能搭建更深的網(wǎng)絡(luò),并且不會出現(xiàn)梯度消失現(xiàn)象,檢測準確率也隨之提高。針對口罩佩戴檢測場景下的復(fù)雜環(huán)境、光照條件和人臉多尺度等特征,使用網(wǎng)絡(luò)更深且運算量更小的ResNet101替代Faster R-CNN原有的VGG構(gòu)建網(wǎng)絡(luò)模型。
圖5 殘差網(wǎng)絡(luò)模塊
2.3.2 模型訓練
利用遷移學習思想,將ImageNet上訓練好的ResNet101遷移到新任務(wù)。預(yù)訓練的ResNet101具有邊緣和紋理等特征提取能力,同時在訓練過程中對其進行微調(diào)提高模型的泛化能力。
模型訓練采用自適應(yīng)矩估計優(yōu)化器作為網(wǎng)絡(luò)的訓練優(yōu)化策略,共訓練50輪次。前25輪次對特征提取網(wǎng)絡(luò)中的參數(shù)凍結(jié),學習率從0.000 1開始動態(tài)調(diào)整,每一輪次更新完成后,學習率乘以0.9。從第26輪次開始,特征提取網(wǎng)絡(luò)進行解凍訓練,學習率從0.000 01開始,每一輪次更新完成后,學習率乘以0.95,并對特征提取網(wǎng)絡(luò)中的權(quán)重進行微調(diào)。
2.3.3 超參數(shù)選擇
實驗初始時若不設(shè)置權(quán)重衰減會導(dǎo)致訓練后期訓練集損失值不斷下降,而驗證集損失值不降反升,產(chǎn)生過擬合現(xiàn)象。通過添加權(quán)重衰減系數(shù),對當前權(quán)重按一定比例縮小,修改后的權(quán)重更新公式為
其中,θt為權(quán)重,α為學習率,?ft為梯度值,(1-λ)為權(quán)重衰減系數(shù)。在優(yōu)化器中設(shè)置衰減系數(shù)為0.000 5后,訓練后期的驗證集損失值開始下降,過擬合現(xiàn)象得到緩解,模型在測試集上的檢測精度得到提升。
在模型訓練過程中,分別用0.001、0.000 1和0.000 01作為初始學習率,實驗結(jié)果如表3所示。初始學習率為0.001時,模型收斂速度較快,但容易陷入局部最小值點,訓練集損失值長時間不下降。初始學習率為0.000 1時,模型收斂速度慢,需要較長時間才能完全收斂。初始學習率為0.000 01時,模型收斂速度緩慢,最終檢測效果和初始學習率為0.000 1時的結(jié)果沒有差別。
表3 不同學習率和權(quán)重衰減的訓練結(jié)果
口罩佩戴檢測實驗在Windows 10操作系統(tǒng)中實現(xiàn),編程語言采用Python3.6,深度學習框架選擇Py-Torch1.2.0,GPU加速計算工具為CUDA 10.0。硬件配置主要包括型號為Intel_i5-4590_3.30GHz的CPU,型號為NVIDIA GeForce GTX 1060 6GB的GPU,RAM內(nèi)存大小為16 GB。
本文采用目標檢測領(lǐng)域中常用的精確度均值(AP)和平均精確度均值(MAP)來客觀評價口罩佩戴檢測模型的檢測效果。精確度p的計算式為
其中,mTP表示正樣本被分類器正確預(yù)測的個數(shù),nFP表示正樣本被分類器錯誤預(yù)測的個數(shù)。
通過調(diào)整置信度閾值的方法得到n個精確度,對所有精確度求平均值得到m的值。m的值反映單一目標檢測效果,計算式為
mMAP表示對所有類別的精確度均值求平均,反映總體目標檢測效果,計算式為
其中,n為類別的個數(shù),j表示某一類別。
使用3種特征提取網(wǎng)絡(luò)VGG16、ResNet50和ResNet101進行特征提取。將測試集中687張圖像送入訓練好的模型進行口罩佩戴檢測實驗,結(jié)果如表4所示。
表4 三種特征提取網(wǎng)絡(luò)的口罩佩戴檢測結(jié)果
VGG16作為骨干網(wǎng)絡(luò)平均檢測每張圖像所需時間為234 ms,當采用更深的ResNet50和ResNet101作為骨干網(wǎng)絡(luò),平均檢測時間分別為295 ms和310 ms。ResNet101作為特征提取網(wǎng)絡(luò),模型在未佩戴口罩人臉樣本上的MAP是89.41%,分別比ResNet50和VGG16高出3.99%和12.21%。實驗結(jié)果表明,ResNet的跳躍連接在網(wǎng)絡(luò)深度增加時能避免出現(xiàn)梯度消失等現(xiàn)象,且特征學習能力比VGG16顯著增強,擁有更深卷積層的ResNet101可以更好地擬合出目標函數(shù),最終檢測效果最好。
為了進一步驗證模型的檢測性能,在本文數(shù)據(jù)集上訓練YOLOv3、SSD和FMD-RCNN模型并測試其檢測效果,結(jié)果如表5所示。SSD算法采用多尺度檢測,以VGG16為特征提取網(wǎng)絡(luò),檢測效果比YOLOv1算法有很大改善。YOLOv3相對于YOLOv2增加了特征金字塔實現(xiàn)多尺度檢測,并使用殘差模型構(gòu)建更深的特征提取網(wǎng)絡(luò)。實驗結(jié)果進一步表明,結(jié)合ResNet101與Faster R-CNN的FMD-RCNN算法能夠有效地提升算法的檢測精度,針對佩戴口罩人臉檢測的AP能達到98%,模型的MAP達89.41%,與YOLOv3和SSD算法相比均有顯著提升。由于Faster R-CNN屬于雙階段算法,所以FMDRCNN的速度慢于其他兩種算法。
表5 三種目標檢測算法在測試集上的檢測結(jié)果
為驗證模型的泛化性和魯棒性,在百度圖片中下載自然場景下的圖像進行口罩佩戴檢測實驗,包括不同光照條件的機場、火車站和行人。如圖6所示,即使在不同場景和光照條件下,F(xiàn)MD-RCNN均能準確地檢測出佩戴口罩人臉目標,且具有較高的置信度。本文模型能夠精準地檢測不同光照、拍攝距離和偏轉(zhuǎn)角度的多人臉佩戴口罩目標,模型具有較高的精度和魯棒性。
圖6 口罩佩戴檢測效果
本文以Faster R-CNN為檢測框架并利用遷移學習思想搭建口罩佩戴檢測模型,選取FDDB和MAFA中的部分圖像,使用Labelimg軟件對圖像進行重新標注,制作成Pascal VOC格式圖像,構(gòu)建口罩佩戴檢測數(shù)據(jù)集。利用遷移學習思想,分別在以VGG16、ResNet50和ResNet101為特征提取網(wǎng)絡(luò)的Faster RCNN模型上進行訓練。檢測結(jié)果表明,結(jié)合ResNet101的模型檢測效果較好,與YOLOv3和SSD算法相比,F(xiàn)MD-RCNN算法精度較高,對場景變化和目標遮擋重疊等情況有良好的魯棒性。因為待測目標尺寸大小不一,現(xiàn)階段的模型對于此類圖像中小目標的檢測不太理想,未來的工作將集中在改進小目標的檢測效果上。