蔡 軍,邱會然,譚 靜,楊平安
(重慶郵電大學(xué) 自動化學(xué)院,重慶 400065)
交通標(biāo)志檢測與識別技術(shù)是自動駕駛系統(tǒng)的重點研究方向之一,對保障交通順暢和駕駛安全起著至關(guān)重要的作用。盡管交通標(biāo)志識別已經(jīng)取得了一些可喜的成果,但在實際交通場景中快速有效地檢測出小型交通標(biāo)志仍存在許多問題:① 交通標(biāo)志距離較遠(yuǎn)所占圖像的比例較小,特征不明顯[1];② 受環(huán)境影響較大[2]。
目前針對交通標(biāo)志檢測的方法研究主要分為兩大類:基于傳統(tǒng)手工特征的方法和基于深度學(xué)習(xí)的方法。基于傳統(tǒng)手工特征的方法主要有基于顏色[3]特征的方法、基于形狀[4]特征的方法以及多特征融合[5]的方法。傳統(tǒng)的方法實時性好、魯棒性強,但容易受到環(huán)境、光照的影響,并且人為設(shè)計的特征不具備良好的表達(dá)能力,對于小型交通標(biāo)志中的細(xì)微差別沒有足夠的前述特征來表示,使得傳統(tǒng)算法往往不能滿足實際需要。因此,隨著計算機視覺的快速發(fā)展,基于深度學(xué)習(xí)的交通標(biāo)志檢測方法應(yīng)運而生。
基于深度學(xué)習(xí)的交通標(biāo)志檢測方法可分為兩類:一類是Two-Stage檢測方法,代表算法有Faster-RCNN[6-7]、SNIPER[8]、DetNet[9]等。此類算法使用候選區(qū)域網(wǎng)絡(luò)在特征層上生成候選框,再利用候選框中的卷積特征信息進(jìn)行分類和目標(biāo)框定位,雖然精度相對較高,但由于計算量過大,速度較慢;另一類是One-Stage檢測方法,代表算法有SSD[10-11]、YOLO[12-13]、FCOS[14]等。此類算法將目標(biāo)框的定位回歸和分類回歸同時進(jìn)行,最后由卷積神經(jīng)網(wǎng)絡(luò)在輸出層上一次性完成預(yù)測,雖然檢測速度較快,但因為少了一次目標(biāo)框的回歸,對交通標(biāo)志的定位準(zhǔn)確度較差。
基于以上研究,本文針對自然場景下交通標(biāo)志檢測漏檢和虛警問題,提出了一種提高檢測精度的多尺度上下文融合的網(wǎng)絡(luò)結(jié)構(gòu),本文算法以YOLOv3算法框架為基礎(chǔ)進(jìn)行改進(jìn)。改進(jìn)思路如下:① 將特征金字塔[15]的深層特征信息融合進(jìn)更淺層特征層,更好地利用目標(biāo)的細(xì)節(jié)信息;② 通過上下文模塊(Global Context Block,GCB)[16]重新分配交通標(biāo)志特征圖的上下文信息權(quán)重,使注意力特征映射轉(zhuǎn)移到更深層的網(wǎng)絡(luò)中,增強目標(biāo)特征信息的表達(dá)能力;③ 為了降低圖像背景與目標(biāo)比例嚴(yán)重失衡對檢測精度所造成的影響,使用融合預(yù)測目標(biāo)置信度的網(wǎng)絡(luò)損失函數(shù)進(jìn)行端到端的訓(xùn)練,改善交通標(biāo)志邊界框的回歸置信度,避免算法由于梯度消失而出現(xiàn)學(xué)習(xí)速率下降的問題。
YOLOv3借鑒Resnet的殘差結(jié)構(gòu)思想,設(shè)計了Darknet53作為特征提取的骨干網(wǎng)絡(luò),如圖1所示。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Schematic diagram of YOLOv3 network structure
圖1中DBL表示為卷積層、Batch Normalization(BN)層和激活層的組合;Res為殘差結(jié)構(gòu),殘差結(jié)構(gòu)的數(shù)值表示殘差個數(shù);上采樣使用2倍上采樣的方式擴(kuò)大特征尺寸;Concat操作為通道的拼接。
Darknet53通過多個卷積疊加形成深層次卷積層。在不同卷積層上分別采用1×,2×,8×,8×,4×多個類的殘差結(jié)構(gòu),保證Darknet53在較深的情況下,仍能快速收斂。同時采用多尺度預(yù)測的方法,在3個不同尺度的特征圖上使用3個不同大小的目標(biāo)檢測框進(jìn)行識別。
YOLOv3算法在目標(biāo)識別時,各個卷積層輸出的特征圖所包含的信息不同,淺層特征圖包含大量目標(biāo)紋理信息和邊界信息,如圖2所示。隨著網(wǎng)絡(luò)的加深,特征圖所包含的語義信息增多,但細(xì)節(jié)信息減少,即越淺層的特征圖所包含的目標(biāo)輪廓、形狀等表觀信息越多;越深層的特征圖所包含的語義信息越多。因此可以將淺層的細(xì)節(jié)信息與深層的高級語義信息結(jié)合,提升小型交通標(biāo)志的檢測精度。
(a) Res1特征圖
YOLOv3損失函數(shù)(Loss)分為3部分:定位損失(Lloc)、置信度損失(Lconf)和分類損失(Lcls),其中定位損失采用平方差損失函數(shù)計算真實框和預(yù)測框之間的誤差;置信度損失和分類損失采用交叉熵?fù)p失函數(shù)計算分類正確的概率,具體公式如下:
(wt-wp)2+(ht-hp)2],
(1)
(2)
ln(1-pp)],
(3)
Loss=Lloc+Lconf+Lcls,
(4)
在YOLOv3網(wǎng)絡(luò)中,小尺度預(yù)測的輸出尺度為13×13,以TT100K數(shù)據(jù)集中的2048 pixel×2048 pixel的圖片為例,當(dāng)圖像被下采樣至13×13時,圖像中尺寸小于158×158的目標(biāo)被壓縮至小于一個像素,而數(shù)據(jù)集中的大部分交通標(biāo)志小于158×158,因此,YOLOv3網(wǎng)絡(luò)中的小尺度預(yù)測對交通標(biāo)志檢測的意義不明顯。
基于上述原因,為了充分利用網(wǎng)絡(luò)中淺層特征包含的細(xì)節(jié)特征信息,將特征金字塔結(jié)構(gòu)中尺度為13×13的預(yù)測特征層去除,使用Darknet-53中第二次下采樣的特征圖與第三尺度上采樣的融合特征圖堆疊融合,充分還原淺層特征圖的細(xì)節(jié)特征信息,得到具有豐富特征信息的高分辨率融合特征圖,輸入到尺度為104×104檢測層中進(jìn)行預(yù)測,有助于提高檢測的精確度,改進(jìn)特征金字塔結(jié)構(gòu)如圖3所示。
圖3 改進(jìn)特征金字塔結(jié)構(gòu)Fig.3 Improved feature pyramid structure diagram
圖3中,通過卷積核大小為1×1的卷積操作將第三尺度256的卷積深度降低為128,以保證與第二次下采樣的深度對齊,然后設(shè)定空間上采樣因子為2,完成52×52深層特征往104×104淺層特征的分辨率特征映射。最后通過融合堆疊的方法將上采樣映射與第二次下采樣映射在深度方向拼接,由于要減少上采樣映射的堆疊影響,在拼接后添加了4個1×1的卷積和3個3×3的卷積來生成最終特征圖。
GCnet是繼NLnet[17]和SEnet[18]后的又一注意力機制結(jié)構(gòu),即能像NLnet一樣有效地對全局上下文建模,又能夠像SEnet一樣輕量。GCnet通過學(xué)習(xí)的方式獲取特征空間和通道的重要程度,根據(jù)重要程度分配不同的權(quán)重,使有用的特征權(quán)重系數(shù)大,無效或效果較小的特征權(quán)重系數(shù)小,提升網(wǎng)絡(luò)在復(fù)雜環(huán)境中的小目標(biāo)檢測能力,GCnet模塊的結(jié)構(gòu)如圖4所示。
圖4 上下文模塊結(jié)構(gòu)Fig.4 Global context module structure
圖4中,C×H×W分別表示通道、輸入特征的高度和寬度;Conv表示卷積層;LN表示歸一化層;ReLU表示修正線性激活函數(shù)。
在序列變換中,一組映射到輸出的特征通過注意力機制的全局依賴性連接到輸入序列。當(dāng)注意機制用于圖像識別時,注意力機制模塊處理的信息被包含在一個序列式中:
x=(x1,x2,…,xn),xn∈RD,
(5)
式中,n為特征向量個數(shù);D為維度。
上下文模塊如下:
(6)
Y=wv2ReLU(LN(wv1F)),
(7)
Zi=x+Y,
(8)
式中,F(xiàn)為Softmax函數(shù)產(chǎn)生的全局注意力權(quán)值;Y為瓶頸變換結(jié)果;Np表示輸入特征映射的維數(shù)。為了進(jìn)一步突出空間信息,在不考慮其他通道信息的情況下,壓縮全局注意力池的通道維數(shù)。GCB采用1×1卷積wk和Softmax函數(shù)來生成注意權(quán)值,獲得全局上下文特征??臻g中每個像素點的重要性被視為一個概率,相應(yīng)全局注意力特征圖的每個權(quán)重就是空間加權(quán)的概率。為了確保每個預(yù)測的概率之和等于1,使用Softmax函數(shù)確保重要的信息權(quán)值沒有超出范圍。
在瓶頸變換中,增加了雙卷積來提高通道的注意力性能。文本建模后,分別由卷積層wv1、歸一化 (LN)層、修正線性單元(ReLU)和最后的卷積層wv2處理得到注意力特征圖。wv1和wv2是2個1×1卷積層,在瓶頸變換中輸入特征映射大小為1×1,通道數(shù)量為rC。C表示輸入特征映射的通道,r表示維數(shù)的約簡比,其中r=1/4。在卷積層之間插入ReLU層表示其非線性。由于雙卷積使優(yōu)化更加困難,為了簡化網(wǎng)絡(luò),在修正線性單元前面加入LN層,便于泛化。
當(dāng)GCB的輸入特征圖非常大時,Softmax函數(shù)計算后的張量(Batchsize,C,H×W)與原始的輸入特征相乘會消耗大量的內(nèi)存和計算量,不能有效地處理大量的輸入特征。為了避免由于輸入的特征圖過多而造成的計算冗余,GCB被放置在特征提取網(wǎng)絡(luò)和改進(jìn)特征金字塔網(wǎng)絡(luò)之間,而不是嵌入在骨干提取網(wǎng)絡(luò)中,改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。
圖5 改進(jìn)后的YOLOv3_C網(wǎng)絡(luò)結(jié)構(gòu)簡圖Fig.5 Improved schematic diagram of YOLOv3_C network structure
在實際交通環(huán)境中,由于交通標(biāo)志物理尺寸較小,并且大部分樣本中最多出現(xiàn)5個交通標(biāo)志,背景與目標(biāo)所占圖像比例嚴(yán)重失衡,應(yīng)用YOLOv3檢測器檢測時,大部分邊界框里不含有目標(biāo),使這些沒有目標(biāo)的邊界框的置信度差距比較大,目標(biāo)損失淹沒于背景的損失中,從而造成誤檢。為了避免背景損失值對目標(biāo)損失值的影響,本文在YOLOv3損失函數(shù)上進(jìn)行改進(jìn),將目標(biāo)預(yù)測置信度cp納入背景損失計算的一部分,同時將位置損失計算的平方差損失函數(shù)改為交叉熵?fù)p失函數(shù),防止出現(xiàn)由于梯度彌散而導(dǎo)致的學(xué)習(xí)速率下降,加快訓(xùn)練速度。改進(jìn)后的位置損失函數(shù)和置信度損失函數(shù)計算如下:
ln(1-xp)][ytln(yp)+(1-yt)×
ln(1-yp)]+(wt-wp)2+(ht-hp)2,
(9)
(10)
本文使用中國交通標(biāo)志數(shù)據(jù)集TT100K[19],該數(shù)據(jù)集提供100 000張2 048 pixel×2 048 pixel大小的圖像,其中30 000個交通標(biāo)志實例為小目標(biāo),且涵蓋了多種不同條件下的交通標(biāo)志。相比于其他交通標(biāo)志數(shù)據(jù)集,TT100K的數(shù)據(jù)更豐富,包含的交通標(biāo)志更小,檢測難度更大。本文所檢測的交通標(biāo)志分為75類,相應(yīng)標(biāo)志圖像和類別名稱如圖6所示。
圖6 75類交通標(biāo)志圖像以及相應(yīng)類別名稱Fig.6 Images of 75 classes of traffic signs and corresponding classification names
刪除數(shù)據(jù)集中無標(biāo)注文件的圖片,剩下6 105張圖片用于訓(xùn)練,3 070張圖片用于檢測。對用于訓(xùn)練的6 105張圖片類別進(jìn)行分析,發(fā)現(xiàn)其中目標(biāo)類別的樣本數(shù)分布十分不均,因此本文使用添加高斯噪聲、提高亮度、降低亮度、改變對比度、改變色度及改變銳度等6種方法進(jìn)行數(shù)據(jù)擴(kuò)增,擴(kuò)增后的數(shù)據(jù)集包含1 5311張圖片,其中每個目標(biāo)的樣本數(shù)不少于100個,訓(xùn)練集和測試集覆蓋了所有需要檢測的標(biāo)志類別,且圖像數(shù)據(jù)互不包含。實驗平臺為Intel酷睿i5-10400F處理器,16 GB內(nèi)存,操作系統(tǒng)為Windows10,GPU為NVIDIA GeForce RTX2070,顯存8 GB。
為了驗證本文提出的交通標(biāo)志檢測算法的正確性和有效性,選用當(dāng)前比較流行的幾類算法與加入不同改進(jìn)方法的改進(jìn)算法進(jìn)行對比實驗,其中包含三類一階段算法YOLOv3、YOLOv4、SSD,一類二階段算法Faster-RCNN,添加了GCB模塊的YOLOv3_A和添加了多尺度融合的YOLOv3_B,以及同時添加GCB模塊、多尺度融合和改進(jìn)了損失函數(shù)的YOLOv3_C。實驗采用PyTorch深度學(xué)習(xí)框架搭建模型,在訓(xùn)練圖像輸入前,對訓(xùn)練數(shù)據(jù)進(jìn)行數(shù)據(jù)增強,如圖像翻轉(zhuǎn)、扭曲、旋轉(zhuǎn)等。在訓(xùn)練時,使用遷移學(xué)習(xí)的方法加速訓(xùn)練,使用在Imagenet數(shù)據(jù)集中訓(xùn)練好的特征提取層權(quán)重導(dǎo)入模型。凍結(jié)特征提取層以外的權(quán)重,訓(xùn)練特征提取層網(wǎng)絡(luò)。在迭代50次后解除凍結(jié),并繼續(xù)訓(xùn)練模型中所有層,直至訓(xùn)練損失不再變換時停止訓(xùn)練。訓(xùn)練中超參數(shù)的詳細(xì)配置如表1所示。
表1 超參數(shù)配置
本文中算法以平均精確度(mAP)和每秒檢測幀數(shù)作為評價指標(biāo)。精確度(Precision)為當(dāng)前類別正確檢測出的交通標(biāo)志數(shù)占類別所有樣本數(shù)的百分比,見式(11);召回率(Recall)為正確檢測為當(dāng)前類別的交通標(biāo)志數(shù)占全部檢測為當(dāng)前類別的交通標(biāo)志數(shù)的百分比,見式(12)。根據(jù)每個類別檢測結(jié)果繪制精確度和召回率曲線,曲線下面積就是當(dāng)前類別的總精確度(AP),mAP等于所有類別AP的均值,見式(13):
(11)
(12)
(13)
式中,TP,F(xiàn)P,F(xiàn)N分別代表正確識別的正樣本個數(shù)、錯誤識別的正樣本個數(shù)和錯誤識別的負(fù)樣本個數(shù);m為類別數(shù)量。
7種算法的實驗結(jié)果,如表2所示。
表2 不同算法的檢測精度對比
由表2可以看出,與原版YOLOv3在數(shù)據(jù)集上的檢測結(jié)果相比,采用YOLOv3與GCB融合的YOLOv3_A算法,在每秒傳輸幀數(shù)變化不大的情況下可以將交通標(biāo)志的檢測結(jié)果提升0.98%,GCB對于交通小標(biāo)志重要特征信息的提取有一定提升;采用YOLOv3與多尺度融合的YOLOv3_B算法檢測精度提升了6.59%,這表明更大尺度的預(yù)測可以更好地利用圖像中交通標(biāo)志的細(xì)節(jié)信息,從而更精準(zhǔn)地檢測出小型交通標(biāo)志。二階段網(wǎng)絡(luò)Faster-RCNN取得了43.81%的mAP,由于將物體識別和定位分為 兩步,導(dǎo)致其檢測速度較慢。一階段網(wǎng)絡(luò)SSD和YOLOv4分別取得了18.97%和47.93%的mAP,受限于輸入尺寸,SSD算法對于TT100K中交通小目標(biāo)的檢測效果較差,但檢測速度快;YOLOv4算法雖然采用了CSPDarknet53和SPP等一系列新結(jié)構(gòu),但YOLOv4主要針對中大型目標(biāo)的檢測,對于交通標(biāo)志中小目標(biāo)檢測的提升并不多;添加了多尺度融合、GCB和改進(jìn)了損失函數(shù)的YOLOv3_C模型的mAP值達(dá)到了56.93%,效果是7個網(wǎng)絡(luò)中最好的,雖然GCB模塊的加入導(dǎo)致顯存增加,使YOLOv3_C模型的每秒傳輸幀數(shù)相比YOLOv3網(wǎng)絡(luò)下降了5.5 幀/秒,但43.8 幀/秒的檢測速度仍能滿足實時檢測的要求。
YOLOv3與YOLOv3_C檢測效果對比如圖7所示。
(a) YOLOv3
由圖7可以看出,改進(jìn)后的算法能夠很好地框選不同尺寸的目標(biāo),并且對目標(biāo)的分類也較為準(zhǔn)確。圖7中第一行第二幅圖中,i5目標(biāo)大小為15 pixel×14 pixel,YOLOv3算法漏檢了該目標(biāo),而YOLOv3_C算法順利檢測到了該目標(biāo),并準(zhǔn)確識別。在圖7中的第二行,由于光線受到樹木的遮擋,交通標(biāo)志特征不明顯,YOLOv3算法只檢測到其中一個交通標(biāo)志,而YOLOv3_C算法沒有漏檢。圖7中第三行第二幅圖中,樹木遮擋了交通標(biāo)志的小部分,YOLOv3算法漏檢了該目標(biāo),而YOLOv3_C算法較為準(zhǔn)確地檢測到了該目標(biāo),同時對其他較小交通標(biāo)志的檢測也較為準(zhǔn)確。由此可見,改進(jìn)后的YOLOv3_C算法較YOLOv3算法檢測更準(zhǔn)確,對小型交通標(biāo)志、遮擋標(biāo)志和受環(huán)境影響的交通標(biāo)志的檢測效果更好。
分析YOLOv3算法的交通標(biāo)志檢測網(wǎng)絡(luò)發(fā)現(xiàn),隨著網(wǎng)絡(luò)深度加深,小型交通標(biāo)志的細(xì)節(jié)信息丟失較多,因此本文提出在YOLOv3網(wǎng)絡(luò)的檢測分支上引入多尺度融合和上下文融合2種方法改善網(wǎng)絡(luò)對小型交通標(biāo)志細(xì)節(jié)的關(guān)注程度,同時改進(jìn)損失函數(shù),加快訓(xùn)練速度。通過對7組實驗數(shù)據(jù)的定量分析和對檢測效果圖的定性分析,證明了本文算法能夠一定程度上改善交通標(biāo)志檢測的信息丟失問題,從而提高精確度。由于檢測的類別較多,許多類別信息的完整性較低,下一步將繼續(xù)增大數(shù)據(jù)集,優(yōu)化網(wǎng)絡(luò),權(quán)衡精確度和檢測速度2個指標(biāo),找到平衡速度和精確度的最優(yōu)模型。