于 曉,張茂松,周子杰
(天津理工大學,天津 300384)
yx_ustb@163.com;1798588432@qq.com;Zhou_Zijie@outlook.com
準確檢測人員是否佩戴口罩對于保證食品生產環境的衛生、預防疾病的傳播、減少安全事故的發生[1]等具有關鍵作用。因此,設計高精度的、可用于人群場景的口罩人臉目標檢測算法具有重要意義。
研究者們在口罩人臉檢測領域已進行了大量研究。牛作東等人提出了一種改進過的RetinaFace算法[2];鄧黃瀟將遷移學習與RetinaNet模型結合,在口罩人臉檢測的任務中表現出良好的性能[3]。隨著目標檢測技術的蓬勃發展,基于深度學習的檢測方法相繼出現[4],其可以分為兩大類:兩階段目標檢測算法(Two-Stage)[5]和單階段目標檢測算法(One-Stage)[6]。研究人員基于深度學習算法提出了新的口罩人臉檢測模型,王藝皓等人通過改進YOLOv3完成了復雜場景下的口罩人臉檢測任務[7]。管軍霖等人證明了YOLOv4算法可以應用在口罩人臉檢測任務中[8]。王灃改進了YOLOv5算法,并將提出的算法應用于口罩及安全帽的檢測[9]。
在口罩人臉檢測任務中,檢測精度極其重要,在現實場景中,行人密集且存在被物體遮擋的現象,使得口罩人臉檢測難度增大。當前,存在的口罩人臉檢測算法的檢測精度仍需進一步提高。
隨著YOLO系列算法的不斷發展,YOLOv5已具備很高的精度和速度[10],具有較好的工程實用性。考慮到終端的計算能力,本文以YOLOv5為基礎,基于雙向特征金字塔網絡(BiFPN)結構修改YOLOv5原有的FPN(特征金字塔網絡)結構。此外,本文以現有的口罩人臉數據集為基礎,加入互聯網搜集的口罩人臉圖片,得到自制口罩數據集。基于以上模型和數據集,本文提出YOLOv5_BM口罩人臉檢測算法。
YOLOv5網絡結構可以分為輸入端、Backbone(主干網絡)、Neck(頸部網絡)、Prediction(預測層)四個部分。輸入端有Mosaic數據增強、自適應圖片縮放及自適應錨框計算,Backbone包含Focus(切片)結構、CSP(跨階段局部單元)結構,Neck包括FPN+PAN(路徑聚合網絡)結構,Prediction中有GIOU_Loss(廣義交并比損失函數)結構。
YOLOv5網絡的輸入端采用Mosaic數據增強方法,Mosaic數據增強過程使用到四張圖片,每次數據增強過程中先讀取四張圖片,然后按照順序對四張圖片進行翻轉、縮放等變化,接著按照四個方向把處理后的圖片放置好,最后依照圖片位置的區別將四張圖片進行組合。此外,YOLOv5網絡為了將不同大小的輸入圖片變為相同尺寸的圖片,采用自適應圖片縮放的方法。圖片兩邊填充的黑邊較多時會影響YOLOv5網絡的檢測速度,為了解決這個問題,YOLOv5網絡對letterbox函數進行改進,使輸入圖片能夠自適應減少信息冗余,從而使黑邊的數量減少。自適應縮放的步驟可以分為三步:首先計算縮放比例,然后計算輸入圖片縮放后的尺寸大小,最后計算需要填充的數值。除了Mosaic數據增強和自適應圖片縮放,YOLOv5網絡在輸入端還使用了自適應錨框計算方法,該方法可以為不同的數據集設置初始長寬的錨框。YOLOv5網絡在訓練過程中,會在設定的初始錨框基礎上得到輸出預測錨框,并且計算預測錨框和Ground Truth(真實框)的誤差,進而通過反向傳播更新數據,通過多次迭代網絡參數達到最優的錨框計算水平。
Backbone用于提取圖像的識別特征,包括邊緣特征、紋理特征和位置信息等,YOLOv5網絡的Backcone層包含Focus結構、CSP結構、SPP(空間金字塔池化)結構。Focus結構可以先對輸入信息進行切片操作,然后進行拼接,這樣能夠在進行下采樣的同時保留更多的特征信息。CSP結構可以減少神經網絡的計算量,對網絡進行局部特征的跨層融合,進而增強網絡的特征提取能力。SPP模塊對輸入的圖片先進行卷積操作,然后執行三個不同尺寸的池化操作,最后將輸出特征進行特征融合,增大了感受野,提取出最重要的上下文的特征。
Neck結構可以對不同階段提取的特征圖進行再處理,從而更好地使用在主干網絡中提取的特征。YOLOv5網絡的Neck結構和YOLOv4網絡相同,仍然沿用了FPN+PAN的結構,但是YOLOv5網絡在YOLOv4網絡的基礎上做了一些調整,YOLOv5網絡在FPN層的后面還添加了一個自底向上的特征金字塔,提高了YOLOv5網絡的特征提取能力。
輸出端部分用來檢測目標對象的類別和位置,采用GIOU_Loss函數作為損失函數,并通過非極大值抑制篩選目標框。
雖然YOLOv5網絡具備良好的檢測性能,但它是以COCO(上下文中的公共對象)數據集為基礎,如果應用于口罩人臉檢測領域,存在對小目標的檢測能力有限的問題,并且當目標存在密集、模糊等情況時,該問題更突出。此外,YOLOv5網絡的特征增強模塊PANet更側重于深度特征圖的融合,影響了對小目標的檢測能力,增加了干擾噪聲,影響了檢測精度。
本文首先從Neck部分對YOLOv5網絡進行改進,基于BiFPN結構修改YOLOv5網絡的Neck部分,將YOLOv5網絡Neck層中的節點連接方式做出部分改變,減少了對網絡特征融合貢獻度小的不必要連接,增加了輸入節點和輸出節點處于同一層時二者的連接,并且為輸入特征增加了可更新的權重,使網絡可以不斷調整權重,確定每個輸入特征對輸出特征的重要性,增強了網絡的特征提取能力;其次使用K-means聚類算法對訓練數據進行聚類分析,提高模型的泛化能力和定位精度,進而提升口罩人臉檢測算法的性能。改進后的YOLOv5_BM網絡結構圖如圖1所示。

