劉桐,周凱,李暉
(沈陽工業(yè)大學信息科學與工程學院,沈陽 110870)
隨著社會經(jīng)濟蓬勃,自動駕駛、無人駕駛也逐步進入大眾視線。作為這一領(lǐng)域的關(guān)鍵技術(shù),目標檢測算法相繼出現(xiàn)。傳統(tǒng)的目標檢測算法采取抽取候選區(qū)域后根據(jù)顏色和輪廓信息特點人工提取特征,常用的方法有RGB[1-2]、HSV[3]、Hough[4]變換等算法,之后通過分類器進行分類,然而由于天氣條件的復(fù)雜,或是交通標志被破壞、遮蓋等,常常導(dǎo)致檢測結(jié)果不準確或漏檢。現(xiàn)有的基于深度學習的目標檢測算法大致分為兩類,第一類是兩階段的R-CNN系列[5-6]目標檢測算法,其主要提取候選框區(qū)域進行分類,盡管檢測定位效果良好,但在實踐中即時性達不到要求;第二類是一階段目標檢測算法:SSD[7]和YOLO[8-9]系列等,輸入圖片后直接在網(wǎng)絡(luò)中獲得位置和類別,大大降低了檢測過程中的重復(fù)運算,加快了檢測速度。在速度和精準方面YOLO系列算法超過其他一階段的檢測算法。
針對算法模型復(fù)雜度高且對小目標檢測存在漏檢的現(xiàn)象,在此提出一個改進YOLOv5算法用于檢測。在Backbone上增加ECA模型,以增強特征提取方法能力,改善檢查性能。
YOLOv5是一種一階段的目標檢測算法,該算法在YOLOv4的基礎(chǔ)上進行改進,提高了速度和精度。檢測具體過程是將整個圖像劃分S×S個網(wǎng)格,網(wǎng)格負責預(yù)測中心落在這個網(wǎng)格中的那個object,同時3個大小不一的先驗框在網(wǎng)格中獲得,并對其進行微細調(diào)整,形成最終的預(yù)測框。最后通過非極大值抑制算法(Non Max Suppression,NMS)選擇最佳的結(jié)果[10]。算法實現(xiàn)過程如圖1所示。

圖1 YOLO算法流程
YOLOv5算法最大特點是模型體積小,便于安放到移動端設(shè)備。YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)包括4個部分,依次是:
Input:對輸入的圖像進行Mosaic數(shù)據(jù)增強。任意抓取4張圖片,任意調(diào)整尺寸,再隨機放置進行拼湊,以此擴大數(shù)據(jù)集,特別是隨機縮放增加了很多小的目標對象,讓網(wǎng)絡(luò)更穩(wěn)定,還可以減少GPU使用。對尺寸不一的圖片能進行自適應(yīng)調(diào)節(jié),調(diào)節(jié)到一個標準大小,再進行檢測。
Backbone:首先對圖片進行切片操作,相當于下采樣兩倍,數(shù)量擴為原來的四倍,以減少浮點運算量。經(jīng)過6層網(wǎng)絡(luò)結(jié)構(gòu),進行圖像特征的提取。仿效CSPNet的設(shè)計思路[11],在backbone中設(shè)計兩種CSP結(jié)構(gòu),分別應(yīng)用于backbone和neck層,增加網(wǎng)絡(luò)的特征提取能力,降低計算瓶頸和內(nèi)存成本。
Neck:采用FPN+PAN的結(jié)構(gòu),結(jié)合淺層的語義表達和深層的語義表達,采用CSP2結(jié)構(gòu)進行跨階段局部設(shè)計,增強了網(wǎng)絡(luò)特征提取能力。
Output:使用不同尺寸的先驗框進行預(yù)測和分類,輸出3種標準的特征圖,根據(jù)損失函數(shù)反向傳播并且不斷優(yōu)化。最后使用NMS消除多余預(yù)測框。
由于交通標志屬于小目標,容易造成漏檢情況,針對此情況,為了提高卷積層的特征提取能力,采取在backbone上添加ECA(高效通道注意模塊)的方式。由于YOLOv5是輕量級的模型,所以在加入注意力機制模塊時要考慮在提高性能的同時不會增加模型的復(fù)雜度。
作為注意力模塊,ECA模塊使用參數(shù)較少,這減少了數(shù)據(jù)減消,并有效捕捉了跨通道交流,從而產(chǎn)生顯著的性能改善[12]。ECA模塊結(jié)構(gòu)如圖2所示。在維持維度的情形下使用全局平均池化方法獲得了一個1×1×C的向量;跨信道之間的信息交換用一維卷積1D-Conv來實現(xiàn)。其內(nèi)核大小k表示了本地跨信道信息交互的能力,表示多少個隔鄰進行一個信道的注意力預(yù)測,這一設(shè)置提高了模型的質(zhì)量與計算效果。

