詹鵬程
(武漢輕工大學電氣與電子工程學院,湖北 武漢 430000)
佩戴口罩是防控疫情的重要環(huán)節(jié),能夠有效防止疫情的傳播。現在主流的目標檢測算法[1]分為兩階段算法和單階段算法。兩階段算法基于檢測框和分類器,存在的問題為網絡結構一般比較復雜,檢測速度慢,對硬件設施要求很高。單階段算法基于回歸,它的特點是準確的定位效果和相對較快的檢測速度,如SSD、YOLO。該文在YOLO 系列算法基礎上提出了改進的YOLOv5s 算法方案,它能夠在檢測出人臉的同時并標記是否佩戴口罩。它針對現有的問題,在提高模型的識別精度方面,以損失函數為出發(fā)點進行改進;在降低運行設備的硬件性能要求方面,以輕量化網絡作為出發(fā)點進行改進。
該文的主要內容:首先通過自建數據集,提高口罩檢測的泛化能力。其次通過改進損失函數提高算法的檢測精度。最后通過輕量化網絡降低模型對硬件性能的要求[2]。
試驗驗證表明:通過EIOU損失函數改進YOLOv5s,其人臉口罩檢測算法的平均精度均值為94.6%,提高了1.8%,能夠有效提高檢測精度。結合Alpha-IOU 和MobileNetV3_Small,改進算法的平均精度均值由92.8%降至91.9%,仍然能夠滿足檢測的精度要求且單張檢測的處理速度提升為6.5ms,達到了輕量化的目的。
Shufflenetv2 有2 個結構:Shufflenetv2 基本模塊Shufflenetv2 下采樣模塊,如圖1 和圖2 所示。
圖1 Shufflenetv2 基本模塊
圖2 Shufflenetv2 下采樣模塊
通過Channel Split 替代分組卷積,滿足4條設計準則,達到了速度和精度的最優(yōu)權衡。為了解決GConv 導致的不同group 之間沒有信息交流,只在同一個group 內進行特征提取的問題[3],Shufflenetv2 設計了Channel Shuffle 操作進行通道重排,跨group 信息交流。
MobileNetV3 是谷歌提出的輕量化網絡架構,在前2 個版本的基礎上加入神經網絡架構搜索(NAS)和h-swish 激活函數,并引入SE 通道注意力機制,性能和速度都表現優(yōu)異,MobileNetV3 中的Block 模塊如圖3 所示。
圖3 MobileNetV3 中的Block 模塊
MobileNetV3 的主要特點:網絡的架構基于NAS 實現的MnasNet,由NAS 搜索獲取參數,在計算和參數量受限的前提下搜索網絡的各個模塊,為模塊級的搜索。引入MobileNetV1 的深度可分離卷積。引入MobileNetV2[4]的具有線性瓶頸的倒殘差結構。引入基于Squeeze and Excitation 結構的輕量級注意力模型(SE)。使用了一種新的激活函數h-swish(x)。在網絡結構搜索中,結合資源受限的NAS 與NetAdapt,將其用于對各個模塊確定之后網絡層的微調;對全局的網絡結構搜索,使用了與Mnasnet 中相同的且基于RNN 的控制器和分級的搜索空間,并針對特定的硬件平臺進行精度-延時平衡優(yōu)化,在目標延時(~80ms)范圍內進行搜索。隨后利用NetAdapt方法來對每層按照序列的方式進行調優(yōu)。在盡量優(yōu)化模型延時的同時保持精度,縮減擴充層和每層中瓶頸的大小。
YOLOv5s 中包括3 種損失函數,即矩形框損失(lossrect)、置信度損失(lossobj)和分類損失(lossclc)。YOLOv5s 網絡的損失函數定義式如公式(1)所示。
YOLOv5s 使用CIOU loss 來衡量矩形框(lossrect)的損失。CIOU 的計算如公式(2)所示。
式中:ρ為預測框和GT 框的中心點的距離;c 為預測框和GT 框最小包圍矩形的對角線長度;v 用來衡量預測框和真實框的寬和高之間的比例一致性,其表達式如公式(3)所示。
式中:wgt和hgt為GT 框的的寬和高;w和h為預測框的寬和高。
β為v的影響因子,其表達式如公式(4)所示。
CIOU 損失是在DIOU 損失的基礎上添加了衡量預測框和GT 框縱橫比v,在一定程度上可以加快預測框的回歸速度,DIOU 表達式如公式(5)所示。
公式(5)中,IOU是2 個區(qū)域重疊的部分除以2 個區(qū)域的集合部分得出的結果,但是仍然存在問題:在預測框回歸過程中,一旦預測框和GT 框的寬、高縱橫比呈現線性比例時,CIOU 中添加的相對比例的懲罰項便不再起作用,w和h在其中一個值增大時,另外一個值必須減少,它倆不能保持同增同減。為了解決這個問題,該文引入了EIOU,采用直接對w和h的預測結果進行懲罰的損失函數表達式,如公式(6)所示。
式中:cW2和ch2分別為預測框和GT 框最小外接矩形的寬和高;EIOU 將損失函數分成預測框和GT 框的重疊損失γEIOU、預測框和GT 框的中心距離損失γdis、預測框和GT 框的寬和高損失γasp。
Alpha-IOU Loss[5]是基于現有IOU Loss 的統(tǒng)一冪化,對所有的IOU Loss 增加α冪,對CIOU Loss 進行冪化,其表達式如公式(8)所示。
α-IOU 損失顯著地超過現有的基于IOU 的損失。調節(jié)α,使檢測器在實現不同水平的bbox 回歸精度方面具有更大的靈活性,對小數據集和噪聲的魯棒性更強。α對不同的模型或數據集并不過度敏感,通過多組試驗,該文的試驗測試選取為α=3。
該文的試驗硬件:CPU 為Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz 2.69 GHz。GPU為NVIDIAGeForceRTX2080ti 4GB。輔助工具為matplotlib、OPEN CV 和tensorboard??蚣転镻ytorch。對模型訓練的基本參數動量0.937,權重衰減0.0005,初始學習率設定0.01。試驗結果的評價指標有精確度、召回率、平均精度和平均精度均值,其中平均精度的計算公式如公式(9)所示,平均精度均值的計算公式如公式(10)所示。
式中:n為數據集中的類別數。在口罩佩戴檢測中設定n為2,設定AP的IOU 檢測閾值為0.5,所以評價指標為mAP@0.5。
該文的主要目的是對人臉佩戴口罩進行檢測,主要分為佩戴口罩和未佩戴口罩2 種情況,所以該文結合網絡資源和MaskedFace 數據集挑選了2000 張照片,分為訓練集1600 張和測試集400 張,將其作為自建數據集。標簽類型分為mask_face 和no_mask_face。
在自建數據集上對改進的模型進行訓練100epoch 后,對測試結果進行對比,選取最優(yōu),對模型的改進方向為主干網絡的輕量化和損失函數。第一步是將shufflenetv2 和MobileNetV3_Small 進行對比,將2 種輕量化網絡分別加入YOLOv5s 中,試驗結果見表1。
表1 輕量化網絡對比
將表3 中的數據結合參數量、計算量以及平均精度均值可以得出使用MoblieNetV3_Small 輕量化網絡效果更好。
將CIOU、EIOU[6]和Alpha-IOU 這3 種改進效果進行對比,試驗結果見表2。
表2 損失函數改進對比
從表1 可以分析出,YOLOv5s 在進行EIOU 替換CIOU后,平均精度均值提高了1.8%;YOLOv5s 在進行Alpha-IOU 替換CIOU 后,平均精度均值提高了1%。由此可以得出EIOU 的改進在二者中效果更好。
通過消融試驗驗證改進的有效性,測試結果見表3。
從表3 可以分析,EIOU 和Alpha-IOU 改進對YOLOv5s平均精度均值分別有1.8%和1%的提升;MobileNetV3_Small 結 合EIOU 改 進 和MobileNetV3_Small 改 進 相 比,平均精度均值下降了0.5%,說明EIOU 的改進并不適合MobileNetV3_Small 網絡;MobileNetV3_Small 結合Alpha-IOU 改進和MobileNetV3_Small 改進相比,平均精度均值提高了0.6%,說明Alpha-IOU 對MobileNetV3_Small 網絡有提升作用;shufflenetv2 結合EIOU 改進和shufflenetv2改進相比,平均精度均值提高了0.5%,說明EIOU 對shufflenetv2 網絡有一定的提升作用;shufflenetv2 結合Alpha-IOU 改進和shufflenetv2 改進相比,平均精度均值下降了0.7%,說明Alpha-IOU 改進不適合shufflenetv2 網絡。shufflenetv2 結合EIOU 改進和MobileNetV3_Small 結合Alpha-IOU 改進的平均精度均值一樣,二者的改進方向都是以輕量化為主,結合測試的單張圖片檢測速度對比,MobileNetV3_Small 結合Alpha-IOU 改進的單張檢測速度比shufflenetv2 結合EIOU 改進的單張檢測速度快。
表3 消融試驗結果
該文提出了2 種基于YOLOv5s 改進的口罩佩戴檢測算法,為提高檢測精度和輕量化,選擇從改進損失函數提高檢測精度,替換Backbone 網絡完成輕量化。最后的試驗數據對比表明,在硬件設備性能足夠的場景中,可以選擇采用EIOU 損失函數改進,它的平均精度均值是本次改進方案中精度提高效果最好的。在硬件設備性能較低的場景中,可以使用Alpha-IOU 結合MobileNetV3_Small 改進的YOLOv5s 算法,它能夠實現參數量和浮點計算量減半,可提高檢測速度,口罩佩戴的平均精度值為91.9%。在后續(xù)工作中,可以擴大數據集的規(guī)模,還可以嘗試對結構進行進一步調整,提高算法的檢測精度,進一步優(yōu)化算法。