王 林,張文卓
(西安理工大學(xué) 自動化與信息工程學(xué)院,西安 710048)
目標(biāo)檢測作為計算機(jī)視覺領(lǐng)域的重要課題之一而備受關(guān)注。某種意義上來說,它的發(fā)展史也是計算機(jī)視覺發(fā)展史的縮影。交通標(biāo)志檢測技術(shù)是自動駕駛領(lǐng)域的關(guān)鍵技術(shù)之一,被廣泛地應(yīng)用于汽車輔助駕駛系統(tǒng)以及數(shù)據(jù)地圖當(dāng)中。因此,交通標(biāo)志檢測具有極高的研究意義和應(yīng)用價值。
傳統(tǒng)的交通標(biāo)志檢測方法以基于顏色[1]或者基于形狀[2]為代表,但當(dāng)面臨光照變化、形變以及遮擋等問題時,檢測效果欠佳。卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural network)的出現(xiàn)使得目標(biāo)檢測得以迅速發(fā)展,文獻(xiàn)[3]提出了R-CNN模型,為交通標(biāo)志檢測開辟了新的思路,隨后在此基礎(chǔ)上又提出了Fast R-CNN[4]和Faster R-CNN[5],這些方法被稱為兩階段目標(biāo)檢測。雖然兩階段目標(biāo)檢測方法檢測精度比較高但是實(shí)時性卻比較差,針對這一問題文獻(xiàn)[6]提出YOLOv1模型,這是一個端到端的模型,因此被稱為一階段目標(biāo)檢測方法,同時被稱為一階段目標(biāo)檢測的還有YOLOv2[7]、YOLOv3[8]、SSD[9]、DSSD[10]以及FCOS[11]等相關(guān)方法。近年來文獻(xiàn)[12]提出一種基于CNN的模型,該模型采用多尺度滑動窗口策略的同時利用擴(kuò)張卷積代替原卷積,取得了不錯的檢測效果。文獻(xiàn)[13]按照并行檢測原理,結(jié)合目標(biāo)傳感器與神經(jīng)型卷積分類器,提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的行人目標(biāo)檢測系統(tǒng)。Zhu[14]等人提出一種端到端基于CNN的網(wǎng)絡(luò),可同時進(jìn)行目標(biāo)的檢測和分類任務(wù)。
雖然現(xiàn)有的檢測方法在交通標(biāo)志檢測上取得了不錯的成績,但小目標(biāo)檢測仍然沒有達(dá)到預(yù)期效果。首先,現(xiàn)有的目標(biāo)檢測網(wǎng)絡(luò)是以檢測大目標(biāo)為主導(dǎo),這是小目標(biāo)檢測效果不佳的客觀原因;其次,小目標(biāo)在原圖中尺寸較小且數(shù)量也比較少,而現(xiàn)有優(yōu)秀的檢測模型所使用的骨干網(wǎng)絡(luò)都有下采樣層,通過下采樣層后小目標(biāo)的像素達(dá)到了個位數(shù),導(dǎo)致檢測效果不佳。因此本文對檢測網(wǎng)絡(luò)進(jìn)行改進(jìn),以優(yōu)化模型在交通標(biāo)志檢測中存在小目標(biāo)檢測精度不高、漏檢以及誤檢等問題。
YOLO家族的網(wǎng)絡(luò)雖然不是精度最好的網(wǎng)絡(luò),但在精確度與速度之間達(dá)到了理想的平衡。YOLOv3借鑒了YOLOv1和YOLOv2,雖然沒有太多的創(chuàng)新點(diǎn),但在保持YOLO家族速度的優(yōu)勢的同時,提升了檢測的精度,尤其對于小物體的檢測能力,這對于交通標(biāo)志檢測來說是十分友好的。
YOLOv3使用Darknet-53作為骨干網(wǎng)絡(luò),相對于Res-Net[15]網(wǎng)絡(luò)而言,使用卷積層替代池化層進(jìn)行降采樣操作,這樣可以有效地減少淺層特征的丟失。如圖1所示Darknet-53包含53個卷積層,DBL(Convolutional)單元包含了卷積層、批歸一化[16](BN,batch normalization)和Leaky Relu激活函數(shù),Residual模塊由兩個DBL單元進(jìn)行殘差操作,通過引入BN層和Residual模塊,可以加快網(wǎng)絡(luò)的收斂,同時防止隨著網(wǎng)絡(luò)層數(shù)的增加而出現(xiàn)的梯度爆炸、消失以及網(wǎng)絡(luò)退化等問題。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3在網(wǎng)絡(luò)中借鑒了基于多尺度預(yù)測的特征金字塔結(jié)構(gòu),用多尺度對不同大小的目標(biāo)進(jìn)行檢測,不同的是,沒有采取對位相加的操作而是沿著通道進(jìn)行拼接操作。首先輸入大小為512×512的圖像,通過DarkNet-53后得到32倍下采樣的特征圖,經(jīng)相關(guān)卷積操作得到尺寸大小為16×16的特征圖Y1;其次將32倍下采樣獲得的特征圖,經(jīng)卷積操作后進(jìn)行兩倍上采樣,與從DarkNet-53中獲取輸出尺寸大小相同的特征映射沿通道進(jìn)行拼接,經(jīng)相關(guān)卷積操作后得大小為32×32的特征圖Y2;最后同理Y2,獲得大小為64×64的特征圖Y3。YOLOv3共輸出3個不同尺寸的特征圖Y1、Y2以及Y3,其中Y1進(jìn)行大目標(biāo)預(yù)測,Y2進(jìn)行中型目標(biāo)預(yù)測,Y3進(jìn)行小目標(biāo)預(yù)測。3個特征圖分別的通道數(shù)為所用數(shù)據(jù)集類別數(shù)(num_classes)加5之后與錨框數(shù)量(num_anchor)的乘積,5為置信度、大小和尺寸5個信息。
錨框(Anchor box)是邊界框的先驗(yàn),是基于數(shù)據(jù)集通過聚類預(yù)測得到。先驗(yàn)錨框的寬和高為(Pw,Ph),中心點(diǎn)為對應(yīng)網(wǎng)格的左上角(cx,cy),通過YOLOv3模型預(yù)測得出(tx,ty,tw,th)和置信度5個值,tx,ty,tw,th分別為預(yù)測框的中心點(diǎn)坐標(biāo)和尺寸,通過以上數(shù)據(jù)進(jìn)行微調(diào),計算公式如下:
bx=δ(tx)+cx
(1)
by=δ(ty)+cy
(2)
bw=pwetw
(3)
bh=pheth
(4)
其中:bx、by、bw、bh為調(diào)整后的錨框中心坐標(biāo)和尺度大小,δ為sigmoid函數(shù),使用sigmoid函數(shù)可以有效解決預(yù)測框可能會出現(xiàn)在圖上任意位置這一現(xiàn)象,從而限制坐標(biāo)位置,使得網(wǎng)絡(luò)更加容易學(xué)習(xí)。
YOLOv3的損失函數(shù)由置信度損失、分類損失和定位損失這三部分組成,計算公式如下:
L(o,c,O,C,l,g)=λ1Lconf(o,c)+λ2Lcla(O,C)+
λ3Lloc(l,g)
(5)
(6)
(7)
(8)
(9)
YOLOv3是目前應(yīng)用最廣泛的目標(biāo)檢測算法之一,具有較好的檢測速度和精度,但直接應(yīng)用到交通標(biāo)志檢測任務(wù)當(dāng)中還存在一些不足。
SE-Net(Squeeze-and-Excitation Networks)通道注意力機(jī)制,因其復(fù)雜度低、新增參數(shù)較少以及計算量小,被廣泛應(yīng)用在各個模型當(dāng)中[17]。核心思想是增強(qiáng)有用信息的通道,抑制信息較少的通道。SE模塊通過兩個全連接層降維操作來減少模型復(fù)雜度。但是,降維會對通道的預(yù)測產(chǎn)生副作用,得到的通道間的相關(guān)性也是低效且不必要的。同時,大量使用SE模塊也會很大程度上影響網(wǎng)絡(luò)的實(shí)時性。
2020年,(ECA-Net,efficient channel attention networks)提出一種無降維的局部跨通道策略,通過考慮每個信道及其k個相鄰信道捕獲局部跨信道交互,在保證實(shí)時性的同時也保證了準(zhǔn)確性[18]。但對于大目標(biāo)物體來說,取特征通道的全局平均值能夠很好的反應(yīng)特征通道的響應(yīng)情況。不過對于交通標(biāo)志檢測來說,交通標(biāo)志一般只占圖片很小的區(qū)域,在剩下的區(qū)域當(dāng)中會存在許多無關(guān)的背景信息,這些信息雖然單個響應(yīng)不大,但是總的信息響應(yīng)還是不能忽略。因此,對通道進(jìn)行全局平均,并不能充分代表通道的信息響應(yīng),也應(yīng)當(dāng)考慮通道的極值響應(yīng)。本文針對上述情況對ECA-net進(jìn)行的改進(jìn)如圖2所示。
圖2 ECA-A模塊結(jié)構(gòu)
(10)
自適應(yīng)k相鄰一維卷積的使用即避免降維帶來的低效性,也有效地捕捉跨信道交互信息。與SE網(wǎng)絡(luò)相比參數(shù)也大大減少,保證了網(wǎng)絡(luò)的實(shí)時性。將ECA-A模塊加入到原DarkNet-53中的殘差單元結(jié)構(gòu)當(dāng)中,更改后的殘差模塊如圖3所示。
圖3 改后的殘差單元結(jié)構(gòu)
空間金字塔池化(SPP,spatial pyramid pooling)[19]是何凱明等人提出的一種多尺度特征融合模型。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)只能接受以固定的尺寸作為輸入,所以經(jīng)常會對輸入圖片進(jìn)行裁剪以及縮放等操作,以此來滿足輸入的要求,但這些操作會導(dǎo)致信息的丟失以及圖像的失真,從而導(dǎo)致檢測效果不佳。如圖4所示,本文引入SPP模塊以YOLOv3框架為基礎(chǔ),在DarkNet-53后面的第三至第四個DBL單元之間加入SPP模塊,SPP模塊是由4個分支構(gòu)成,分別由步距為1尺寸大小為5×5、9×9、13×13的最大池化操作和一個跳躍連接,隨后將4個分支進(jìn)行拼接。這樣可以獲取多尺度局部特征信息,將其融入到后續(xù)的全局特征當(dāng)中,從而得到更加豐富的特征表示,最終提高檢測精度。
圖4 SPP模塊結(jié)構(gòu)
對于目標(biāo)檢測而言,待檢測目標(biāo)不可能單獨(dú)存在,它一定會和周圍的其他目標(biāo)或多或少存在某種關(guān)系,這就是通常所說的上下文信息。如何挖掘它們之間的關(guān)系,利用這個關(guān)系來增強(qiáng)特征的表示是上下文信息的核心問題。
對于交通標(biāo)志檢測而言,大部分的交通標(biāo)志都懸掛在交通標(biāo)志桿上,交通標(biāo)志桿就是交通標(biāo)志的上下文信息。因此,學(xué)習(xí)交通標(biāo)志桿與交通標(biāo)志之間的潛在關(guān)系是十分重要的。YOLOv3原有的Y3特征圖包含了兩個拼接,但都是深層特征,缺乏淺層特征表示。為此本文在原來的基礎(chǔ)上,從DarkNet-53中獲取輸出尺寸大小為128×128的特征映射,經(jīng)過大小為3×3步距為2的最大池化操作后得到64×64的特征圖,將得到的3個尺寸相等的特征圖進(jìn)行拼接,經(jīng)相關(guān)卷積操作后得到新的Y-3特征圖。選擇最大池化操作是因?yàn)榻煌?biāo)志桿和周圍的顏色區(qū)別很大,最大池化后能選取到更多信息。整體更改后的網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。相當(dāng)于拼接處共拼接3個特征圖,包含了最深層的特征信息、中層特征信息以及相對淺層的信息,這樣既能獲得更細(xì)粒度的信息,也能獲得更加豐富的上下文信息。
圖5 更改后的網(wǎng)絡(luò)結(jié)構(gòu)
本文實(shí)驗(yàn)所使用的環(huán)境配置為Windows 10、CUD(Compute Unified Device Architecture)10.0、CUDNN(CUDA Deep Neural Network library)7.0。硬件配置為 Intel-CPU-i5-10400F 處理器,顯卡為 Nvidia Ge Force GTX 1070Ti,調(diào)用GPU進(jìn)行加速訓(xùn)練。
本文采用TT100K數(shù)據(jù)集[20],該數(shù)據(jù)集是由清華和騰訊聯(lián)合打造。包含了中國各大城市的實(shí)景街拍交通標(biāo)志圖像。其中,交通標(biāo)志共有150多種,本文選取實(shí)例數(shù)大于50的48個類別作為使用的類別,經(jīng)刪減和數(shù)據(jù)增強(qiáng)后,共得到15 800張圖片,訓(xùn)練使用10 400張圖片,測試使用5 400張圖片。
Anchor值的設(shè)定對最終的檢測性能至關(guān)重要,針對不同的數(shù)據(jù)集應(yīng)當(dāng)設(shè)定不同的Anchor值。合適的Anchor值能加快網(wǎng)絡(luò)的收斂速度、降低誤差。通過對TT00K數(shù)據(jù)集尺寸進(jìn)行統(tǒng)計,發(fā)現(xiàn)55%左右的目標(biāo)像素小于45像素×45像素,因此存在大量的目標(biāo)相對尺寸較小的情況。使用K-means算法對參數(shù)進(jìn)行重新選擇,更改后的參數(shù)對比如表1所示。從表中可以看出修改后的Anchor大小比原來縮小了很多,這也符合TT100K數(shù)據(jù)集中的目標(biāo)相對尺寸比較小這一情況。
表1 Anchor值重定
實(shí)驗(yàn)指標(biāo)采用平均精度均值(MAP,mean average precision)、小目標(biāo)精度均值(AP-s,small object of average precision)、中型目標(biāo)精度均值(Medium Object of Average Precision,AP-m)、大目標(biāo)精度均值(AP-l,large object of average precision)以及畫面每秒傳輸幀數(shù)(FPS,frame per second)。其中,MAP的數(shù)值越高表明模型的性能越好,F(xiàn)PS的數(shù)值越大表明模型的實(shí)時性就越好。在訓(xùn)練階段,本文以YOLOv3作為基礎(chǔ)框架,每種實(shí)驗(yàn)都進(jìn)行100個epochs,初始學(xué)習(xí)率為0.001,動量和衰減分別設(shè)置為0.9和0.000 5,批處理數(shù)BatchSize設(shè)置為16。
本文首先基于YOLOv3對所提出的改進(jìn)通道注意力機(jī)制壓縮方式進(jìn)行試驗(yàn),找出最佳的α和β參數(shù)(α+β=1),實(shí)驗(yàn)結(jié)果如圖6所示。結(jié)果表明在TT100K數(shù)據(jù)集中取α=0.6和β=0.4時模型的MAP達(dá)到最佳。后續(xù)實(shí)驗(yàn)的ECA-A模塊都取α=0.6和β=0.4。
圖6 參數(shù)選擇
隨后對于特征壓縮方法的選擇,在相同的實(shí)驗(yàn)環(huán)境下,本文所采用的方法與GMaxPool、GAvgPool以及GMaxPool和GAvgPool沿通道維度拼接這3個壓縮方法進(jìn)行對比,得到的MAP結(jié)果對比結(jié)果如表2所示。表明取α=0.6和β=0.4時的GMaxPool與GAvgPool沿通道相加的壓縮方法性能最佳。
表2 各壓縮方法對比結(jié)果
TT100K數(shù)據(jù)集相比于其他交通標(biāo)志數(shù)據(jù)集來說,目標(biāo)尺寸更小且圖像分辨率更高,以YOLOv3為基礎(chǔ)架構(gòu)使用消融實(shí)驗(yàn)來驗(yàn)證改進(jìn)與添加模塊的有效性。評價指標(biāo)分別采用IOU取值為0.5時的AP-s、AP-m、AP-l以及MAP,實(shí)驗(yàn)后的結(jié)果如表3所示。實(shí)驗(yàn)結(jié)果表明,單個模塊中ECA-A對整體檢測準(zhǔn)確度的影響最大MAP提升了2.2%;SPP對整體都有提升;新的Y3特征圖對小目標(biāo)提升最大,提升了2.61%。YOLOv3在將3個改動全部添加后達(dá)到了最佳檢測性能,MAP提升3.03%、AP-s提升4.59%、AP-m提升2.66%以及AP-l提升2.26%,可以看出整個改進(jìn)后小目標(biāo)檢測的精度要優(yōu)于單個改進(jìn)后的精度。而后續(xù)的實(shí)驗(yàn)則使用改進(jìn)后的網(wǎng)絡(luò)。
表3 消融實(shí)驗(yàn)數(shù)據(jù)
將改進(jìn)后的網(wǎng)絡(luò)與其他主流方法進(jìn)行實(shí)驗(yàn)比對,包括Faster R-CNN、SSD以及YOLOv3。取IOU值為0.5和0.75時的MAP和FPS作為評價指標(biāo)。其中IOU為0.5時和IOU為0.75時的MAP分別為對檢測能力和定位精度的有效評估指標(biāo)。
從表4可以看出,當(dāng)IOU取值為0.5時,改進(jìn)后的YOLOv3的MAP值比第二的Faster R-CNN高出0.64%;當(dāng)IOU取值為0.75時,改進(jìn)后的YOLOv3的MAP值達(dá)到最佳,比第二的Faster R-CNN高出1.45%;在FPS指標(biāo)上,改進(jìn)后的YOLOv3只比最佳的YOLOv3每秒差5張圖片,但高出YOLOv3-SE每秒11張圖片??梢钥闯龈倪M(jìn)后的網(wǎng)絡(luò)在模型性能、定位精度以及實(shí)時性方面都表現(xiàn)很好。
表4 4種檢測網(wǎng)絡(luò)對比
最后,為了進(jìn)一步驗(yàn)證改進(jìn)后的網(wǎng)絡(luò)的模型性能,本文從數(shù)據(jù)集中選出三張圖片進(jìn)行測試,結(jié)果如圖7所示,其中(a1)、(a2)、(a3)為YOLOv3網(wǎng)絡(luò)的檢測結(jié)果,(b1)、(b2)、(b3)為改進(jìn)后網(wǎng)絡(luò)的檢測結(jié)果。
圖7 實(shí)驗(yàn)測試結(jié)果
首先對比(a1)和(b1)的結(jié)果可以看出,兩個都將目標(biāo)完全地檢測出來,(b1)在形變的交通標(biāo)志上的預(yù)測框覆蓋區(qū)域要優(yōu)于(a1)的預(yù)測框;其次在(a2)與(b2)的結(jié)果上來看,(b2)檢測出來而(a2)出現(xiàn)了漏檢,這是由于這張圖像上的目標(biāo)與周邊的環(huán)境相似,而改進(jìn)后的網(wǎng)絡(luò)豐富了上下文信息利用了交通標(biāo)志桿這個信息,從而避免了這次漏檢;最后對比了(a3)和(b3),(a3)出現(xiàn)了兩個漏檢(b3)出現(xiàn)了一個漏檢,第三張圖片的4個標(biāo)志全都是像素小于10*10的,圖中右邊的兩個目標(biāo)邊上的背景非常復(fù)雜,這也是YOLOv3都漏檢的原因,而改進(jìn)后的網(wǎng)絡(luò)檢測沒有檢測出“禁止鳴笛”的交通標(biāo)志,原因可能是目標(biāo)太小以及和周邊背景顏色相近。綜合來看,改進(jìn)后的網(wǎng)絡(luò)在小目標(biāo)檢測以及漏檢方面要優(yōu)于原YOLOv3。
本文主要介紹了改進(jìn)后的交通標(biāo)志網(wǎng)絡(luò),針對在目前檢測算法中存在小目標(biāo)檢測精度不高、漏檢及誤檢等問題,改進(jìn)了ECA的壓縮方式,將改進(jìn)后的ECA-A加入到骨干網(wǎng)絡(luò)DarkNet-53當(dāng)中的殘差模塊,對通道進(jìn)行重新標(biāo)定,增強(qiáng)重要的通道抑制信息量較少的通道,顯著地提高算法的檢測性能;引入金字塔池化模塊,以增強(qiáng)最終檢測精度;重新拼接后的特征圖包含了最深層的特征信息、中層特征信息以及相對淺層的信息,這樣既能獲得更細(xì)粒度的信息,也能獲得更加豐富的上下文信息。實(shí)驗(yàn)表明改進(jìn)后的網(wǎng)絡(luò)在小目標(biāo)檢測、整體性能、定位精度以及實(shí)時性上的有效性。