圖1 YOLOv5_BM結構Fig.1 YOLOv5_BM structure
YOLOv5網絡的Neck結構中,采用了FPN+PAN的結構,其結構圖如圖2所示,前兩列自底向上路線和自頂向下路線為FPN結構[11],最右側一列自底向上的結構為PAN結構。FPN結構自上而下建立了一條通路進行特征融合,在特征融合之后,使用更高語義特征的特征層進行預測,但是FPN結構受制于單向信息流。在FPN的基礎上,PAN結構被提出,該結構基于FPN結構再建立了一條自下而上的通路,將底層的位置信息傳到預測特征層中,使得預測特征層中同時包含來自頂層的語義信息和來自底層的位置信息,從而大大提升了算法的目標檢測精度。

圖2 FPN+PAN結構Fig.2 FPN+PAN structure
BiFPN是在PAN的基礎上進行改進的。雙向特征金字塔結構(BiFPN)運用雙向融合思想,重新構造了自頂向下和自底向上的路線,對不同尺度的特征信息進行融合,通過上采樣和下采樣統一特征分辨率尺度,并且在同一尺度的特征圖之間建立了雙向連接,在一定程度上解決了特征信息遺失的問題[12],能夠更好地融合不同尺寸特征圖的特征信息。BiFPN的結構圖如圖3所示,由于只有一個輸入的節點對特征融合的貢獻度較低,所以為了簡化網絡BiFPN將其刪去;在原始輸入節點和輸出節點之間增加了一條邊,旨在不消耗成本的情況下進行更多的特征融合;將自上向下和自底向上的路徑融合到了一個模塊,以便實現更高層次的特征融合。

圖3 BiFPN結構Fig.3 BiFPN structure
不同于傳統的特征融合,BiFPN為了學習不同的輸入特征的重要性,還對不同輸入特征進行了區分的融合,是一種加權融合的機制,對此BiFPN使用了快速歸一化方法,精度與softmax-based fusion(基于Softmax的融合)類似但速度更快,快速歸一化方法如式(1)所示。

式(1)中,wi代表權重,在激活函數ReLu的作用下可以保證wi≥0,ε用來避免數值不穩定,是一個很小的值,Ini表示輸入的特征,Out表示加權特征融合的結果。
K-means是一種聚類算法,適用于數據量較大的數據集。K-means算法的復雜程度低,聚類效果好,比較容易實現,因此其應用領域非常廣泛。YOLOv5網絡模型的初始錨框是由COCO數據集設計生成的九個錨框,涵蓋了大小不同的目標且目標的大小差距較大。本實驗訓練的數據集大多數都是小目標,部分錨框的設計合理性有待提高,因此需要聚類優化錨框尺寸,使其與訓練的數據集更加匹配,進而提升模型的檢測精度。
K-means算法的具體步驟有五步:(1)隨機設置類簇的個數K;(2)在數據集中隨機選取K個默認寬高比,將它們作為類簇的初始質心;(3)計算所有樣本與類簇中心的距離,再將所有樣本劃分到離它最近的類簇中;(4)更新類簇的中心,計算每個類簇中所有樣本的均值,并將其作為新的聚類中心;(5)重復步驟(4)(5)直到類簇中心不再變化。
本實驗平臺為Intel Core i5-6300HQ處理器,實驗的配置環境為Windows 10操作系統。在Anaconda中,基于Python 3.8搭建了虛擬環境,深度學習框架為PyTorch 1.7.0。
本實驗基于RMFD(真實口罩人臉數據集)、MAFA(遮擋人臉檢測數據集)、WIDER Face(人臉識別網絡圖像數據集)三個人臉數據集,同時加入了互聯網搜集的圖片,對數據集圖片進行數據清洗,并通過LabelImg(圖片標注工具)對數據集進行了標注,將圖片中佩戴口罩的人臉標注為mask,未佩戴口罩的人臉標注為nomask,得到了自制口罩數據集。自制口罩人臉數據集共包括11,000余張口罩人臉圖片,每張圖片有對應的標簽文件。
為了驗證本文提出的改進算法的性能,本文選擇在目標檢測領域中常用的mAP50和mAP0.5:0.95指標,以及準確率P和召回率R。準確率和召回率的公式如式(2)、式(3)所示。

