董艷花,張樹美,趙俊莉
(青島大學,山東 青島 266071)
2019年12月以來[1],全球爆發(fā)了新型冠狀病毒肺炎(COVID-19)疫情,由于該病毒可以通過接觸或者空氣中的飛沫、氣溶膠等載體進行傳播,具有極強的傳染性,所以在國家衛(wèi)生健康委員會發(fā)布的《新型冠狀病毒感染肺炎預防指南》的強調(diào)下,人們外出時需通過正確佩戴口罩、勤洗手等措施進行有效防護,從而降低被病毒傳染的機率[2]。而且專家們預估此病毒在短時間內(nèi)不會消亡,也許會長期伴隨人類生存,在有效的疫苗批量生產(chǎn)之前,尤其在如今出現(xiàn)“環(huán)境傳人”的情況下,為了進一步防范病毒傳播,佩戴口罩外出公共場所是每個人應盡的義務,需要個人自覺遵守,也需要一些設備進行強有力的監(jiān)督和管理人們是否佩戴口罩,所以目前對有口罩遮擋的人臉進行口罩檢測的研究迫在眉睫。
近年來隨著深度學習和神經(jīng)網(wǎng)絡的快速發(fā)展,雖然還沒有專門針對口罩檢測的算法,但基于深度學習的目標檢測方法在醫(yī)學影像檢測、遙感圖像檢測、車輛檢測及文本檢測等領域都有著廣泛應用[3-10]。目前基于深度學習的目標檢測方法主要包含兩類。其中Two-stage是先由算法生成一系列作為樣本的候選框,再通過卷積神經(jīng)網(wǎng)絡進行樣本分類。例如,Girshick等人[11]為了解決特征提取重復計算的問題,提出一種基于快速區(qū)域的卷積神經(jīng)網(wǎng)絡(fast region-based convolutional network,F(xiàn)ast R-CNN)方法,巧妙地將目標識別與定位放在同一個CNN中構成Multi-task模型,相比于R-CNN,F(xiàn)ast R-CNN不僅提高了訓練和測試速度,同時提高了檢測精度。隨后針對基于深度學習的目標檢測框架能不能把潛在候選區(qū)域的提取納入CNN框架內(nèi)這一問題,Ren等人[12]提出Region Proposal Network,將潛在的候選區(qū)域提取納入CNN框架內(nèi),與檢測網(wǎng)絡共享整張圖片的卷積特征,節(jié)約計算成本,且解決Fast R-CNN算法生成正負樣本候選框速度慢的問題,同時避免候選框提取過多導致算法準確率下降的問題。雖然Two-stage目標檢測算法有較高的檢測率,但其檢測速度卻很低,所以目前針對另一類目標檢測算法One-stage的研究得到廣泛關注,該類算法直接將目標邊框定位的問題轉化為回歸問題處理,不需要生成候選框階段,比較經(jīng)典的算法有Redmon等人[13]提出的YOLO(you only look once)目標檢測算法,可以一次性預測多個回歸框位置和類別,極大地簡化了目標檢測的流程,將檢測速度提升到了58.5幀的實時檢測水平。但由于丟棄了候選區(qū)域生成這一步驟,導致檢測精度不是很高,為了兼顧檢測精度和速度,Liu等人[14]提出了基于全卷積的單一網(wǎng)絡SSD(single shot multibox detector)的目標檢測算法,用不同尺度和長寬比進行抽樣,并利用CNN提取不同尺度的特征圖后直接進行類別判定和位置回歸,減少了訓練參數(shù),提高了檢測速度并解決多尺度檢測問題,使得SSD成為目前目標檢測的常用方法。但SSD對小目標的檢測效率很低,主要由于SSD前幾層的特征圖較大,語義信息卻不夠,后面層的語義信息足夠,卻因經(jīng)過太多的池化層,造成后面的特征圖太小,而人臉檢測屬于密集小目標檢測,需要足夠大的特征圖來提供更加精細的人臉特征,并進行更加密集的采樣,同時需要足夠的語義信息來與背景區(qū)分開,才能實現(xiàn)高效的人臉檢測。針對該問題,楊少鵬等人[15]提出一種基于特征圖融合的小尺寸人臉檢測方法,通過合理選擇不同的待檢測特征圖,檢測不同大小的人臉,然后將較深的特征圖和較淺的特征圖進行融合,合理地引入上下文信息,從而提高小尺寸人臉的檢測精度。
通過上述對目標檢測相關算法的研究,發(fā)現(xiàn)SSD網(wǎng)絡在目標檢測精度和速度上都優(yōu)于Faster R-CNN和YOLO。因此,文中利用SSD進行人臉佩戴口罩的檢測。但SSD網(wǎng)絡較低的特征層需要同時學習局部信息和高層信息,這種雙重任務會增加訓練學習的難度,降低檢測精度。所以為學習高層的有效特征,文中利用殘差網(wǎng)絡“跳線”的特征對SSD進行改進,提出了一種基于深度殘差的SSD網(wǎng)絡,將局部信息和高層信息兩種學習任務加以區(qū)分,對整張人臉圖像進行特征學習,實現(xiàn)快速精準的口罩檢測。
傳統(tǒng)SSD是一種以VGGNet為基礎網(wǎng)絡的端到端的目標檢測神經(jīng)網(wǎng)絡,其借鑒了Faster-RCNN的多尺度滑框和YOLO網(wǎng)格離散化的思想,在不同層的特征圖上進行不同尺度目標的預測,在PASCALVOC數(shù)據(jù)集上達到了與Faster RCNN一致的檢測精度(77.2%);比YOLO的檢測精度高13.8%;又通過神經(jīng)網(wǎng)絡的各層特征之間的上下層的連接關系,對圖片僅進行一次前向傳播提取特征,就可以快速準確地檢測多個不同尺度的目標,達到YOLO的檢測速度,其網(wǎng)絡結構如圖1所示。
圖1 SSD網(wǎng)絡結構
通過圖1可以發(fā)現(xiàn),SSD將VGG16的最后兩層全連接改成3×3和1×1的卷積層進行特征提取,即Conv6層和Conv7層。在檢測時使用Conv4_3,Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2這些大小不同的特征層同時進行Softmax分類和位置回歸,并對這6個特征圖設置不同的尺度或者不同的長寬比進行預測,預測的邊界框都是以先驗框為基準,在一定程度上減少了訓練難度。但SSD在低層特征提取時需要維護低層局部信息,又要學習高層次的抽象信息,將會引發(fā)SSD雙重任務學習問題,進而增加該網(wǎng)絡模型的訓練學習難度,導致其檢測識別口罩的精度出現(xiàn)退化。而He等人[16]提出的深度殘差網(wǎng)絡,通過“跳線”的方式解決了淺層網(wǎng)絡無法提高網(wǎng)絡的識別精度及網(wǎng)絡加深時出現(xiàn)梯度消失或爆炸等問題。該網(wǎng)絡一般由一系列殘差塊組成,殘差塊包含直接映射部分和殘差部分。假設一般的卷積神經(jīng)網(wǎng)絡將輸入的x學習到的特征記為H(x),而殘差網(wǎng)絡希望學習的殘差為F(x)=H(x)-x,所以原始的學習特征是H(x)=F(x)+x。該網(wǎng)絡通過在2個或3個卷積層之間添加“跳線”的方式實現(xiàn)F(x)+x,這樣可以學習到相鄰層網(wǎng)絡的殘差,并將低層特征映射到疊加層與高層特征相加作為輸出,這樣就避免了在層層映射過程中,由于權重過小導致梯度消失的現(xiàn)象,形成的雙分支或三分支結構可以有效提升網(wǎng)絡訓練速度,其結構如圖2所示。
圖2 殘差塊結構
SSD利用多尺度的思想提高了檢測精度和速度,成為目前最常用的目標檢測網(wǎng)絡,但該網(wǎng)絡同時存在雙重任務學習導致檢測精度退化的問題。所以該文受殘差網(wǎng)絡的啟發(fā),對SSD進行改進,提出一種基于殘差結構的SSD網(wǎng)絡(residual single shot multibox detector,ReSSD),實現(xiàn)人臉口罩檢測。其網(wǎng)絡結構如圖3所示。ReSSD整個網(wǎng)絡包含特征提取及檢測網(wǎng)絡、殘差塊、分類定位層和非最大值抑制(NMS)四部分。
圖3 ReSSD口罩檢測網(wǎng)絡
因為經(jīng)典SSD使用VGGNet多層卷積層來檢測目標會導致圖像分辨率顯著降低,但無法準確檢測到圖像中的小目標,所以ReSSD網(wǎng)絡先以4個3×3的卷積做串聯(lián)進行特征提取,防止圖像分辨率下降,并在前三個卷積層后分別添加2×2且strid=2的最大池化層進行下采樣,實現(xiàn)人臉口罩圖像降維、冗余信息的去除,然后輸出一個特征圖,用來檢測圖像中的小目標,再通過增加5個3×3的卷積做特征提取,分別輸出5個特征圖。由于6個不同尺度的特征圖包含不同的語義特征和位置敏感性,所以ReSSD網(wǎng)絡利用6層不同大小的特征圖做口罩檢測,保證了主干網(wǎng)絡能充分提取特征的能力,然后在6個特征圖進行分類定位前添加殘差塊,使特征提取網(wǎng)絡和分類定位層進行分離,進而使得進入分類定位層的卷積特征更加抽象,能有效避免網(wǎng)絡退化現(xiàn)象,解決深層網(wǎng)絡訓練時梯度消失或梯度爆炸的問題,并維護了特征提取網(wǎng)絡的穩(wěn)定性,促使ReSSD網(wǎng)絡的檢測精度得到一定的提升。其殘差單元結構如圖4所示。
圖4 殘差單元結構
為了防止分類定位層的梯度直接倒流回特征提取網(wǎng)絡,圖4的殘差單元結構中每個卷積層后都添加了一個BN層和ReLU非線性激活函數(shù),并利用兩個1×1的卷積用來改變卷積特征圖的通道數(shù)。和3個連續(xù)的3×3的卷積相比,該結構可以節(jié)省網(wǎng)絡參數(shù),減少計算量,提高ReSSD人臉口罩的檢測速度。
為提高ReSSD網(wǎng)絡的訓練速度和檢測效率,文中優(yōu)化了經(jīng)典的SSD位置誤差和置信度誤差損失函數(shù),利用交叉熵損失函數(shù)解決戴口罩和未戴口罩的二分類問題,并利用smooth L1 loss損失函數(shù)解決口罩位置的回歸問題,然后將分類和位置回歸做加權計算,并將損失平衡權值參數(shù)λ設為0.2,實現(xiàn)人臉佩戴口罩特征和人臉未戴口罩特征的定位和分類??偟膿p失函數(shù)表示為:
(1)
最后ReSSD網(wǎng)絡經(jīng)過定位和分類層后,同一張人臉口罩圖片或人臉圖片會產(chǎn)生大量存在重疊的預測邊框,每個預測框都有一個置信度得分,通過引入非極大值抑制并設定預測框和標注框的交疊率(intersection-over-union,IoU)閾值為0.5進行匹配,可以準確定位到檢測目標的位置,具體流程如下:(1)將每個預測框按照置信度得分從大到小排序,選中置信度最高的預測框;(2)遍歷其余的預測框,如果和當前置信度最高的預測框的IoU小于設定的閾值,便將其從預測框列表中刪除;(3)從未處理的框中繼續(xù)選擇一個得分置信度最高的預測框,重復操作上述過程,直到?jīng)]有滿足條件的預測框為止。NMS該流程實現(xiàn)在眾多預測框中去除多余框,從而找到人臉口罩的最佳位置。非最大抑制示例圖如圖5所示,對輸出的3個預測框進行排序{0.758,0.786,0.931},以0.931作為檢測到的人臉口罩框,計算其余的框與該框的IoU,從而排除0.758和0.786兩個預測框,得到右圖最終的口罩檢測結果。
圖5 非極大值抑制示例圖
由于今年全球新型冠狀病毒肆無忌憚地傳播,人們出行必須佩戴口罩進行防護,為以后國內(nèi)外人員研究人臉口罩提供便利,武漢大學國家多媒體軟件工程技術研究中心經(jīng)網(wǎng)絡爬取,整理清洗和標注處理等過程,制作了真實口罩人臉識別數(shù)據(jù)集RMFD。該數(shù)據(jù)集包含525人的5千張口罩人臉和9萬張不戴口罩人臉,分別存放在各自名字的文件夾下。文中采用RMFD,選擇其中120人對應的戴口罩和不戴口罩圖片,其中不戴口罩的圖片相對充足,但圖像尺寸不統(tǒng)一或姿態(tài)多樣性不利于實驗的模型訓練,且戴口罩的數(shù)據(jù)相對較少,所以需要對這120人的人臉數(shù)據(jù)進行批量數(shù)據(jù)增強,通過水平翻轉、隨機裁剪、多尺度及顏色渲染等方式,最后分別得到每人300張無口罩遮擋圖片和300張戴口罩圖片用于實驗,從而提高人臉口罩識別的精度和泛化能力。選擇數(shù)據(jù)集的80%做訓練集,剩余20%做測試集,數(shù)據(jù)增強示例圖如圖6所示。
圖6 數(shù)據(jù)增強
文中所有算法均在Windows10 64位操作系統(tǒng)下基于Tensorflow深度學習框架用Python語言編寫,另外使用CUDA10.0版本的GPU加速器,在訓練模型時均采用隨機梯度下降(stochastic gradient descent,SGD)優(yōu)化模型。
(1)ReSSD口罩檢測結果分析。
文中使用目標檢測中的平均精度AP(average precision)、平均精度均值mAP(mean average precision)及每秒運行幀率FPS(frame per second)來客觀評價ReSSD對口罩檢測的效果。其中mAP是目標檢測中最常見的評價指標,mAP的值是由準確率和召回率(precision-recall,p-r)的相關曲線來決定的,p-r曲線包圍的面積兼顧了p和r兩方面因素,能全面客觀地評價某類檢測器的精度表現(xiàn)。該指標就是多類別檢測下對AP取平均值,上述指標公式為:
(2)
(3)
(4)
其中,tp是正確檢測到的目標數(shù)量,fp是錯誤檢測到的目標數(shù)量,fn是漏檢的目標數(shù)量。文中根據(jù)正確檢測正樣本的檢測率和被錯誤檢測到的正樣本數(shù)量的關系繪制出了ROC曲線圖,用來表示ReSSD和SSD分別對口罩檢測的性能,如圖7所示,其中橫坐標由被錯誤檢測的正樣本數(shù)量表示,縱坐標由正確檢測正樣本的檢測率表示。
圖7 ROC曲線
由圖7可知,被錯誤檢測的正樣本數(shù)量低于100時,ReSSD和SSD對口罩的檢測效率不相上下,而樣本數(shù)在100~500之間時,ReSSD和SSD口罩檢測率都持續(xù)增長,但ReSSD均明顯優(yōu)于SSD,當樣本數(shù)達到500時,ReSSD和SSD的口罩檢測率趨于平穩(wěn),但ReSSD檢測率達到0.9以上,而SSD檢測率在0.8附近。綜上所述,ReSSD對口罩的檢測性能相比于SSD對口罩檢測的性能更優(yōu)。
基于平均檢測精度、平均精度均值及運行幀率評價指標,將提出的ReSSD網(wǎng)絡進行實驗和評估,設置IoU為0.4,對輸入260×260圖像進行模型訓練。為對比分析,對SSD在相同數(shù)據(jù)集下也進行實驗,經(jīng)迭代50 000次后的檢測效果對比如表1所示。
表1 ReSSD與SSD檢測效果對比 %
由表1可知,加入殘差結構的ReSSD的確能提升傳統(tǒng)SSD模型對口罩的檢測精度及速度。其中ReSSD對沒戴口罩的檢測AP比SSD提高2.7%,對戴口罩的檢測AP比SSD提高12.1%,mAP也提高了7.4%,這主要得益于深度殘差結構比普通的卷積結構具有一定的優(yōu)勢。由于深度殘差結構使用“跳線”連接,使ReSSD網(wǎng)絡中比較靠前的特征圖能夠?qū)W習局部特征傳輸給下一層級的特征圖,也能學習高級特征用于檢測,該“跳線”方式能夠?qū)⒕W(wǎng)絡的高一級特征和低一級特征進行簡單的融合,使網(wǎng)絡訓練學習時不會造成梯度消失,從而使學習到的參數(shù)更加有效,促進ReSSD在口罩檢測精度上的提升。從運行幀率的對比也能發(fā)現(xiàn),ReSSD比SSD提高了1.4%,表明ReSSD在網(wǎng)絡結構上雖比SSD復雜,但并沒有影響其檢測速度,意味著ReSSD網(wǎng)絡比SSD更具優(yōu)越性。
為更加直觀地感受ReSSD對口罩識別的有效性,利用圖8展示了ReSSD口罩檢測識別的示例圖,其中(a)(b)(c)分別是同一人的人臉圖片、人臉口罩圖片和非口罩遮擋的人臉圖片及其檢測效果,并給出戴口罩和沒戴口罩的識別準確度。可以看出,ReSSD不僅可以高效地識別人戴沒戴口罩,而且針對非口罩遮擋人臉也可以有效識別出沒戴口罩。
圖8 人臉口罩檢測識別示例圖
(2)ReSSD在自然場景下的口罩檢測實驗。
為了驗證ReSSD的泛化能力及實用性,文中在自然場景下進行口罩檢測的實驗,通過網(wǎng)絡爬取自然場景下的人臉圖片,將其尺寸統(tǒng)一裁剪為500×400,實驗結果如圖9所示。
由圖9可知,在人臉圖像存在傾斜或不同光照影響下,ReSSD對人臉是否佩戴口罩均能夠高效率地檢測出來,表明該方法不僅僅在測試數(shù)據(jù)集下可以獲得顯著的檢測效果,在自然環(huán)境下仍可以獲得有效的檢測結果,體現(xiàn)了ReSSD較強的泛化能力。
(a)正面人臉口罩檢測
(b)無口罩遮擋人臉檢測
(c)暗光下人臉口罩檢測圖9 自然環(huán)境下口罩檢測效果圖
通過改進SSD目標檢測網(wǎng)絡,提出一種基于殘差結構的SSD網(wǎng)絡用來檢測人臉口罩佩戴情況。該方法通過添加殘差塊,使特征提取網(wǎng)絡和分類定位層進行分離,有效地解決SSD局部信息和高層信息學習的雙重任務及深層網(wǎng)絡訓練時梯度消失或梯度爆炸等問題,同時維護了特征提取網(wǎng)絡的穩(wěn)定性。實驗結果表明,殘差結構網(wǎng)絡在人臉戴口罩和沒戴口罩的情況下能夠有效檢測,平均檢測精度達到92.3%,運行幀率為39.2%,且非口罩物體遮擋嘴部情況下,該網(wǎng)絡同樣能高效地識別出該人臉未戴口罩,證明了該網(wǎng)絡在檢測口罩上的優(yōu)越性。同時,該網(wǎng)絡在自然場景下進行口罩檢測也獲得了顯著效果,證明了該網(wǎng)絡的有效性。但是人臉圖像存在嚴重傾斜或光線遮擋時,該網(wǎng)絡會出現(xiàn)漏檢或錯檢的情況,所以未來仍需加強對網(wǎng)絡的性能優(yōu)化,提高其檢測精度。