劉玉國,張晶
(天津工業大學計算機科學與技術學院,天津 300387)
疫情期間,正確佩戴口罩是阻止病毒人與人之間傳播的重要舉措,但公眾主動佩戴口罩進行防護的意識還有待增強。因此,在公共場合檢測公眾是否正確佩戴口罩是十分必要的,此舉能夠及時提醒人們正確佩戴口罩,降低病毒在公共場所傳播的風險[1]。目前主要是由工作人員人工檢測體溫與行人口罩佩戴情況。但該方法存在大量人力資源浪費及人流較大時效率低下等問題。因此使用深度學習自動檢測行人是否佩戴口罩具有重要意義。自2012年Krizhevsky等[2]提出的AlexNet[2]網絡在ImageNet[3]圖像分類任務的精度上取得顯著提升以來,基于深度學習的方法廣泛應用于許多視覺任務中。當前基于深度學習的目標檢測方法可以分為兩種類型:一種是Onestage,另一種是Two-stage。One-stage類的方法直接對輸入圖像進行卷積特征提取,獲得卷積特征圖,然后在特征圖上進行邊界框的回歸[4]。將目標檢測過程轉化為回歸問題處理,雖然在檢測速度上具有一定的優勢,但對于檢測圖像中的小目標具有一定局限性。而Two-stage類方法在進行目標檢測時首先需要在圖像上提取卷積特征,生成卷積特征圖,然后在卷積特征圖上獲得感興趣區域,隨后對所生成的區域進行目標分類,所以該類方法更耗時,但有助于提升圖像中小目標的檢測效率。
Faster R-CNN[5]是目前Two-stage檢測算法中最為經典的目標檢測算法,它將Fast R-CNN中的目標區域建議納入神經網絡中使整個運算過程可以在GPU中完成,相比于Fast R-CNN,其綜合性能得到大大提升。通過共享卷積,RPN網絡生成區域建議框的時間為10 ms[5],因此使得實時檢測成為可能。Faster R-CNN的基本框架如圖1所示。

圖1 Faster R-CNN網絡簡圖
輸入的圖像首先通過卷積神經網絡層提取特征得到卷積特征圖[5];然后將其輸入區域生成網絡,獲得一些可能包含所檢測物體的建議框,再將這些建議框與卷積特征圖相結合[5];最后將卷積特征圖上的不同尺寸的建議框固定到統一尺寸,分別輸入到兩個全連接層進行目標分類和邊框回歸[5]。
Faster R-CNN中的卷積模塊由卷積、池化、激活函數3種構成,以VGG16模型為例的卷積網絡層,首先將輸入的圖片縮放到固定大小M×N大小然后輸入到全卷積模塊[5]。其中包含了13個卷積層,13個激活層和4個池化層,得到大小為(M/16)×(N/16)卷積特征圖[5]。
與傳統的使用滑動窗口+圖像金字塔生成檢測框或者R-CNN中使用Selective Search方法生成檢測框[6]相比,Faster R-CNN直接在在卷積神經網絡中使用RPN網絡生成檢測框,極大提升檢測框的生成速度[5]。
RPN網絡將通過卷積神經網絡得到的卷積特征圖作為輸入,對特征圖上的每個3×3位置進行滑窗,并找出滑窗的中心位置在原始圖像上對應的中心點[5]。對于每個中心點通過不同尺度以及不同比例的K個anchor產生2K個類別分數以及4K個位置偏移量,用來分類每一個候選框是否包含目標并通過回歸得到目標的具體位置[5]。這也是Faster R-CNN相較于之前目標檢測方法的巨大優勢,Faster R-CNN中的RPN網絡具體如圖2所示。

圖2 RPN網絡結構簡圖
感興趣區域池化層有兩個輸入,分別是通過全卷積模塊生成的卷積特征圖和通過區域建議網絡生成的建議框。首先將建議框在圖像上的位置映射到卷積特征圖上,得到不同大小的建議框特征圖;然后將這些建議框特征圖池化到統一大小送入后續的全連接層進行分類和回歸[4-5]。相較于傳統的目標檢測方法直接從原圖像中截出一部分或對原圖像中的一部分進行縮放達到固定大小相比,此方法不會破壞圖像的原有結構信息。
分類和回歸層部分網絡結構如圖3所示。

