蔣 超, 張 豪, 章恩澤, 惠 展, 樂云亮
(揚(yáng)州大學(xué)信息工程學(xué)院, 江蘇 揚(yáng)州 225127)
隨著中國城市化水平的發(fā)展, 城市道路擁擠已成為亟須解決的普遍問題, 其中交通目標(biāo)的識別系統(tǒng)研究尤為重要.傳統(tǒng)的檢測方法如梯度直方圖或支持向量機(jī), 主要采用滑動窗口檢測目標(biāo), 時(shí)間冗余長且手工設(shè)計(jì)的特征無魯棒性[1].卷積神經(jīng)網(wǎng)絡(luò)中深度學(xué)習(xí)的實(shí)時(shí)性和準(zhǔn)確性高, 且由于通過對大量樣本的特征學(xué)習(xí)完成目標(biāo)檢測, 故在面對復(fù)雜圖像識別問題時(shí)有著較好的魯棒性[2]; 因此, 基于深度學(xué)習(xí)的目標(biāo)檢測算法成為當(dāng)前機(jī)器視覺領(lǐng)域的主流方法.目前, 基于深度學(xué)習(xí)網(wǎng)絡(luò)的目標(biāo)檢測方法主要分為如下2類: 1) 基于區(qū)域的方法.如R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5].首先利用選擇性搜索、邊緣檢測和圖像區(qū)域提取網(wǎng)絡(luò)等技術(shù)生成可能包含目標(biāo)的候選區(qū)域集合,然后通過神經(jīng)網(wǎng)絡(luò)對圖像區(qū)域進(jìn)行特征提取,最后進(jìn)行邊界框回歸和預(yù)測.該類方法雖然精度高, 但由于提取大量的候選區(qū)域,導(dǎo)致處理效率低且推理速度慢; 2) 基于回歸的方法.如YOLO[6]、YOLOv2系列[7]和SSD系列[8].該類方法無須提取候選區(qū)域,而是直接將圖像輸入網(wǎng)絡(luò)進(jìn)行卷積特征提取,再在特征圖像上進(jìn)行邊界框回歸, 檢測時(shí)間大幅降低, 但精度受到一定影響.在實(shí)時(shí)性要求較高的場景中, 基于回歸的方法應(yīng)用更為廣泛[9].
YOLO算法的結(jié)構(gòu)簡單且可以在保證高檢測精度的前提下提高檢測速度,被廣泛用于行人車輛目標(biāo)檢測領(lǐng)域.張陳晨等[10]通過改變輸入圖像尺寸和使用部分池化層替換卷積層的方式對YOLO算法進(jìn)行改進(jìn), 提升了車輛識別的檢測精度; 袁小平等[11]針對YOLO算法對中小目標(biāo)檢測效果不理想的問題, 在算法中引入密集連接實(shí)現(xiàn)特征重用, 提高了特征提取效率, 提升了對遠(yuǎn)處較小目標(biāo)檢測的準(zhǔn)確率.然而, 由于參數(shù)量和計(jì)算復(fù)雜度較高,上述方法的檢測速度偏低.作為當(dāng)前YOLO系列最輕量化的模型,YOLOv5s的參數(shù)量和計(jì)算復(fù)雜度仍然較高, 故對部署平臺的硬件要求較高[12].
Ghost模塊[13]是華為公司于2020年提出的輕量化模塊, 一定程度上可降低參數(shù)量和計(jì)算復(fù)雜度.本文擬采用YOLOv5s與ghost模塊相結(jié)合的方式, 進(jìn)一步降低網(wǎng)絡(luò)參數(shù)量和提高檢測速度, 使得網(wǎng)絡(luò)的性能更加均衡, 并在網(wǎng)絡(luò)中引入注意力機(jī)制(efficient channel attention, ECA)[14], 以期讓特征層的通道通過共享權(quán)重參數(shù)實(shí)現(xiàn)通道之間的信息交互, 使得網(wǎng)絡(luò)更關(guān)注重要特征的學(xué)習(xí).此外, 通過改進(jìn)邊界框回歸損失函數(shù)中寬高比的計(jì)算, 促使損失函數(shù)更快收斂.
YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)主要分為輸入端、Backbone、Neck和輸出端4個(gè)部分, 如圖1所示.在輸入端對圖像進(jìn)行預(yù)處理, 完成Mosaic數(shù)據(jù)增強(qiáng)、自動計(jì)算錨框和自適應(yīng)圖像縮放.將圖像輸入Backbone部分進(jìn)行Focus操作, 即對圖像進(jìn)行切片操作, 每隔一個(gè)像素取一個(gè)值,將原始圖像劃分為4份數(shù)據(jù), 該方式可以減少下采樣導(dǎo)致的信息損失.跨階段局部(cross-stage partial, CSP)模塊在主干網(wǎng)絡(luò)中主要是用作局部跨通道融合, 利用每層的特征信息獲取更加豐富的特征圖像.在Neck部分通過上采樣層和CSP模塊將高層的語義信息與底層的位置信息相融合,進(jìn)而得到預(yù)測的特征圖像并將其輸入輸出端.輸出端擁有3種不同尺寸的特征圖像,根據(jù)各特征生成預(yù)測框進(jìn)行非極大值抑制,保留局部類別置信度較高的預(yù)測框.
圖1 YOLOv5s的網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of YOLOv5s
1.2.1 主干網(wǎng)絡(luò)的改進(jìn)
基于YOLOv5s模型, 采用ghost模塊替換主干網(wǎng)絡(luò)中2個(gè)CSP模塊進(jìn)行模型剪枝, 改進(jìn)后的YOLOv5s模型結(jié)構(gòu)如圖2所示.將ghost模塊中通道分為2個(gè)相等部分, 一部分通過1×1卷積和3×3 深度可分離卷積后與另一部分并聯(lián).首先利用1×1卷積和3×3深度可分離卷積組合模塊替換傳統(tǒng)的卷積, 通過1×1卷積生成更少通道數(shù)的特征層,然后利用深度可分離卷積對生成的特征層進(jìn)行簡單運(yùn)算,最后將其拼接成與原始尺寸相同的特征層.隨著特征層數(shù)的疊加,主干網(wǎng)絡(luò)中特征層的尺寸越來越大,網(wǎng)絡(luò)的參數(shù)量也更為龐大.據(jù)分析, 使用ghost模塊替換網(wǎng)絡(luò)中參數(shù)量最大的2個(gè)模塊能有效降低網(wǎng)絡(luò)的參數(shù)量和計(jì)算量.
圖2 改進(jìn)后YOLOv5s的網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of the improved YOLOv5s
1.2.2 注意力機(jī)制的引入
輸入特征圖像經(jīng)全局平均池化得到一維特征圖像,然后通過權(quán)重共享的一維卷積學(xué)習(xí)各通道的權(quán)重, 其中一維卷積代表模塊跨通道信息的交互率,其卷積核大小隨通道數(shù)的變化而改變.對一維特征圖像進(jìn)行Sigmoid函數(shù)操作,將原特征圖像與一維特征圖像相乘得到新的特征圖像,可有效解決通道數(shù)變化導(dǎo)致的信息丟失等問題[14].為了提升網(wǎng)絡(luò)的性能, 本文將如圖3所示的ECA模塊與網(wǎng)絡(luò)中的CSP 模塊相結(jié)合, 對重要特征層進(jìn)行通道上的注意力學(xué)習(xí).
圖3 ECA模塊Fig.3 ECA module
1.2.3 邊界框回歸損失函數(shù)的優(yōu)化
目標(biāo)檢測算法在訓(xùn)練時(shí)須降低邊界框回歸損失,使得預(yù)測框在預(yù)測過程中更加接近真實(shí)框的位置和尺寸.YOLOv5s的邊界框回歸損失函數(shù)由真實(shí)框與預(yù)測框的交并比(intersection over union, IOU)損失、中心點(diǎn)距離損失、寬高比距離損失等三部分組成.損失函數(shù)
(1)
其中IOU用來衡量預(yù)測框與真實(shí)框的重疊程度, IOU值越高, 預(yù)測框與真實(shí)框重合程度越高, IOU損失則越小;ρ2(·)為歐氏距離;b,bgt分別為預(yù)測邊界框和真實(shí)邊界框的中心點(diǎn);C為兩個(gè)候選框中最小包圍框的對角線長度,當(dāng)兩個(gè)錨框中心點(diǎn)距離越小時(shí)其中心點(diǎn)距離損失越小;α為平衡參數(shù);wgt,hgt分別為真實(shí)邊界框的寬和高;w,h分別為預(yù)測框的寬和高.
邊界框回歸損失函數(shù)(1)的最后一項(xiàng)為寬高比距離損失,通過分別計(jì)算真實(shí)框與預(yù)測框的寬高比值,可以優(yōu)化二者寬高比之間的距離.然而,寬高比距離損失定義的寬高比為相對值,而不是分別考慮寬和高的差異,當(dāng)預(yù)測框與真實(shí)框之間的寬高比呈線性關(guān)系時(shí)預(yù)測框的寬和高不能同時(shí)增加或減小,此時(shí)網(wǎng)絡(luò)將無法繼續(xù)收斂.為了避免上述問題,本文直接計(jì)算預(yù)測框與真實(shí)框?qū)捄透叩牟钪?替代原有寬高比的距離損失,其更新后的損失函數(shù)
(2)
其中wc,hc分別為覆蓋真實(shí)框與預(yù)測框的最小外接框的寬度和高度.
實(shí)驗(yàn)采用的數(shù)據(jù)集由HUAWEI P40 Pro拍攝, 包含公交車、轎車、電動車和行人等4類檢測目標(biāo),共908幅圖像.將該數(shù)據(jù)集按照3∶1∶1劃分為訓(xùn)練集(545幅)、驗(yàn)證集(182幅)、測試集(181幅), 數(shù)據(jù)集中4類檢測目標(biāo)的數(shù)量分布如表1所示.
實(shí)驗(yàn)平臺為AMD Ryzen 7 4800H@2.90 GHz,16 GB內(nèi)存,Nvidia GTX3060顯卡, CUDA版本
表1 數(shù)據(jù)集中各目標(biāo)的數(shù)量分布
圖4 損失函數(shù)的訓(xùn)練曲線Fig.4 Training curve of the loss function
是11.2, 深度學(xué)習(xí)框架為Pytorch.網(wǎng)絡(luò)每訓(xùn)練一遍數(shù)據(jù)集, 稱為1個(gè)epoch,該模型共訓(xùn)練110個(gè)epoch.訓(xùn)練過程中的損失函數(shù)曲線如圖4所示.由圖4可見: 隨訓(xùn)練次數(shù)增加,訓(xùn)練過程中的損失逐漸收斂,在完成100個(gè)epoch后損失逐漸平穩(wěn).
圖像目標(biāo)檢測的重要評價(jià)指標(biāo)主要有平均精度(average precision, AP)和平均精度均值(mean average precision, MAP),其計(jì)算式如下:
(3)
(4)
其中P為精確率, 表示真正的正樣本占預(yù)測正樣本的比例;R為召回率, 表示真正的正樣本占實(shí)際正樣本的比例;c為預(yù)測的類別;n為類別的數(shù)量.
表2 不同算法的檢測精度
表3 不同算法的性能
對比YOLOv5s[12]、YOLOv3-Tiny[10]和本文改進(jìn)的YOLOv5s等3種輕量化目標(biāo)檢測算法的性能, 結(jié)果如表2~3所示.由表2~3可知: 1) 3種算法都對轎車類別檢測的效果最好,主要是由于轎車類別在數(shù)據(jù)集中的目標(biāo)數(shù)量比例較高, 致使網(wǎng)絡(luò)對轎車的學(xué)習(xí)較充分,同時(shí)在數(shù)據(jù)集中轎車屬于中型尺寸, 受物體遮擋或距離的影響較小; 2) 3種算法對行人類別的檢測效果最差,這是因?yàn)橄噍^于轎車和電動車,行人類別數(shù)量較少,且行人類別在數(shù)據(jù)集中尺寸最小,較易受到物體大面積的遮擋或重疊,導(dǎo)致網(wǎng)絡(luò)對行人類別漏檢嚴(yán)重, 檢測效果最差; 3) 本文算法對單個(gè)類別的檢測精度明顯高于YOLOv3-Tiny算法, 只是在行人單個(gè)類別上略低于YOLOv5s; 4) 改進(jìn)后YOLOv5s算法的網(wǎng)絡(luò)參數(shù)量、計(jì)算量、模型大小以及圖像處理時(shí)間均優(yōu)于其他2種算法, 其中參數(shù)量和模型大小較YOLOv5s算法分別下降28%和27%.其原因是使用ghost模塊替換了主干網(wǎng)絡(luò)中的部分卷積模塊,而ghost模塊可以通過一系列簡單的線性操作生成更多的特征映射,有效減少了參數(shù)量,進(jìn)而降低了計(jì)算量和模型大小.此外,注意力機(jī)制的引入使得網(wǎng)絡(luò)在減少模型參數(shù)量的同時(shí),保持了算法原有的檢測精度.