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