圖3 分類和回歸層網絡結構簡圖
分類和回歸層利用ROI Pooling層獲得的建議框特征圖,通過全連接層與Softmax分類器計算每個建議框中的目標具體屬于哪個類別,輸出每個類別概率向量[6];同時再次利用邊框回歸獲得每個建議框的位置偏移量,用于回歸更加精確的目標檢測框[6]。
通過CNN提取圖像的特征,網絡的層數越多,意味著能夠提取的特征越豐富,而且越深的網絡提取的特征越抽象,越具有語義信息[7]。但當CNN的網絡達到一定深度后,再增加網絡的層數并不會提高網絡的性能反而可能是準確率降低。因此本文ResNet殘差網絡[8]來替代Faster R-CNN算法中的VGG16網絡,以便可以從圖像中獲得更多語義信息。
原始的Faster RCNN算法在特征圖上的每個3×3位置進行滑窗,每滑動一次都會產生三種不同尺寸和長寬比分別為{1:1,1:2,2:1}的9個anchor。因為原始的Faster RCNN算法中的這些anchor尺寸是作者為VOC[9]等數據集中所有類別設置的[5],這對于本文數據集中的類別并不適用。所以本文采用K-Means聚類方法對數據集中的目標類別重新聚類來生成anchor的尺寸,長寬比不發生改變,具體如表1所示。

表1 原始anchor尺寸及比例與改進anchor尺寸及比例的對比
本文從中國科學院信息工程研究開源的MAFA數據集[10]中選取了4 065張戴口罩的圖片;從香港中文大學發布的WIDER FACE人臉數據集[11]中選取了3 894張不戴口罩的圖片。使用PASCAL VOC 2007數據集的格式[8],其中7 000張圖像作為訓練集數據,959張圖像的作為測試集數據。數據集的圖像分為兩類:mask類別和nomask類別,對于不規范佩戴口罩也劃為nomask類別。數據集中圖像示例如圖4所示。

圖4 數據集示例圖片
本文算法與Faster R-CNN算法的檢測結果對比如圖5所示。

圖5 兩種算法對檢測結果對比
通過對比可以發現兩種算法對于圖像中像素較大的行人是否佩戴口罩都能很好地識別出來,如圖5中的A圖和D圖,兩種算法都能正確檢測出來圖像中的目標并且置信度都為1。但當圖像中人數變多從而導致目標信息的像素變小,Faster R-CNN算法漏檢較多,比如B圖和E圖中的右下角和中間未佩戴口罩的行人,以及C圖和F圖中戴口罩的顧客,本文算法都能很好地檢測出來。故對于目標像素較小時,本文算法優于Faster R-CNN算法。
本文算法與Faster R-CNN算法在性能上的比較如圖6所示。可以看出與Faster R-CNN算法比較而言,本文算法對于mask這一類別上平均精確度提升了41%;對于nomask這一類別上平均精確度下降了6%,但所有類別的mAP提升了17.96%。總體而言,本文算法相較于Faster R-CNN算法,改善了對于圖像中小目標的檢測率,具有較強的魯棒性,但是仍具有進步的空間。

圖6 兩種算法的性能比較
綜上所述,本文通過替換Faster R-CNN算法的主干網絡對數據集中的圖像進行更多的特征提取,然后通過調整Faster R-CNN算法的anchor尺寸,以便更好地適應圖像中目標類別的大小,從而有效提高了對數據集中口罩類別的準確檢測率。但由于在公眾場所行人佩戴口罩的場景較為復雜,本文算法對圖像中目標的檢測還存在一定的誤差,因此下一步將繼續擴充數據集中各種復雜場景下行人佩戴口罩的圖像,提升算法的檢測精度。