圖2 ECA模塊結(jié)構(gòu)圖
通過學習得到的通道注意力由下式表示:

Wk關(guān)涉k×C個參數(shù),并且防止了不同組的完全獨立,在此只考慮權(quán)重yi和它的k個隔鄰之間的信息共享,計算公式如下:

讓所有的通道分享權(quán)重相關(guān)信息進一步提升性能,即:

通過卷積核大小為k的一維卷積來實現(xiàn)通道之間的信息共享,即有:

式中,C1D代表一維卷積,它關(guān)涉k個參數(shù)信息。ECA模塊為了適當抓取局部跨道信息共享,確定好通道共享信息的大致范圍(即1D卷積的卷積核大小k),采用自適應(yīng)確定k的方法,其中自適應(yīng)卷積核大小k的計算公式為:

式中,γ=2,b=1。
改進后的網(wǎng)絡(luò)結(jié)構(gòu)輸出如圖3所示。

圖3 改進網(wǎng)絡(luò)YOLOv5+ECA結(jié)構(gòu)圖
選用清華大學和騰訊實驗室聯(lián)合采集制作的數(shù)據(jù)TT100K(Tsinghua-Tencent 100k)。其涵蓋3萬多個交通標志實例近9000幅圖片,包括了不同自然場景下日常生活中所見的標志圖片,數(shù)據(jù)豐富,具有多元化,示例如圖4所示。

圖4 交通標志示例
TT100K圖片采取的像素大小為2048×2048,背景復(fù)雜,對于檢測存在干擾,另外其類別繁雜,樣本數(shù)量不均衡,有的類別甚至空缺,給檢測帶來了很大難度。針對這一情況,運行腳本過濾數(shù)據(jù)集,將其中標志信息樣本數(shù)量大于100的分離出來,制成含45類的交通標志集,并且按照7:3比例劃分成訓練集和驗證集。數(shù)量統(tǒng)計及劃分如圖5所示。

圖5 數(shù)據(jù)集數(shù)量分布及劃分
實驗基于Windows操作系統(tǒng)Python 3.8編程語言實現(xiàn)。選用Pytorch1.7.1深度學習框架搭建網(wǎng)絡(luò)模型。實驗數(shù)據(jù)設(shè)置300個epochs進行訓練;batchsize設(shè)置為48;輸入圖像尺寸為640×640;初始的學習率設(shè)置為0.01;momentum設(shè)置為0.937;權(quán)重衰減系數(shù)設(shè)為0.0005。
選取準確率(Precision)、召回率(Recall)、平均精度均值(mAP)和權(quán)重模型(weights)作為評估指標,評估算法對交通標志的檢測性能。通過與其他模型對比,驗證本文算法的有效性。對比實驗結(jié)果如表1所示。

表1 檢測算法性能對比
由表1可以看出,改進算法在檢測交通標志上優(yōu)于原YOLOv5算法,分別在準確率和平均精度上提高了2.4%和0.4%;其訓練出的權(quán)重14.6 MB,方便部署于移動端檢測。與YOLOv3相比,由于模型參數(shù)過大,導(dǎo)致平均精度訓練不是很好。綜上所述,本算法在檢測交通標志上有一定的改善。
對比實驗結(jié)果如圖6所示。可見,加入ECA模塊后,準確率在訓練了100次之后走向平緩,沒有原YOLOv5訓練的變化幅度大,穩(wěn)定性較好;在mAP訓練上本方法更加穩(wěn)定,而且比YOLOv5訓練精度要好,收斂更早。

圖6 準確率對比結(jié)果
為驗證本算法實際檢測效果和識別率的提升,選取其中圖片進行檢測,檢測效果如圖7所示。

圖7 實際檢測效果對比
可以明顯看出,前兩種算法存在漏檢情況,準確率也不理想,本算法改善了漏檢情況,并獲得了較高的準確率。訓練出的模型在驗證集上達到了93.4%的準確率和90.7%的平均精度。
改進輕量級YOLOv5算法用于交通標志檢測,解決了算法模型權(quán)重大、對小目標檢測不準確等問題。在backbone結(jié)構(gòu)上添加ECA注意力模塊進行跨通道捕捉特征信息,提高了模型效率和計算效果,并且可以自適應(yīng)確定通道覆蓋范圍,改善了對小目標的檢測,提高了檢測準確率。通過比較精確率度、精度等評價指標,對改進算法的性能也進行了評價。改進后的算法在訓練階段準確率和平均精度有一定程度的提升,但是也存在不足,在后續(xù)研究中,應(yīng)該在實現(xiàn)模型輕量化、易部署的同時,進一步提高精度與準確率。