樊新川,陳春梅
(西南科技大學 信息工程學院,四川 綿陽 621010)
在計算機視覺領域中,目標檢測一直是一項熱門的任務,是實現(xiàn)事件檢測[1]、行為識別[2]、場景理解[3]、目標跟蹤[4]等各種高級視覺任務的基礎,被廣泛應用于視頻監(jiān)控、自動駕駛、智能交通以及服務機器人等眾多實際任務中。
對于傳統(tǒng)的目標檢測算法,人為設計的算子難以獲取復雜圖像的語義信息,存在泛化性差和魯棒性低等問題。而卷積神經(jīng)網(wǎng)絡因具有強大的特征提取能力[5],在目標檢測任務中得以快速發(fā)展。目前,目標檢測算法可分為Anchor-based 和Anchor-free。早期Anchor-based 類算法中的Two stage 目 標 檢 測 算 法R-CNN 系 列[6-7]使 用 區(qū) 域 建議生成網(wǎng)絡,并在最后一層特征圖上每個像素點設置不同尺度的錨框進行前后景的回歸和分類預測,接著對前景目標進行更精細的回歸和分類預測,從而使目標檢測精度得到極大提升。不過,該類算法由于分兩階段進行,參數(shù)量和運算量都比較大,故而實時性較差,不利于輕量化設備使用,因此誕生了基于回歸思想的One stage 目標檢測算法,代表性算法為YOLO(You Only Look Once)系列[8-10]。該系列算法基于區(qū)域建議生成網(wǎng)絡,并不區(qū)分前后景而是直接完成對目標的分類和回歸,極大地提升了檢測速度,同時降低了參數(shù)量和計算量,但精度不高。在改進版本上,經(jīng)過錨框引入、聚類分析以及跳連接等優(yōu)化之后,YOLO 系列的檢測精度已不斷逼近R-CNN 系列,但仍然存在錨框重疊且數(shù)量多等問題。Anchorfree 類算法則是直接預測定位框,即通過尋找目標的角點或中心響應點完成定位和回歸,無需借助錨框,提升了速度和精度,代表性算法有CornerNet[11]、CenterNet[12]、YOLOX[13]等。
雖然目標檢測算法的精度不斷提升,但在實際運用中,昂貴的系統(tǒng)開銷是制約算法落地的重要 原 因。MobileNet[14]提 出 深 度 可 分 離卷 積,把標準卷積拆分為深度卷積和點卷積,減少了計算量和參數(shù)量且精度損失較小。ShuffleNet[15]在此基礎上,利用組卷積和通道混洗進一步減少模型參數(shù)量。GhostNet[16]發(fā)現(xiàn)同一層中的特征圖之間相似度較高,可以利用一些廉價的操作進行特征變換而不需要網(wǎng)絡生成。
本文基于YOLO 框架,深入研究了Focus 下采樣和高效注意力機制,提出了增強型Mobile-Netv3(Enhance-MobileNetv3,E-MobileNetv3)網(wǎng)絡,并進一步研究設計了縱橫多尺度特征融合、Mish、SIOU 和Soft-NMS 等策略,旨在解決開銷與精度平衡困難的問題。
YOLOXs 基于YOLOv3 算法進行改進,主要改進措施為在預測分支處將原來的耦合頭改為解耦頭以及采用simOTA 正樣本匹配策略。其網(wǎng)絡結構如圖1 所示,解耦頭將原本耦合頭同時進行分類、回歸和對象檢測的3 種任務改為多個分支分別對應不同任務,且直接輸出預測框而不再使用anchor 機制,從而提高了精度,避免了超參數(shù)設置。
圖1 YOLOXs 模型結構Fig.1 Model architecture of YOLOXs
YOLOX 損失涉及對象檢測損失lobj、分類損失lcls和位置損失lbox共3 種損失,各損失函數(shù)的數(shù)學定義如式(1)~(4)所示:
式中:S2表示網(wǎng)格數(shù);b代表錨框數(shù);Iobjij代表第i、j處是否存在目標,有則為1,無則為代表第i、j處是否存在目標,有則為0,無則為1;代表置信度;Ci表示檢測目標置信度的真實值;Pi(c)代表真實類別概率;(c)代表預測類別概率;IOU 表示預測框與真實框的交并比。
深度可分離卷積由深度卷積和點卷積兩部分構成。深度可分離卷積與標準卷積的參數(shù)量對比如式(5)所示:
式中:S為卷積核尺寸,M為輸入特征圖數(shù)目,N為輸出特征圖數(shù)目。
MobileNetv3[17]網(wǎng)絡由MobileNetv3 bneck 堆疊而成,該結構主要包含逆瓶頸結構、殘差結構、注意力機制和深度可分離卷積。MobileNetv3改進了Swish 激活函數(shù),提出了激活函數(shù)Hard_swish。Swish 激活函數(shù)為x*Sigmoid(x),該函數(shù)可以顯著提高卷積神經(jīng)網(wǎng)絡的性能,但Sigmoid函數(shù)計算耗時,所以改用Relu6 函數(shù),如式(6)所示:
MobileNetv3 網(wǎng)絡第一層通過采用步長為2的卷積操作完成下采樣,導致輸入圖像信息有一定的損失,本文將其改進為Focus 結構,如圖2 所示。從輸入圖像中每隔一個像素提取一個像素,共組成4 張圖像,完成下采樣,再將其輸入步長為1 的卷積層,有利于更充分的提取輸入圖像的特征。
圖2 Focus 圖解與實際效果Fig.2 Focus diagram and practical effect
本文將MobileNetv3 中的Sequeeze and Excitation[18]注 意力 模 塊 改 進 為Efficient Channel Attention[19],該模塊僅由全局平均池化和一維卷積組成,因此更為輕量化。為了進一步加快計算速度,將一維卷積后的Sigmoid 激活函數(shù)優(yōu)化為Hard_sigmoid 激活函數(shù),其結構如圖3 所示。
圖3 E-MobileNetv3 bneck 結構Fig.3 Structure of E-MobileNetv3 bneck
Neck 部分采用特征金字塔(Feature Pyramid Networks,F(xiàn)PN)[20]和 基 于Inception[21]的SSH 結構[22]并進行通道裁剪,使網(wǎng)絡參數(shù)量進一步減小。在FPN 結構中橫向構建3×3、5×5 和7×7 3 種感受野的分支,5×5 感受野和7×7 感受野分支共有第一層卷積,然后將3 個分支的信息進行融合,以此增強網(wǎng)絡對不同尺度目標的適應能力,且能利用更多的上下文信息提高網(wǎng)絡的識別性能,結構如圖4(a)所示。
圖4 SSH 嵌入方式Fig.4 Embedding mode of SSH
圖4(b)和(c)為SSH 結構在本文網(wǎng)絡上嵌入的兩種方式,圖4(b)方式是添加在輸出頭之前;圖4(c)方式是與FPN 進行融合,添加在主干網(wǎng)絡輸出分支中。
激活函數(shù)向卷積神經(jīng)網(wǎng)絡中引入了非線性因素,使得網(wǎng)絡能夠進行非線性回歸。SSH 中的Relu 激活函數(shù)的數(shù)學定義如式(7)所示:
卷積神經(jīng)網(wǎng)絡對圖像數(shù)據(jù)進行卷積操作時,會產(chǎn)生大量的負數(shù)。使用Relu 激活函數(shù),會使得所有負值置0,從而導致網(wǎng)絡損失大量信息。Hard_Swish 和Mish 激活函數(shù)則避免了這個問題,而Mish 激活函數(shù)相比于Hard_Swish 激活函數(shù),其連續(xù)可微,能夠更好地避免梯度消失和梯度爆炸的發(fā)生。因此,本文將激活函數(shù)改進為Mish,其數(shù)學表達式為如式(8)所示:
交并比(IOU)存在不能反映重疊位置、框間距離等問題。為了解決上述問題,GIOU[23]、DIOU[23]與CIOU[23]被提出。然而,這些方法都沒有考慮所需真實框與預測框之間不匹配的方向。因為預測框可能在訓練過程中“四處游蕩”并最終產(chǎn)生更差的模型。針對以上問題,SIOU[24]基于CIOU 考慮了角度因素,解決了方向不匹配的問題,如圖5 所示,設計出Angle cost、Distance cost、Shape cost 和IOU cost 4 種 損 失,它 們 的 數(shù)學定義如式(9)~式(16)所示:
圖5 邊框回歸中的角度因素Fig.5 Angle factor in border regression
式中:bgt、b代表真實框和預測框的中心點坐標,σ代表真實框與預測框兩者中心點距離,ch代表真實框與預測框兩者中心點y方向上距離,wgt、hgt代表真實框的寬、高,w 、h代表預測框的寬、高。
改進后的lbox的數(shù)學定義如式(17)所示:
式中:Δ代表Distance cost,Ω代表Shape cost。
傳統(tǒng)的非極大抑制(Non-Maximum Suppression,NMS)用于冗余預測框剔除,而直接刪除的做法則使被遮擋目標的檢測率降低。Soft-NMS[25]針對該問題,提出將大于閾值的預測框的置信度進行衰減,而不是置0 直接刪除,其數(shù)學定義如式(18)所示:
式中:si代表其余相近預測框的置信度;代表置信度最高的預測框;bi代表其余相近預測框;σ代表標準差;N代表閾值。
本文顯卡為1 張8 GB 內(nèi)存的NVIDIA GTX 2070 super,操作系統(tǒng)為ubuntu,深度學習框架為Pytorch。實驗數(shù)據(jù)為交通監(jiān)控數(shù)據(jù)集UADETRAC 和MS COCO 數(shù) 據(jù) 集。
本文所用評估標準是平均精確度均值(Mean Average Precision,MAP)、參數(shù)量、浮點數(shù)(Giga Floating-point Operations Per Second,GFLOPs)和幀率(Frames Per Second,F(xiàn)PS)。
式中:P表示查準率,R表查全率,TP 表示將正樣例被正確預測為正樣例的個數(shù),F(xiàn)P 表示將負樣例被錯誤預測為正樣例的個數(shù),F(xiàn)N 表示將正樣例被錯誤預測為負樣例的個數(shù),AP 表示P-R曲線的面積,mAP 表示所有類的平均精度。
4.3.1 消融實驗
在本文改進的模型下進行消融實驗,即Anchor-based 型,并使用0.5 倍寬度的E-Mobile-Netv3 為主干網(wǎng)絡。
為了更加全面評估E-MobileNetv3 的性能,選擇ShuffleNetV2-0.5、Ghost-0.5、MobileNetv2-0.5 和MobileNetv3-0.5 4 種輕量級網(wǎng)絡在本文算法上進行實驗(表1),實驗數(shù)據(jù)為MS COCO數(shù)據(jù)集,實驗結果如表2 所示。
表1 輕量級主干網(wǎng)絡對比實驗Tab.1 Comparison experiment of lightweight backbone network
表2 SSH 嵌入方式驗證實驗Tab.2 Verification experiment of SSH embedding mode
對比表1 中實驗結果,可以看出本文提出的E-MobileNetv3-0.5 以最小的算法開銷取得了最高的精度。綜上,E-MobileNetv3 相比于其他輕量級主干網(wǎng)絡更具優(yōu)越性。
在MS COCO 上驗證了本文SSH 嵌入方式的算法性能,實驗結果如表2 所示,將SSH 與FPN進行融合的方式對模型精度的提升最大。
為進一步說明縱橫多尺度融合的作用,對提取結果通過熱度圖對比分析,如圖6 所示。圖6(a)為3×3 的感受野的分支,其貢獻主要為鳥喙部位,偏向于目標局部特征;圖6(b)為5×5 的感受野的分支,其貢獻更偏向于鳥整體特征;圖6(c)為7×7 的感受野的分支,貢獻偏向全局特征;圖6(d)將3 種尺度的信息融合,其貢獻為目標整體以及鳥喙和翅膀等局部特征??梢?,本文提出的縱橫多尺度融合結構能夠關注目標整體并突出有效的局部特征。
圖6 SSH 各感受野熱度圖及最終輸出熱度圖Fig.6 Heat maps of SSH receptive field and final outputheat map
為了驗證Neck 部分采用不同激活函數(shù)的性能,在MS COCO 上進行實驗,實驗結果如表3 所示。可以得出,采用Mish 激活函數(shù)的網(wǎng)絡的檢測精度最高。
表3 Neck 部分不同激活函數(shù)實驗結果Tab.3 Experimental results of different activation functions in Neck part
為了驗證Focus、Efficient Channel Attention(ECA)、Convolutional Block Attention Module(CBAM)[26]、GIOU、DIOU、CIOU、SIOU、SSH、PaFPN[27]、Soft-NMS 和YOLOX框架等對本文方法的影響,在MS COCO 數(shù)據(jù)集上進行了消融實驗,實驗結果如表4 所示??梢钥闯?,主干網(wǎng)絡第一層改進為Focus,精度提升了0.06%;注意力模塊改進為ECA 和CBAM,精度再次提升了2.31%、2.56%,參數(shù)量下降了1.62%、0.85%;融合SSH 結構相比于未融合時的檢測精度提升了23.63%;將CIOU 回歸損失改進為SIOU 回歸損失,精度提高了5.6%;采用PaFPN 相比于普通的FPN,精度提升了8.7%,但參數(shù)量增加了85%;將NMS 改進為Soft-NMS,精度提升了9.62%;在YOLOX 框架下,精度提升了14.9%。
表4 消融實驗Tab.4 Ablation experiments
綜上所述,本文改進的Focus、ECA、SSH、SIOU 回歸損失和Soft-NMS 均提升了算法的檢測精度。因此以YOLOX 框架為基礎,E-Mobile-Netv3 為主干網(wǎng)絡、Neck 部分為縱橫多尺度融合結構、SIOU 為回歸損失和Soft-NMS 為預測框后處理,形成了本文最終目標檢測算法。
4.3.2 對比實驗
為了驗證本文方法的先進性,將本文提出的改進方法,即Anchor-free 型,使用1 倍寬度的EMobileNetv3 為主干網(wǎng)絡與當前主流方法如YOLOv4-tiny、YOLOv5s、YOLOXs、YOLOv5s-MobileNetv3、YOLOXs-MobileNetv3、Faster R-CNN、Mask R-CNN、Cascade R-CNN、SSD-VGG16、SSD-MobileNetv2、FCOS、CentripetalNet、CenterNet 和Efficient-b3 算 法 在MS COCO 數(shù) 據(jù) 集上進行實驗對比,實驗結果如表5 所示??梢钥闯?,本文改進模型相較于其他主流算法模型,在精度和算法開銷上具有明顯的綜合優(yōu)勢。與YOLOv5 相比,參數(shù)量和計算量分別下降了55.42%、30.49%,精度提升了5.7%;與YOLOXs 相比,在保證精度的同時,參數(shù)量下降了64.98%,計算量下降了57.14%;與Cascade R-CNN 相比,參數(shù)量下降了95.68%。
表5 在MS COCO 上的對比實驗Tab.5 Comparative experiments on MS COCO
為了更加直觀地進行評價,將YOLOXs、Mask R-CNN、Cascade R-CNN、CentripetalNet、Center-Net、FCOS 與本文改進模型的檢測效果進行了對比,效果如圖7 所示??梢钥闯?,在輕量級One stage 算法中,本文方法表現(xiàn)更優(yōu)秀。
圖7 在MS COCO 上的檢測效果對比Fig.7 Detection effect compared on MS COCO
為了驗證本文方法的實用性,選取了YOLOv3-SPP、YOLOv5s 和YOLOXs 與本文檢測算法在UA-DETRAC 交通車輛數(shù)據(jù)集上對比了檢測性能,實驗結果如表6 所示??梢钥闯?,本文方法的mAP@0.5 達到了70.5%。與YOLOv3_SPP相比,mAP@0.5 下降了2.2%;與YOLOv5s 和YOLOXs 相比,分別提升了6.33%和3.52%;與YOLOXs 相比,F(xiàn)PS 提升了14.4%。
表6 在UA-DETRAC 上的對比實驗Tab.6 Comparative experiments on the UA-DETRAC
YOLOv3-SPP、YOLOv5s、YOLOXs 以及本文方法的測試效果如圖8 所示。可以看出,本文方法的檢測率最高且邊框回歸更精準。圖中紅色虛框標注了各算法遺漏目標,本文方法都能成功檢測。本文檢測結果(Ours)中的3 號、4 號、7 號和8 號目標相比于其他檢測算法,具有最高的定位精度。
圖8 在UA-DETRAC 上的檢測效果對比Fig.8 Detection effect compared on UA-DETRAC
在自制的交通監(jiān)控視頻上進行檢測效果驗證,實驗結果如圖9 所示??梢钥闯?,圖(1)中藍色虛框標出的藍綠色bus 在偏藍色背景下,YOLOXs 并未檢測出;圖(2)中藍色虛框中的van 車輛,YOLOXs 檢測產(chǎn)生歧義,被同時標記為van和car;圖(3)中bus 右上方小的藍色虛框中,YOLOXs 將一輛van 和car 識別為一輛bus;圖(4)藍色虛框中的藍綠色的bus 在偏藍色背景下,被YOLOXs 識別為truck;圖(5)藍色虛框中的car 未被YOLOXs 識別到。
圖9 交通監(jiān)控場景下的檢測效果對比Fig.9 Comparison of detection effects in traffic monitoring scenarios
綜上所述,本文檢測算法的開銷相較主流目標算法具有較大優(yōu)勢且精度損失較小,多尺度適應性更強。
針對目標檢測算法精度與開銷難以平衡以及多尺度目標適應性的問題,本文提出基于YOLO 框架的輕量化高精度目標檢測算法,通過改進后的E-MobileNetv3 設計縱橫多尺度融合結構、Mish、Soft-NMS 和SIOU 回歸 損 失 等 策 略,改善了上述問題。
在UA-DETRAC 上的實驗證明,相比于YOLOXs,本文改進模型的Map@0.5達到70.5%,提升了3.52%,參數(shù)量與計算量分別減少了64.98%、57.14%,F(xiàn)PS 提升14.4%。本文通過消融實驗對比以及與其他主流目標檢測算法對比,證明改進算法具有較高的檢測精度與較低的算法開銷。后續(xù)研究將算法模型實際嵌入到小型移動平臺實驗,進一步實現(xiàn)本文算法的實際應用價值。