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