其中,TP表示樣本中被正確劃分為正例的個數,FP是樣本中被錯誤分類為正例的負例的個數。mAP為平均的精度均值,其計算公式如式(4):

式(4)中,n表示數據集中類別的數量;APi代表第i類的平均精度(AP),即P-R曲線的曲線下的面積。基于所有預測框的精確率和召回率,可以繪制出P-R曲線。mAP50是指在IOU閾值取0.5時的mAP值。然后將IOU閾值從0.5開始以0.05為步長逐漸增加到0.95,獲得不同閾值下的mAP值,最后求取它們的平均值即可獲得mAP0.5:0.95。
本文將數據集分為訓練集和數據集,其中9,000 張用于訓練,2,000 張用于測試,在YOLOv5_BM網絡的訓練過程中,參數值的設定和損失函數系數設置采用YOLOv5網絡所提供的基本設定,輸入圖片的分辨率為640×640 像素。模型初始學習率為0.01,權重衰減系數為0.0005,epoch設為300。
為了驗證本文提出的YOLOv5_BM網絡的口罩人臉檢測效果,將原始YOLOv5算法與本文提出的YOLOv5_BM算法在本文自制數據集上進行口罩人臉檢測的性能對比,實驗的結果如表1所示。

表1 改進前后的YOLOv5網絡的性能對比Tab.1 Performance comparison of YOLOv5 network before and after improvement
由表1可知,改進的YOLOv5_BM算法和原始YOLOv5算法在口罩人臉檢測中均取得了較好的效果。相比原始YOLOv5網絡,YOLOv5_BM網絡的準確率、召回率分別上升了2.6%、5.9%,mAP50指標提升了3.8%,mAP0.5:0.95指標則提升了4.9%。這說明相比原始YOLOv5網絡,加入YOLOv5_BM網絡確實能夠提高檢測精度,并且算法性能得到了提升。
在實際人群場景中,口罩人臉目標存在密集、側臉等情況,導致算法檢測難度增大。因此,本文設計了在此種情況下的算法檢測結果對比。
如圖4和圖5所示,測試圖片中的人臉目標交錯且存在口罩人臉目標為側臉的情況,口罩人臉目標的檢測難度相對較大。如圖4中(a)、(b)所示,原始YOLOv5算法存在漏檢、誤檢的情況,未檢測出測試圖片1中的側臉口罩人臉目標,并且將測試圖片2中佩戴口罩的口罩人臉目標標記成nomask。相比之下,檢測效果如圖5中(a)、(b)所示的YOLOv5_BM算法的檢測性能更好,檢測結果均正確。相比YOLOv5算法,本文改進的YOLOv5_BM算法具備更高的檢測精度,即使在密集、側臉目標的情況下,YOLOv5_BM算法仍然具備良好的檢測效果,不易出現誤檢、漏檢的情況。

圖4 YOLOv5網絡口罩人臉檢測效果圖Fig.4 Effect picture of YOLOv5 network mask face detection

圖5 YOLOv5_BM網絡口罩人臉檢測效果圖Fig.5 Effect picture of YOLOv5_BM network mask face detection
此外,為了驗證本文提出的YOLOv5_BM算法在檢測精度方面的優越性,在自建人臉口罩數據集上將提出的YOLOv5_BM算法與其他經典目標檢測算法的檢測效果進行比較,檢測結果如表2所示,相比于SSD算法,本文算法的mAP50指標提升了4.4%;相比于YOLOv3算法,本文提出的算法的mAP50指標提升了2.9%。在AIZOO數據集上將本文所提出的算法與其他經典目標檢測算法進行對比試驗,各類算法的mAP50和mAP0.5:0.95指標如表3所示。由表2和表3知,YOLOv5_BM算法在檢測性能方面均保持著較大的領先優勢。

表2 基于RMFD數據集的算法性能比較Tab.2 Comparison of algorithm performance based on RMFD dataset

表3 基于AIZOO數據集的算法性能比較 Tab.3 Comparison of algorithm performance based on AIZOO dataset
本文提出了一種基于YOLOv5網絡改進的口罩人臉檢測算法,首先基于BiFPN結構在Neck部分對原始網絡進行優化改進,然后使用聚類算法對錨框尺寸進行優化,得到更為準確的錨框大小,從而得到了YOLOv5_BM口罩人臉檢測器。實驗結果表明,本文提出的方法相比其他的經典目標檢測算法在準確性方面具有優勢,可為機場、地鐵等存在大量混淆小目標的密集人群場所的口罩人臉檢測提供模型支持,具有良好的應用前景。