劉桐,周凱,李暉
(沈陽(yáng)工業(yè)大學(xué)信息科學(xué)與工程學(xué)院,沈陽(yáng) 110870)
隨著社會(huì)經(jīng)濟(jì)蓬勃,自動(dòng)駕駛、無(wú)人駕駛也逐步進(jìn)入大眾視線。作為這一領(lǐng)域的關(guān)鍵技術(shù),目標(biāo)檢測(cè)算法相繼出現(xiàn)。傳統(tǒng)的目標(biāo)檢測(cè)算法采取抽取候選區(qū)域后根據(jù)顏色和輪廓信息特點(diǎn)人工提取特征,常用的方法有RGB[1-2]、HSV[3]、Hough[4]變換等算法,之后通過(guò)分類器進(jìn)行分類,然而由于天氣條件的復(fù)雜,或是交通標(biāo)志被破壞、遮蓋等,常常導(dǎo)致檢測(cè)結(jié)果不準(zhǔn)確或漏檢。現(xiàn)有的基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法大致分為兩類,第一類是兩階段的R-CNN系列[5-6]目標(biāo)檢測(cè)算法,其主要提取候選框區(qū)域進(jìn)行分類,盡管檢測(cè)定位效果良好,但在實(shí)踐中即時(shí)性達(dá)不到要求;第二類是一階段目標(biāo)檢測(cè)算法:SSD[7]和YOLO[8-9]系列等,輸入圖片后直接在網(wǎng)絡(luò)中獲得位置和類別,大大降低了檢測(cè)過(guò)程中的重復(fù)運(yùn)算,加快了檢測(cè)速度。在速度和精準(zhǔn)方面YOLO系列算法超過(guò)其他一階段的檢測(cè)算法。
針對(duì)算法模型復(fù)雜度高且對(duì)小目標(biāo)檢測(cè)存在漏檢的現(xiàn)象,在此提出一個(gè)改進(jìn)YOLOv5算法用于檢測(cè)。在Backbone上增加ECA模型,以增強(qiáng)特征提取方法能力,改善檢查性能。
YOLOv5是一種一階段的目標(biāo)檢測(cè)算法,該算法在YOLOv4的基礎(chǔ)上進(jìn)行改進(jìn),提高了速度和精度。檢測(cè)具體過(guò)程是將整個(gè)圖像劃分S×S個(gè)網(wǎng)格,網(wǎng)格負(fù)責(zé)預(yù)測(cè)中心落在這個(gè)網(wǎng)格中的那個(gè)object,同時(shí)3個(gè)大小不一的先驗(yàn)框在網(wǎng)格中獲得,并對(duì)其進(jìn)行微細(xì)調(diào)整,形成最終的預(yù)測(cè)框。最后通過(guò)非極大值抑制算法(Non Max Suppression,NMS)選擇最佳的結(jié)果[10]。算法實(shí)現(xiàn)過(guò)程如圖1所示。
圖1 YOLO算法流程
YOLOv5算法最大特點(diǎn)是模型體積小,便于安放到移動(dòng)端設(shè)備。YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)包括4個(gè)部分,依次是:
Input:對(duì)輸入的圖像進(jìn)行Mosaic數(shù)據(jù)增強(qiáng)。任意抓取4張圖片,任意調(diào)整尺寸,再隨機(jī)放置進(jìn)行拼湊,以此擴(kuò)大數(shù)據(jù)集,特別是隨機(jī)縮放增加了很多小的目標(biāo)對(duì)象,讓網(wǎng)絡(luò)更穩(wěn)定,還可以減少GPU使用。對(duì)尺寸不一的圖片能進(jìn)行自適應(yīng)調(diào)節(jié),調(diào)節(jié)到一個(gè)標(biāo)準(zhǔn)大小,再進(jìn)行檢測(cè)。
Backbone:首先對(duì)圖片進(jìn)行切片操作,相當(dāng)于下采樣兩倍,數(shù)量擴(kuò)為原來(lái)的四倍,以減少浮點(diǎn)運(yùn)算量。經(jīng)過(guò)6層網(wǎng)絡(luò)結(jié)構(gòu),進(jìn)行圖像特征的提取。仿效CSPNet的設(shè)計(jì)思路[11],在backbone中設(shè)計(jì)兩種CSP結(jié)構(gòu),分別應(yīng)用于backbone和neck層,增加網(wǎng)絡(luò)的特征提取能力,降低計(jì)算瓶頸和內(nèi)存成本。
Neck:采用FPN+PAN的結(jié)構(gòu),結(jié)合淺層的語(yǔ)義表達(dá)和深層的語(yǔ)義表達(dá),采用CSP2結(jié)構(gòu)進(jìn)行跨階段局部設(shè)計(jì),增強(qiáng)了網(wǎng)絡(luò)特征提取能力。
Output:使用不同尺寸的先驗(yàn)框進(jìn)行預(yù)測(cè)和分類,輸出3種標(biāo)準(zhǔn)的特征圖,根據(jù)損失函數(shù)反向傳播并且不斷優(yōu)化。最后使用NMS消除多余預(yù)測(cè)框。
由于交通標(biāo)志屬于小目標(biāo),容易造成漏檢情況,針對(duì)此情況,為了提高卷積層的特征提取能力,采取在backbone上添加ECA(高效通道注意模塊)的方式。由于YOLOv5是輕量級(jí)的模型,所以在加入注意力機(jī)制模塊時(shí)要考慮在提高性能的同時(shí)不會(huì)增加模型的復(fù)雜度。
作為注意力模塊,ECA模塊使用參數(shù)較少,這減少了數(shù)據(jù)減消,并有效捕捉了跨通道交流,從而產(chǎn)生顯著的性能改善[12]。ECA模塊結(jié)構(gòu)如圖2所示。在維持維度的情形下使用全局平均池化方法獲得了一個(gè)1×1×C的向量;跨信道之間的信息交換用一維卷積1D-Conv來(lái)實(shí)現(xiàn)。其內(nèi)核大小k表示了本地跨信道信息交互的能力,表示多少個(gè)隔鄰進(jìn)行一個(gè)信道的注意力預(yù)測(cè),這一設(shè)置提高了模型的質(zhì)量與計(jì)算效果。
圖2 ECA模塊結(jié)構(gòu)圖
通過(guò)學(xué)習(xí)得到的通道注意力由下式表示:
Wk關(guān)涉k×C個(gè)參數(shù),并且防止了不同組的完全獨(dú)立,在此只考慮權(quán)重yi和它的k個(gè)隔鄰之間的信息共享,計(jì)算公式如下:
讓所有的通道分享權(quán)重相關(guān)信息進(jìn)一步提升性能,即:
通過(guò)卷積核大小為k的一維卷積來(lái)實(shí)現(xiàn)通道之間的信息共享,即有:
式中,C1D代表一維卷積,它關(guān)涉k個(gè)參數(shù)信息。ECA模塊為了適當(dāng)抓取局部跨道信息共享,確定好通道共享信息的大致范圍(即1D卷積的卷積核大小k),采用自適應(yīng)確定k的方法,其中自適應(yīng)卷積核大小k的計(jì)算公式為:
式中,γ=2,b=1。
改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)輸出如圖3所示。
圖3 改進(jìn)網(wǎng)絡(luò)YOLOv5+ECA結(jié)構(gòu)圖
選用清華大學(xué)和騰訊實(shí)驗(yàn)室聯(lián)合采集制作的數(shù)據(jù)TT100K(Tsinghua-Tencent 100k)。其涵蓋3萬(wàn)多個(gè)交通標(biāo)志實(shí)例近9000幅圖片,包括了不同自然場(chǎng)景下日常生活中所見(jiàn)的標(biāo)志圖片,數(shù)據(jù)豐富,具有多元化,示例如圖4所示。
圖4 交通標(biāo)志示例
TT100K圖片采取的像素大小為2048×2048,背景復(fù)雜,對(duì)于檢測(cè)存在干擾,另外其類別繁雜,樣本數(shù)量不均衡,有的類別甚至空缺,給檢測(cè)帶來(lái)了很大難度。針對(duì)這一情況,運(yùn)行腳本過(guò)濾數(shù)據(jù)集,將其中標(biāo)志信息樣本數(shù)量大于100的分離出來(lái),制成含45類的交通標(biāo)志集,并且按照7:3比例劃分成訓(xùn)練集和驗(yàn)證集。數(shù)量統(tǒng)計(jì)及劃分如圖5所示。
圖5 數(shù)據(jù)集數(shù)量分布及劃分
實(shí)驗(yàn)基于Windows操作系統(tǒng)Python 3.8編程語(yǔ)言實(shí)現(xiàn)。選用Pytorch1.7.1深度學(xué)習(xí)框架搭建網(wǎng)絡(luò)模型。實(shí)驗(yàn)數(shù)據(jù)設(shè)置300個(gè)epochs進(jìn)行訓(xùn)練;batchsize設(shè)置為48;輸入圖像尺寸為640×640;初始的學(xué)習(xí)率設(shè)置為0.01;momentum設(shè)置為0.937;權(quán)重衰減系數(shù)設(shè)為0.0005。
選取準(zhǔn)確率(Precision)、召回率(Recall)、平均精度均值(mAP)和權(quán)重模型(weights)作為評(píng)估指標(biāo),評(píng)估算法對(duì)交通標(biāo)志的檢測(cè)性能。通過(guò)與其他模型對(duì)比,驗(yàn)證本文算法的有效性。對(duì)比實(shí)驗(yàn)結(jié)果如表1所示。
表1 檢測(cè)算法性能對(duì)比
由表1可以看出,改進(jìn)算法在檢測(cè)交通標(biāo)志上優(yōu)于原YOLOv5算法,分別在準(zhǔn)確率和平均精度上提高了2.4%和0.4%;其訓(xùn)練出的權(quán)重14.6 MB,方便部署于移動(dòng)端檢測(cè)。與YOLOv3相比,由于模型參數(shù)過(guò)大,導(dǎo)致平均精度訓(xùn)練不是很好。綜上所述,本算法在檢測(cè)交通標(biāo)志上有一定的改善。
對(duì)比實(shí)驗(yàn)結(jié)果如圖6所示。可見(jiàn),加入ECA模塊后,準(zhǔn)確率在訓(xùn)練了100次之后走向平緩,沒(méi)有原YOLOv5訓(xùn)練的變化幅度大,穩(wěn)定性較好;在mAP訓(xùn)練上本方法更加穩(wěn)定,而且比YOLOv5訓(xùn)練精度要好,收斂更早。
圖6 準(zhǔn)確率對(duì)比結(jié)果
為驗(yàn)證本算法實(shí)際檢測(cè)效果和識(shí)別率的提升,選取其中圖片進(jìn)行檢測(cè),檢測(cè)效果如圖7所示。
圖7 實(shí)際檢測(cè)效果對(duì)比
可以明顯看出,前兩種算法存在漏檢情況,準(zhǔn)確率也不理想,本算法改善了漏檢情況,并獲得了較高的準(zhǔn)確率。訓(xùn)練出的模型在驗(yàn)證集上達(dá)到了93.4%的準(zhǔn)確率和90.7%的平均精度。
改進(jìn)輕量級(jí)YOLOv5算法用于交通標(biāo)志檢測(cè),解決了算法模型權(quán)重大、對(duì)小目標(biāo)檢測(cè)不準(zhǔn)確等問(wèn)題。在backbone結(jié)構(gòu)上添加ECA注意力模塊進(jìn)行跨通道捕捉特征信息,提高了模型效率和計(jì)算效果,并且可以自適應(yīng)確定通道覆蓋范圍,改善了對(duì)小目標(biāo)的檢測(cè),提高了檢測(cè)準(zhǔn)確率。通過(guò)比較精確率度、精度等評(píng)價(jià)指標(biāo),對(duì)改進(jìn)算法的性能也進(jìn)行了評(píng)價(jià)。改進(jìn)后的算法在訓(xùn)練階段準(zhǔn)確率和平均精度有一定程度的提升,但是也存在不足,在后續(xù)研究中,應(yīng)該在實(shí)現(xiàn)模型輕量化、易部署的同時(shí),進(jìn)一步提高精度與準(zhǔn)確率。