劉國明,江巨浪,查 兵,任 鈺,嚴華鋒
(安慶師范大學電子工程與智能制造學院,安徽安慶 246133)
2020年初新冠肺炎疫情蔓延全球,對人類生命健康構(gòu)成嚴重威脅,在公共場所佩戴口罩是預防疫情傳播的最有效措施。采用深度神經(jīng)網(wǎng)絡自動檢測口罩佩戴,能夠彌補人工管控的不足。在新冠肺炎疫情發(fā)生之前,還沒有專門研究口罩佩戴檢測算法的文獻,但在人臉檢測、目標檢測和物體分類等方面已經(jīng)提出了很多算法。2019年,Insightface團隊提出了基于one-state的RetinaFace算法[1],該算法具有較高的檢測精度和較快的檢測速度。牛作東等[2]通過改進RetinaFace人臉檢測算法,實現(xiàn)對口罩佩戴的有效檢測,該方法用于自建的3 000 張圖片數(shù)據(jù)集,口罩目標檢測準確率為87.7%,但該算法需要檢測到眼、口、鼻等特征,存在對小目標和戴口罩側(cè)臉漏檢的不足。本文基于ResNet-34深度神經(jīng)網(wǎng)絡模型[3],研究網(wǎng)絡輸入圖片的預處理方法、網(wǎng)絡模型的最優(yōu)學習率和批數(shù)據(jù)量大小(batch size),對自建的包含12 000幅口罩佩戴圖片樣本集進行訓練。相比于文獻[1]的算法,口罩檢測準確率得到提高,對小目標和側(cè)面戴口罩人臉漏檢的不足得到改善,并且獲得一個性能優(yōu)良的口罩佩戴檢測器。
一般情況下網(wǎng)絡越深,檢測效果越好,但計算量大,網(wǎng)絡很難訓練成功。因此,對于深度神經(jīng)網(wǎng)絡難以訓練的問題,微軟實驗室提出了殘差網(wǎng)絡模塊(Residual)并丟棄了dropout機制。引入殘差網(wǎng)絡解決了超深網(wǎng)絡參數(shù)優(yōu)化困難,提高了超深網(wǎng)絡的分類準確率,其內(nèi)部的殘差塊使用了跳躍連接(shortcut),一定程度上解決了在深度神經(jīng)網(wǎng)絡中的梯度消失問題。ResNet-34網(wǎng)絡擁有多個殘差模塊,對單獨一個殘差模塊來說,網(wǎng)絡輸入假設為x,希望學習到的函數(shù)為H(x),在實驗中F(x)相比于H(x)更容易優(yōu)化,其中H(x)=F(x)+x。圖1為殘差網(wǎng)絡模塊示意圖。
由圖1可知,跳躍連接并沒有增加額外的網(wǎng)絡參量,所以不會增強原網(wǎng)絡的復雜度。但加入了跳躍連接后,訓練過程中底層的誤差可以通過跳躍連接向上一層傳播,減弱了層數(shù)過多造成的梯度消失現(xiàn)象,保證了網(wǎng)絡訓練精度。
圖1 殘差網(wǎng)絡模塊
BN就是對每一批訓練數(shù)據(jù)進行標準歸一化操作,使得這批數(shù)據(jù)都滿足標準正態(tài)分布。在BN出現(xiàn)之前,歸一化操作只在數(shù)據(jù)輸入層,現(xiàn)在BN可對網(wǎng)絡中任意一層數(shù)據(jù)進行歸一化操作,這樣每層的訓練數(shù)據(jù)都是被優(yōu)化的,網(wǎng)絡模型自然就更好。實驗結(jié)果表明,BN在一定程度上減少了梯度消失和梯度爆炸,加速了模型的收斂速度,獲取了更好的網(wǎng)絡模型[4-6]。
機器學習中,數(shù)據(jù)集的質(zhì)量對模型的泛化能力至關(guān)重要[7]。由于沒有公開的口罩數(shù)據(jù)集,本文制作了一個口罩數(shù)據(jù)集,制作過程考慮:(1)佩戴的口罩外觀形式盡量多樣化;(2)選取多種視角口罩圖片;(3)拉寬口罩在整個圖片所占的比例;(4)負樣本中選取遮擋口鼻部位的圖片;(5)負樣本選取有類似口罩的遮擋物;(6)加大圖像長寬比范圍;(7)大量選取自然場景下拍攝的圖片。部分樣本如圖2所示。所使用的圖片數(shù)據(jù)集大部分是在遵循網(wǎng)絡爬蟲協(xié)議前提下獲取的,小部分是從新聞視頻中截取的,還有一些為個人所拍攝的,共6 000張,戴口罩和未佩戴口罩比例約為1∶1。
圖2 部分樣本圖片
為了防止網(wǎng)絡過擬合,獲取更優(yōu)的網(wǎng)絡模型,訓練數(shù)據(jù)集應盡量大,對已有的6 000 個樣本數(shù)據(jù)進一步擴充。根據(jù)數(shù)據(jù)集的特點,選取三分之一的數(shù)據(jù)作水平方向鏡像;三分之一的數(shù)據(jù)作隨機45度順時針或逆時針旋轉(zhuǎn);三分之一的數(shù)據(jù)作尺度縮放,縮放比例控制在0.8~1.2范圍內(nèi),最終獲取的數(shù)據(jù)量為12 000 張圖片。將數(shù)據(jù)集的60%作為訓練集,20%作為驗證集,20%作為測試集。未對圖像做色彩偏移,主要因為口罩與背景存在較明顯的灰度級差距,色彩偏移會使得口罩的特征不能被很好地提取,從而影響檢測結(jié)果的準確率。
實驗用的卷積網(wǎng)絡輸入圖片大小要求為224×224,而圖片在采集過程中的尺寸不固定,必須進行預處理。常規(guī)的處理方式為中心裁剪或直接按目標尺寸縮放,但是效果不是很好。中心裁剪在處理長寬比較大的圖片時,會裁掉戴口罩的部位;直接縮放會導致口罩部位變形,口罩特征會被扭曲。本文處理訓練集和測試集稍微有些不同,訓練集采用隨機縮放裁剪為224×224的尺寸,隨機裁剪的目的是增強背景數(shù)據(jù)噪聲,防止過擬合以達到增強模型穩(wěn)定性的能力;測試集圖片邊界首先填充到長寬一樣的尺寸,再等比例縮放到256×256的尺寸,最后再用中心裁剪的方式獲得224×224尺寸的圖片。
獲得規(guī)定尺寸圖片之后,對所有數(shù)據(jù)進行歸一化,使數(shù)據(jù)服從標準正態(tài)分布,其作用是使輸入數(shù)據(jù)具有相同的尺度,減少因數(shù)據(jù)相差過大而引起誤差。本文數(shù)據(jù)集在R、G、B 上的期望分別為0.485、0.456、0.406,標準方差分別為0.229、0.224、0.225,3個維度均進行標準化。
未對輸入圖片預處理時,網(wǎng)絡準確率最高為98.01%,但是對錯誤分類的圖片分析之后發(fā)現(xiàn),有些戴口罩沒有被檢測出來,如圖3中1、2、4圖片,這不是希望的結(jié)果。于是,采用上述預處理方法,將圖片邊界填充到等長寬等比例,再進行縮放、中心裁剪,處理之后圖3中1~5號圖片的問題得以解決,對于7號和10號用手遮擋嘴巴部位也能夠正確分類為未佩戴口罩,網(wǎng)絡準確率提升到98.41%。對于6號尺度較小的側(cè)面口罩,9號和12號遮擋嘴巴部位圖片分類仍然錯誤。
圖3 沒有進行預處理被錯誤識別的圖片
批數(shù)據(jù)量是訓練過程中每次喂給神經(jīng)網(wǎng)絡的圖片數(shù)量,其大小對網(wǎng)絡的精度有很大的影響,一般批數(shù)據(jù)量常見的取值有32、64、128、256,甚至更大。對于深度卷積神經(jīng)網(wǎng)絡而言,批數(shù)據(jù)量越大,這批數(shù)據(jù)分布越接近于整體數(shù)據(jù)集,訓練效果會越好。不過更大的批數(shù)據(jù)量要求更大的GPU顯存,受實驗設備限制。本文實驗所用顯卡不足以處理256大小的數(shù)據(jù)量,故將該數(shù)值丟棄,另外選取了100和150進行測試,結(jié)果如表1所示。
由表1可以看出,當批數(shù)據(jù)量為較小的32時,準確率只有97.97%,迭代次數(shù)也比較多;當增大批數(shù)據(jù)量,準確率隨之提升,迭代次數(shù)也隨之下降。準確率最好的是批數(shù)據(jù)量為128時,準確率高達98.41%,當批數(shù)據(jù)量繼續(xù)增加到150的時候,準確率卻有所下降。因此,對本數(shù)據(jù)集的批數(shù)據(jù)量取128較為合適。
表1 批數(shù)據(jù)量對模型的影響
網(wǎng)絡的訓練其實就是尋找最優(yōu)解的過程,而學習率反映了優(yōu)化過程的快慢。學習率設置過大,優(yōu)化速度快,但是網(wǎng)絡會容易跳過全局最優(yōu)解,在最優(yōu)解之外來回震蕩;學習率設置過小,則會影響網(wǎng)絡訓練的速度,而且模型容易陷入局部最優(yōu)解?;诖?,進一步研究學習率對上述網(wǎng)絡精度的影響。由于采用的是遷移學習方法,網(wǎng)絡已經(jīng)有較好的權(quán)重,學習率相對要取較小值,學習率設置和實驗結(jié)果如表2所示。
表2 不同學習率模型的準確率與迭代次數(shù)
在驗證集上,隨著學習率下降,準確率會上升,當學習率減小到8×10-5時,準確率達到最高,為98.41%,繼續(xù)減小學習率,準確率反而會下降,網(wǎng)絡模型只能達到局部最優(yōu)解。
為驗證口罩檢測器模型的效果,與文獻[1]的檢測準確率和檢測效率做了比較。在驗證集上,表現(xiàn)最好的模型準確率為98.41%,將此模型在測試集上測試,本文檢測準確率為97.25%,文獻[1]檢測準確率為88.5%。在文獻[1]漏檢結(jié)果中隨機抽取了10張圖片,如圖4所示,這些圖片本文能很好地檢測出口罩的特征。分析發(fā)現(xiàn),文獻[1]算法是基于RetinaFace人臉特征檢測,需要檢測到眼、口和鼻等特征,在戴口罩的情況下,遮住了人臉部分特征,人臉檢測準確率有所下降,從而口罩檢測準確率也隨之下降。
圖4 漏檢口罩圖片
圖4中參數(shù)c為本文檢出戴口罩的置信度,置信度越高表明相關(guān)特征越容易被正確檢測出來。圖4中較難檢測出的是(c)和(d),置信度為0.87和0.86,但也維持在較高的水平。其他圖片的置信度都接近于1.00(四舍五入后的結(jié)果),說明口罩特征較容易檢測出來。本文模型不但具有更高的檢測精度,而且具有更高的抗干擾能力,對側(cè)面口罩、遮擋口罩、異形口罩和花紋口罩具有很好的適用性。
隨機選取尺寸大小各異的10張圖片來進行速度測試,結(jié)果如表3所示。
表3 檢測口罩用時統(tǒng)計
檢測用時都在(0.10~0.11)s之間,平均用時0.103 s,幀率為9.71 fps,相比于文獻[1]中18.3 fps的幀率,檢測效率有待提高,但9.71 fps的幀率可以達到實時檢測的要求,這對在公共場所的安防監(jiān)控、企事業(yè)單位樓宇的門禁處檢測是否佩戴口罩具有重要的意義。
本文用深度神經(jīng)網(wǎng)絡實現(xiàn)有無佩戴口罩的檢測,收集大量戴口罩圖片數(shù)據(jù),并對數(shù)據(jù)集進行有效地擴充,制作一套優(yōu)良的口罩檢測數(shù)據(jù)集。通過不斷試驗,研究了有效的預處理方法、最佳學習率和訓練批數(shù)據(jù)量,獲得了一個性能優(yōu)良的口罩佩戴檢測器,對側(cè)面口罩、遮擋口罩、異形口罩和花紋口罩具有較高的抗干擾能力,同時擁有較高的檢測準確率和檢測速度,這對新冠疫情防控有較強的實踐意義。