孫孚斌,朱兆優,陳思超,陳弘揚
(東華理工大學機械與電子工程學院,南昌 330013)
目標檢測算法是目標識別的基礎,隨著機器視覺行業及相關產業的蓬勃發展,各種檢測算法也得到了不同程度的優化和性能提升。
目前比較常見的目標檢測算法可以分出兩種類型,Two-stage 方 法 和One-stage 方 法。Two-stage 算 法 就 是 把檢測問題分成兩個階段來處理,在第一個階段中劃出包含目標大致位置信息的候選區域(Region Proposals),然后在第二階段對候選區域作分類以及位置細修處理。目前比較常用的Two-stage 類型的方法有卷積神經網絡(R-CNN);由Ren 等[1]提出的基于卷積神經網絡改進的FasterR-CNN 算法,該算法結合特征圖共享和邊框回歸的思想,利用RPN 網絡提取目標的深層網絡特征,運用非極大值抑制(NMS)的方法實現了在GPU 上的目標實時檢測;通過多次迭代尋找最優分類器的Adaboost人臉檢測算法。One-stage 目標檢測算法,該類算法除去了劃分候選區域的步驟,可以通過一個stage 直接找出目標的類別和坐標值,目前常見的one-stage 算法有SSD,由俞偉聰[2]在ECCV2016 提出的一種檢測速度比FasterR-CNN 快的檢測算法;還有Redmon[3]提出的YOLO檢測算法。
YOLO 檢測算法具有泛用性高,檢測失誤率低且檢測速度快等優點,被廣泛應用于人臉檢測中。初代的YOLO 檢測算法運用于人臉檢測方面由于其單一尺度的網格劃分導致對于多尺度的人臉檢測實際效果達不到預期,召回率不高。蔣紀威等[4]提出修改內部參數改變神經網絡結構的方法,提高了檢測的實時性,但是沒有改善訓練的精度。朱超平等[5]針對卷積層進行改進,在卷積層的后面增加批量歸一化的操作,提升了訓練速度,但是仍然沒有提升訓練的精度。本文提出一種改進的YOLOv5檢測模型,并應用于人臉檢測。首先YOLO的版本選擇YOLOv5,較之前的版本增添了許多有效的數據處理方式以達到提高訓練模型的精度且減少訓練時間的目的,比如用于數據擴增的Mosaic、Cutout,還有改變亮度、圖像擾動、加噪聲、翻轉、隨機擦除等方式[6]。但是YOLOv5使用的邊界框回歸損失函數GIOU 存在當檢測框與真實框呈現為包含關系時會退化為IOU,無法對其相對位置關系進行區分的問題[7]。在此之上替換YOLOv5的邊界框回歸損失函數為EIOUloss,即通過預測框與真實框的中心點間標準化距離加速損失的收斂,并分別考慮邊界框的縱橫比,把縱橫比拆開,分別計算真實框和預測框的長和框,進一步提升回歸精度。
YOLOv5 是一種單階段目標檢測算法,其網絡結構如圖1所示。
圖1 YOLOv5網絡結構
YOLOv5 目標檢測算法由輸入端、基準網絡(Backbone)、Neck 網絡以及Head 輸出端四個部分組成[8]。首先是YOLOv5網絡的輸入端,輸入圖像大小為608×608×3(RGB3 通道)。該階段存在一個圖像預處理步驟,即將輸入的圖像放縮至輸入網絡的608×608 大小,并對輸入的圖像進行馬賽克(Mosaic)數據增強,通過隨機裁剪、隨機排布和隨機縮放的方式對輸入圖像進行拼接,不僅能提高對小目標的檢測效果,還可以豐富檢測目標的背景[9]。其次是基準網絡部分主要采用的是Focus 結構和CSP(內含殘差結構)以及SPP(空間金字塔池化)結構組成。Foucs 的主要作用就是切片功能,比如將原始的608×608×3的圖像輸入Focus 結構中,再經過切片的操作之后會得到304×304×12的特征圖,接著通過一個32個通道數的Conv 層,輸出大小為304×304×32 的特征映射[10]。圖中C3 模塊內含Bottleneck(瓶頸層),其中n代表模塊中瓶頸層的個數,ture/flase代表著是否啟用瓶頸層中的殘差模塊。提取的特征印象經過多重卷積之后送入SPP(空間金字塔池化)模塊進行各種尺度的特征圖的融合,先通過一個1*1的卷積使輸入通道減半,之后做內核大小分別為5、9、13 的最大池化,再將最大池化結果與未進行池化的數據進行連接,最后合并[11]。之后送入Neck 網絡,進一步提升特征的多樣性和魯棒性。最后采用3個尺度進行預測,每一個尺度都具有3 個BoundingBox(即界限值),最后根據與實際框的交并比(IOU)最大的界限值來進行物體預測[12]。圖像可視化處理過程如圖2所示。
圖2 圖像可視化變化過程
在傳統的基準網絡結構(Backbone)的最后一層添加一層殘差注意力模塊(SE-RsNet Module),改進后的基準結構網絡如圖3所示。
圖3 殘差注意力模塊
該模塊先將輸入的特征圖通過一次全局平均池化(Global pooling)進行壓縮,經過壓縮后輸出一個1*1*512的特征向量,該特征向量通過激勵后進行Scale操作,將1*1*512 的特征向量進行通道權重相乘,即將SE 模塊計算出來的各通道權重值分別和原特征圖對應通道的二維矩陣相乘,得到輸出結果。該模塊雖然加大了總計算量,但是提升了參數量,使檢測模型更加關注識別物體,而且因為殘差結構的存在,保證了改變后的模型不會相較原來的模型更差。
2.2.1 YOLOv5算法存在的缺陷
目標檢測任務的損失函數一般由Objectness score 損失(置信度損失)、class probability score 損失(分類損失)以及bounding box 損失(邊界框回歸損失)3 部分組成。YOLOv5 算法采用GIOU 作為邊界框回歸損失函數[13]。GIOU 損失函數克服了IOU 損失函數在預測框與真實框不相交時無法反饋兩個框之間的距離遠近的問題,并且同時繼承了IOU的優點。計算損失公式如下:
其中,B是預測框,Bgt是真實框,C包含預測框和真實框的最小凸閉合框。從GIOU 的公式中可以看出GIOU 類似IOU 采用預測框與真實框之間的距離來度量損失函數,并且對尺度不夠敏感IOU ∈[0,1],得到GIOU ∈[-1,1],所以GIOU 不僅僅關注預測框與真實框之間的重疊區域,還關注其他的非重疊區域,能更好地反映預測框與真實框的重合度,當完全重合時IOU=GIOU=1,當預測框與真實框不重合時,不重合的程度越高,GIOU的值則越接近-1。
但是根據式(7)可以看出,當預測框與真實框框呈包含狀態時無法獲得其相對位置關系。如圖4所示。
圖4 預測框與真實框呈包含狀態
在這一情況下,3 張圖的LGIOU是相等的,由于GIOU十分依賴IOU,所以在垂直方向上的誤差很大,很難收斂,導致GIOU不夠穩定[14]。
2.2.2 改進的YOLOv5損失函數
針對上述GIOU 存在的問題,提出使用EIOUloss 函數替代GIOU。EIOU通過將GIOU中引入最小外接框來最大化重疊面積的方法替換為兩個框中心點的標準化距離,并添加一個影響因子和用邊長作為懲罰項,該影響因子考慮了預測框縱橫比擬合真實框的縱橫比。損失公式如下:
該損失函數包含重疊損失LIOU,寬高損失Lasp以及中心距離Ldis損失3 個部分,其中bgt是真實框的中心點,b是預測框的中心點,ρ代表兩個中心點之間的歐氏距離,c 代表包含真實框和預測框的最小閉合框的對角線距離,w和h分別是預測框的寬度和高度,wgt和hgt分別是真實框的寬度和高度,Cw和Ch分別是覆蓋真實框和預測框的最小外接邊框的寬度和高度。
本文搭建的實驗環境為:Intel core i7-115200 處理器,基準頻率2.3 GHz,GPU 為RTX 2060,6 GB 顯存,Windows操作系統。
本文采用由香港大學發布的人臉數據集Wide Face,其中包含了各種不同的光照狀態、運動狀態、姿勢、遠近、膚色和不同程度遮擋的人臉,從61 種人臉分類中各取出20 張用作人臉數據集訓練,迭代次數為默認的300次,訓練集與驗證集劃分為80%和20%。訓練獲得的損失函數對比如圖5~6 所示。通過對比可以看出,改進后的YOLOv5檢測模型的損失低于未改進的YOLOv5檢測模型,大概提升14.2%,說明改進后的YOLOv5檢測模型具有更好的魯棒性。
圖5 改進的YOLOv5損失曲線
圖6 YOLOv5損失曲線
改進YOLOv5 檢測模型訓練的PR 曲線如圖7 所示。訓練后的mAP@0.5(IOU 為0.5 時Precision 和Recall圍成的面 積)和 mAP@0.5:0.95(IOU 從0.5 到0.95,步長為0.05,上的平均mAP)的值以及準確率比較如表1 所示。可以看到,改進后的YOLOv5目標檢測算法較傳統的YOLOv5檢測算法擁有更高的準確率和精度。
圖7 PR曲線
表1 實驗數據對比
將訓練獲得的權重文件應用于人臉檢測,每一幀圖片的處理時間平均只需要0.03 s,實時視頻流處理可以保持33 的FPS,保證經過算法檢測后輸出的視頻圖像的流暢性,效果如圖8~10 所示。從圖中可以看到,改進后的YOLOv5 檢測算法訓練獲得的權值文件應用于實際的人臉檢測中不僅保持了較高的檢測速度,并且擁有較高的準確率,能夠忽略小人臉檢測、多目標檢測和人臉膚色、表情差異產生的影響。
圖8 程序運行
圖9 人臉原圖
圖10 人臉檢測效果
本文提出了改進YOLOv5 目標檢測算法的具體方法,通過在損失函數中引入真實框與預測框中心點間的歐式距離和預測框與真實框的長比及寬比作為損失懲罰項以加快函數收斂速度和提高回歸精度,另外在基準網絡結構中的最后一層增加一殘差注意力模塊,提升參數量,使檢測模型更加關注識別物體。實驗表明改進的YOLOv5 目標檢測算法在wideface 數據集上的訓練準確率達到88.28%,較傳統YOLOv5 準確率提升2.6%,訓練過程中的損失為0.013,較傳統YOLOv5 損失減小13.33%,擁有更好的魯棒性。該目標檢測算法解決了傳統YOLOv5目標檢測算法中當預測框和真實框呈包含狀態時無法預測兩框之間相對位置關系以及在垂直和水平方向上收斂速度慢的問題,提升了回歸精度的同時保證了人臉檢測過程中要求的實時性,能夠較好地應用于實際人臉檢測項目中。