田智慧 孫鹽鹽 魏海濤
1(鄭州大學(xué)地球科學(xué)與技術(shù)學(xué)院 河南 鄭州 450052)2(鄭州大學(xué)信息工程學(xué)院 河南 鄭州 450001)
交通標(biāo)志是道路行車的重要駕駛規(guī)則,快速并準(zhǔn)確地檢測(cè)與識(shí)別出交通標(biāo)志并把有效的信息傳遞給智能車控制系統(tǒng),對(duì)提高車輛的行駛安全,保障道路順暢起到了至關(guān)重要的作用和意義[1-2]。然而在自然場(chǎng)景中,由于交通標(biāo)志圖像目標(biāo)較小、背景復(fù)雜等原因,使交通標(biāo)志檢測(cè)面臨著一定的困難。
目前,交通標(biāo)志的檢測(cè)算法主要分為傳統(tǒng)的圖像處理算法和基于神經(jīng)網(wǎng)絡(luò)的檢測(cè)算法。傳統(tǒng)算法主要通過(guò)標(biāo)志顏色和形狀信息進(jìn)行檢測(cè)。其中,基于顏色的檢測(cè)主要包括RGB空間和HSV空間下的交通標(biāo)志檢測(cè),通過(guò)分割特定的顏色創(chuàng)建顯著性映射,可快速高效地對(duì)候選區(qū)域進(jìn)行檢測(cè),但極易受到光照影響,無(wú)法滿足惡劣天氣條件下的檢測(cè)需求[3]。而基于形狀的檢測(cè)利用交通標(biāo)志在形狀上的特殊性對(duì)其邊緣進(jìn)行檢測(cè),但當(dāng)交通標(biāo)志發(fā)生運(yùn)動(dòng)模糊或遮擋等情況時(shí),將造成算法精度下降。傳統(tǒng)的算法泛化能力較弱,處理大量數(shù)據(jù)能力較差,無(wú)法滿足復(fù)雜的交通場(chǎng)景需求。近年來(lái),隨著深度學(xué)習(xí)技術(shù)的出現(xiàn),目標(biāo)檢測(cè)算法的性能不斷提升,在計(jì)算機(jī)視覺(jué)領(lǐng)域得到廣泛應(yīng)用[4]。
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法有兩類,一類是two-stage算法,模型分為兩個(gè)階段,首先產(chǎn)生候選區(qū)域[5],再進(jìn)行分類與定位,典型算法有R-CNN[6]、SPP-NET[7]、Fast R-CNN[8]、Faster R-CNN[9]、R-FCN[10]、Mask-RCNN[11]等;另一類是one-stage算法,模型采用回歸的思想,不需要候選框階段,網(wǎng)絡(luò)直接輸出類別概率和位置信息,以YOLO[12]和SSD[13]算法為代表,其算法實(shí)時(shí)性比基于區(qū)域候選框的算法好,檢測(cè)精確度也有所提高。
在上述幾種算法中,SSD的檢測(cè)性能相對(duì)較好,它不僅結(jié)合了YOLO的回歸思想,同時(shí)具有anchor機(jī)制,提高了模型檢測(cè)準(zhǔn)確度和實(shí)時(shí)性,但是,SSD對(duì)小目標(biāo)的檢測(cè)效果較差。針對(duì)SSD網(wǎng)絡(luò)對(duì)交通標(biāo)志小目標(biāo)檢測(cè)效果不佳的問(wèn)題,本文在原來(lái)模型的基礎(chǔ)上進(jìn)行算法的改進(jìn),相比于原SSD模型在檢測(cè)精度上得到明顯提升,主要工作有以下幾個(gè)方面:
(1) 增加不同尺度的特征圖輸出,原有的模型中只有Conv4_3低層卷積特征圖針對(duì)小目標(biāo)檢測(cè),本文在原網(wǎng)絡(luò)的基礎(chǔ)上增加了Conv3_3低層卷積層用于小目標(biāo)檢測(cè),以此來(lái)實(shí)現(xiàn)檢測(cè)信息的多元化。
(2) 設(shè)計(jì)了對(duì)特征提取更精細(xì)的網(wǎng)絡(luò),采用多層特征融合的方法,將Conv4_3與Conv5_3、FC6進(jìn)行融合,使網(wǎng)絡(luò)特征圖更具多樣性,提高檢測(cè)精度。
(3) 通過(guò)k-means聚類算法對(duì)圖像中目標(biāo)大小進(jìn)行分析,重新調(diào)整原有特征框大小比例,提高卷積網(wǎng)絡(luò)對(duì)目標(biāo)特征的學(xué)習(xí)能力。
SSD算法是一種單次多框?qū)崟r(shí)檢測(cè)的深度神經(jīng)網(wǎng)絡(luò)模型,其實(shí)現(xiàn)了端到端的目標(biāo)檢測(cè),并引入anchor的設(shè)計(jì)理念。經(jīng)典的SSD模型主要包括兩部分,一部分是用于初步提取特征的基礎(chǔ)網(wǎng)絡(luò),采用VGG16作為基礎(chǔ)網(wǎng)絡(luò)模型,將FC6和FC7分別轉(zhuǎn)換為卷積層Conv6和Conv7,移除了FC8,并將Conv4層作為檢測(cè)的第一個(gè)特征圖;另一部分是末端添加的多個(gè)級(jí)聯(lián)卷積層Conv8_2、Conv9_2、Conv10_2、Conv11_2,提取不同尺度特征圖。接著,將多個(gè)尺度的特征圖同時(shí)用于預(yù)測(cè)模型,通過(guò)anchor機(jī)制生成一組不同寬高比的默認(rèn)框,再對(duì)目標(biāo)對(duì)象的位置偏移量和類別置信度進(jìn)行回歸預(yù)測(cè)。采用非極大值抑制算法得出最終的檢測(cè)結(jié)果,實(shí)現(xiàn)多尺度特征檢測(cè)。SSD算法利用回歸的思想極大地減少了神經(jīng)網(wǎng)絡(luò)的計(jì)算量,在一定程度上提高了算法在多尺度目標(biāo)上的檢測(cè)性能和速度,但是SSD在具有低級(jí)語(yǔ)義信息的淺層特征圖上進(jìn)行小目標(biāo)檢測(cè),使得其在小目標(biāo)上的檢測(cè)性能較差。網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示。
圖1 SSD網(wǎng)絡(luò)結(jié)構(gòu)
SSD在不損失精度的前提下提高了實(shí)時(shí)檢測(cè)速度,但對(duì)于小尺寸的目標(biāo)識(shí)別效果不佳。主要原因是SSD模型對(duì)小目標(biāo)的特征提取只使用了Conv4_3的低層特征圖,感受野相對(duì)較小,表征能力不足,在訓(xùn)練階段,特征學(xué)習(xí)經(jīng)過(guò)低層到高層池化操作,會(huì)產(chǎn)生特征消失現(xiàn)象,導(dǎo)致真實(shí)目標(biāo)與先驗(yàn)框難以匹配,不能滿足對(duì)小目標(biāo)檢測(cè)精度的要求。
本文在原模型特征層的基礎(chǔ)上加入Conv3_3低層特征圖,其分辨率相對(duì)于Conv4_3較大,包含的細(xì)節(jié)信息更為豐富,使小目標(biāo)特征得到充分提取。Conv3_3特征層分辨率為128×128,為保證模型檢測(cè)實(shí)時(shí)性,使用3×3的卷積核對(duì)其進(jìn)行卷積操作,同時(shí)加入步長(zhǎng)為2、池化空間為2×2的最大池化層,經(jīng)過(guò)池化后的特征圖寬高各減一半。卷積層的計(jì)算公式為:
(1)
f(x)=max(0,x)
(2)
SSD模型提供了兩種尺寸的網(wǎng)絡(luò)輸入,分別是300×300和512×512。若選取300×300的圖像輸入網(wǎng)絡(luò),在數(shù)據(jù)預(yù)處理階段進(jìn)行圖片壓縮時(shí),交通標(biāo)志易丟失信息,所以使用512×512尺寸圖像作為網(wǎng)絡(luò)的輸入。SSD512模型進(jìn)行分類和回歸的特征層是Conv4_3、FC7、Conv8_2、Conv9_2、Convl0_2、Conv11_2、Convl2_2,其對(duì)應(yīng)的分辨率分別為64×64、32×32、16×16、8×8、4×4、2×2、1×1。由于改進(jìn)后的模型加入了Conv3_3,且去掉了最后一層卷積層Convl2_2,所以新模型對(duì)應(yīng)的分辨率為128×128、64×64、32×32、16×16、8×8、4×4、2×2。
由圖1可以看出,SSD網(wǎng)絡(luò)只是從不同層抽取不同scale的feature直接做預(yù)測(cè),雖然不會(huì)增加計(jì)算量,但是各個(gè)scale之間沒(méi)有聯(lián)系。本文加入Conv3_3低層特征圖同時(shí),通過(guò)引入上下文信息的方式,將多層特征進(jìn)行融合來(lái)提高對(duì)小目標(biāo)的檢測(cè)。為避免高層背景噪聲的影響,只進(jìn)行低層特征間的融合。SSD模型中Conv5_3、FC6卷積層并沒(méi)有作為特征圖進(jìn)行輸出預(yù)測(cè),但它們具有不同的感受野,包含的語(yǔ)義信息也不同。故將Conv4_3、Conv5_3、FC6三層相鄰的低層特征圖進(jìn)行融合,充分利用特征層的上下文信息。
為了更好地進(jìn)行融合操作,先將特征圖調(diào)整為同一大小。如圖2所示,在Conv5_3、FC6特征圖之后分別跟一個(gè)1×1降卷積層,通過(guò)上采樣得到與Conv4_ 3尺寸相同的特征圖,并使用3×3大小的卷積核來(lái)提取特征。在將它們沿通道軸進(jìn)行融合前,進(jìn)行不同尺度的批量歸一化,然后采用Concat方式融合,再用1×1×256的卷積層來(lái)增強(qiáng)融合特征的分辨率,最后經(jīng)過(guò)ReLU激活函數(shù),生成特征融合模塊,其維度為512。融合模塊具有豐富的語(yǔ)義信息,進(jìn)行歸一化后直接和其他特征圖一樣對(duì)目標(biāo)物進(jìn)行輸出預(yù)測(cè)。
圖2 改進(jìn)后網(wǎng)絡(luò)結(jié)構(gòu)
經(jīng)過(guò)改進(jìn)后的SSD網(wǎng)絡(luò),共有7個(gè)特征圖。在神經(jīng)網(wǎng)絡(luò)中,圖像在經(jīng)過(guò)每一層會(huì)產(chǎn)生不同尺寸的特征圖。對(duì)于不同的特征圖,默認(rèn)框需要設(shè)置不同尺度和不同長(zhǎng)寬比例,其計(jì)算公式如式(3)所示。本文將smin設(shè)置為0.2,smax設(shè)置為0.8,避免網(wǎng)絡(luò)訓(xùn)練階段較小的默認(rèn)框不能與標(biāo)簽匹配問(wèn)題。網(wǎng)絡(luò)中7個(gè)特征圖的默認(rèn)框尺度系數(shù)分別為0.04、0.08、0.15、0.35、0.55、0.75、0.95。除了尺寸系數(shù),默認(rèn)框的大小還與寬高比有關(guān),實(shí)際尺寸的計(jì)算公式如式(4)所示。
(3)
式中:m=7,代表7個(gè)特征圖;sk為默認(rèn)框大小相對(duì)于輸入圖像的尺寸比例;smin與smax分別為默認(rèn)框尺寸占據(jù)原圖尺寸的最小比例值及最大比例值。
(4)
本文使用k-means聚類算法對(duì)數(shù)據(jù)集中各個(gè)交通標(biāo)志對(duì)應(yīng)的真實(shí)位置框的高寬比例進(jìn)行了分析,獲得自己樣本默認(rèn)框的尺寸,實(shí)驗(yàn)通過(guò)設(shè)置多組不同的聚類個(gè)數(shù)提升聚類的準(zhǔn)確度,最終得出聚類結(jié)果為[9.319 229 93 15.613 718 53],并把結(jié)果可視化,如圖3和圖4所示。其中:x軸代表框的寬度;y軸代表框的高度,那么每條線的斜率就是默認(rèn)框的高寬比。虛線是SSD模型中默認(rèn)框設(shè)置的五種高寬比例,分別是3、2、1、1/2、1/3。網(wǎng)格中實(shí)心小圓點(diǎn)為樣本聚類的結(jié)果,每條線上不同符號(hào)代表不同特征層上對(duì)應(yīng)的默認(rèn)框,模型對(duì)應(yīng)的w-h分布圖如圖3所示。
圖3 w-h(0~300)分布圖
圖4 w-h(0~60)分布圖
為了更直觀地看出聚類效果,圖4截取了尺度為0~60的w-h分布圖。可以看出,目標(biāo)物默認(rèn)框高寬比聚類后主要分布在比例為5/3之處(即實(shí)線上),雖然接近SSD原始默認(rèn)框設(shè)置的高寬比值2(實(shí)線左上方),但是經(jīng)過(guò)聚類算法分析后的數(shù)值更加精確,對(duì)于目標(biāo)物的特征學(xué)習(xí)更加有針對(duì)性。由于本文添加了第三層低層特征圖,所以,在原有模型默認(rèn)框的基礎(chǔ)上對(duì)Conv3_3、Conv4_3上的高寬比參數(shù)進(jìn)行更改,模型默認(rèn)框參數(shù)如表1所示。
表1 本文改進(jìn)后的模型默認(rèn)框高寬比參數(shù)
本文使用多任務(wù)聯(lián)合損失函數(shù),用于對(duì)目標(biāo)分類和邊框回歸兩個(gè)任務(wù)進(jìn)行聯(lián)合訓(xùn)練,提高網(wǎng)絡(luò)訓(xùn)練速度和訓(xùn)練結(jié)果的穩(wěn)定性。該損失函數(shù)如式(5)所示。
(5)
式中:N是匹配的候選框數(shù)目;α是權(quán)重系數(shù),可設(shè)置為1;第1項(xiàng)Lconf(x,c)是分類損失,通常采用Softmax函數(shù);第2項(xiàng)代表回歸損失,通常采用smooth L1函數(shù)。Lconf(x,c)可表示為:
(6)
式中:Pos指預(yù)測(cè)結(jié)果與標(biāo)簽符合的數(shù)量(即交通標(biāo)志正類別量);Neg指預(yù)測(cè)結(jié)果與標(biāo)簽不一致的數(shù)量(即交通標(biāo)志負(fù)類別量)。
(7)
(8)
(9)
式中:c為置信度;k為關(guān)于類別k是否匹配,值為0或1;l為預(yù)測(cè)框;g為真實(shí)框。
實(shí)驗(yàn)軟硬件環(huán)境:Linux操作系統(tǒng),Nvidia Tesla P100顯卡,32核心,192 GB內(nèi)存。實(shí)驗(yàn)框架為T(mén)ensorFlow深度學(xué)習(xí)開(kāi)源框架。
(1) GTSDB數(shù)據(jù)集。實(shí)驗(yàn)數(shù)據(jù)集主要來(lái)源是GTSDB[14]。該數(shù)據(jù)集從歐洲各種交通場(chǎng)景中收集包含43小類共900幅真實(shí)車輛駕駛環(huán)境下的高清交通標(biāo)志場(chǎng)景圖像,其中訓(xùn)練樣本包含846個(gè)目標(biāo)物,測(cè)試樣本包含360個(gè)目標(biāo)物。這些樣本中包含一些低分辨率、模糊不清、受到遮擋等不利條件的圖像,每幅圖像的像素值是1 360×800,每幅圖像包含0~6個(gè)目標(biāo)物,而且目標(biāo)物大小在16×16到128×128范圍內(nèi),所有圖像的格式都是ppm格式。本文主要針對(duì)禁止、危險(xiǎn)和強(qiáng)制這三類重要的交通標(biāo)志,進(jìn)行檢測(cè)識(shí)別。
(2) CCTSDB數(shù)據(jù)集。CCTSDB[15]來(lái)自中國(guó)湖南長(zhǎng)沙實(shí)驗(yàn)室,根據(jù)中國(guó)交通標(biāo)志數(shù)據(jù)集(CTSD)進(jìn)行擴(kuò)充。目前標(biāo)注的數(shù)據(jù)包括三類圖像,分別是指示、禁止、警告。數(shù)據(jù)集圖像共有15 734幅,本次實(shí)驗(yàn)按照2∶1劃分訓(xùn)練集和測(cè)試集。
采用ImageNet數(shù)據(jù)集作為預(yù)訓(xùn)練階段的數(shù)據(jù),預(yù)訓(xùn)練模型可以明顯減少訓(xùn)練時(shí)間。微調(diào)階段是采用德國(guó)交通標(biāo)志數(shù)據(jù)庫(kù)中的訓(xùn)練集相關(guān)數(shù)據(jù)進(jìn)行訓(xùn)練。模型訓(xùn)練階段參數(shù)設(shè)置:學(xué)習(xí)率為0.01,迭代次數(shù)為20 000,動(dòng)量因子為0.9,批次為32。
本文使用的評(píng)價(jià)標(biāo)準(zhǔn)是檢測(cè)平均精度均值(mean Average Precision, mAP)和速度。對(duì)于本文實(shí)驗(yàn)交通標(biāo)志檢測(cè)來(lái)說(shuō),首先要把檢測(cè)的三大類別的AP (Average Precision)值分別計(jì)算出來(lái),然后取三個(gè)類別的AP的平均值,最終得mAP。其計(jì)算公式如式(10)所示。
(10)
式中:QR指實(shí)驗(yàn)中所有類別交通標(biāo)志全部預(yù)測(cè)出來(lái)正確的類別數(shù)量。
另外一個(gè)重要性能指標(biāo):速度。模型的檢測(cè)速度直接決定能否對(duì)交通標(biāo)志實(shí)現(xiàn)實(shí)時(shí)檢測(cè),這對(duì)交通標(biāo)志的應(yīng)用場(chǎng)景極其重要。本文評(píng)估速度用的指標(biāo)是處理每幅圖片所消耗的時(shí)間,以秒為單位計(jì)數(shù)。每幅圖片用時(shí)越小,速度越快。
為了驗(yàn)證算法在融合特征圖后對(duì)提高交通標(biāo)志檢測(cè)率的有效性,對(duì)檢測(cè)框與交通標(biāo)志真實(shí)框設(shè)置了不同的IOU閾值,分別為0.5、0.6、0.7 ,通過(guò)改變交通標(biāo)志的置信度閾值,獲得多組Precision和Recall,實(shí)現(xiàn)交通標(biāo)志檢測(cè)效果的評(píng)估。從實(shí)驗(yàn)對(duì)比結(jié)果可以得出,本文方法隨著置信度增大,召回率降低。當(dāng)IOU=0.6時(shí),實(shí)驗(yàn)效果最佳。實(shí)驗(yàn)結(jié)果如表2所示。
表2 不同閾值實(shí)驗(yàn)結(jié)果對(duì)照表
在相同置信度閾值(IOU=0.6)的條件下,通過(guò)mAP和檢測(cè)速度來(lái)對(duì)模型進(jìn)行評(píng)估。將改進(jìn)后的模型與原SSD模型進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表3所示。
表3 改進(jìn)后的算法與原算法實(shí)驗(yàn)結(jié)果對(duì)照表
原SSD512與原SSD300相比,模型的平均精度有所上升,但隨著模型輸入圖像尺寸的變大,在保留更多低層信息的同時(shí)增加了參數(shù)運(yùn)算,精度得到提升,速度卻下降了。本文算法是基于SSD521的,為了提高檢測(cè)速度,去除了最后一層卷積層,減少網(wǎng)絡(luò)的計(jì)算量。
由表3可知,改進(jìn)后的模型在GTSDB測(cè)試數(shù)據(jù)集上的表現(xiàn)均比原模型SSD300和SSD512有明顯的提升,比SSD300的mAP提升了7.65百分點(diǎn),比SSD512的mAP提升了5.84百分點(diǎn)。算法時(shí)間成本在GTSDB數(shù)據(jù)集上是0.048 s,輸出幀率為21.74,與未改進(jìn)的SSD相比僅差0.003 s,主要原因在于特征層融合在充分利用上下文語(yǔ)義信息的同時(shí),增加了模型的復(fù)雜度,相比于原SSD模型多出一個(gè)運(yùn)算,在一定程度上影響了模型速度,但是相比于模型在精確度上的提升,犧牲的速度是在可接受范圍內(nèi)的。
同樣,在CCTSDB測(cè)試集上進(jìn)行了模型測(cè)試,實(shí)驗(yàn)結(jié)果mAP為92.47,相比于未改進(jìn)的SSD原始模型也有明顯的提高,模型表現(xiàn)出了一定的穩(wěn)定性。
此外,通過(guò)對(duì)SSD網(wǎng)絡(luò)的改進(jìn),本文模型在GTSDB數(shù)據(jù)集的平均精度比文獻(xiàn)[16]、文獻(xiàn)[17]所提出的模型分別提高0.015 3、0.008 7。
為了更有效地評(píng)估模型性能,在現(xiàn)實(shí)場(chǎng)景中隨機(jī)選取三幅交通場(chǎng)景圖像進(jìn)行測(cè)試,檢測(cè)效果如圖5所示,可以看出,改進(jìn)后的模型在背景復(fù)雜、交通標(biāo)志較小的情況下也能準(zhǔn)確檢測(cè)并分類。
圖5 檢測(cè)效果
針對(duì)SSD算法應(yīng)用在交通標(biāo)志檢數(shù)據(jù)集上檢測(cè)精度不佳的問(wèn)題,本文提出一種基于SSD模型改進(jìn)的卷積網(wǎng)絡(luò)算法。通過(guò)增加低層特征圖,豐富小尺寸目標(biāo)的語(yǔ)義信息,并將Conv4_3、Conv5_3和FC6進(jìn)行特征融合,增強(qiáng)上下文信息,使其特征圖更具多樣性,提高交通標(biāo)志檢測(cè)算法的精度。同時(shí),利用k-means聚類算法對(duì)SSD默認(rèn)框大小的選取進(jìn)行分析,根據(jù)交通標(biāo)志的自身特點(diǎn),重新調(diào)整原有特征框大小比例,加快模型收斂。實(shí)驗(yàn)結(jié)果表明,本文算法提高了交通標(biāo)志的檢測(cè)精度,與目前的算法相比檢測(cè)效果也有明顯的提升。在未來(lái)的研究中,還需進(jìn)一步提高檢測(cè)速率,解決本文方法的擴(kuò)展問(wèn)題,并且將該算法運(yùn)用到現(xiàn)實(shí)。