曹梧漢 賀波濤
(武漢郵電科學(xué)研究院 武漢 430074)
近些年我國的經(jīng)濟(jì)水平不斷的提高,機(jī)動(dòng)車制造業(yè)發(fā)展速度迅猛,人均收入增幅持續(xù)擴(kuò)大,國內(nèi)機(jī)動(dòng)車數(shù)量逐年遞增。但是國內(nèi)機(jī)動(dòng)車駕駛素養(yǎng)水平并未和機(jī)動(dòng)車環(huán)境變化相匹配。近年來,因各種人為原因,重大交通事故頻發(fā),行人安全和機(jī)動(dòng)車駕駛安全已經(jīng)成為一個(gè)社會(huì)熱點(diǎn)問題。得益于近15 年來GPU 處理性能的大幅提升,車載智能輔助駕駛技術(shù)在近幾年逐步走進(jìn)人們的視野,借用此類智能技術(shù)作為駕駛操作的補(bǔ)足,避免各類交通事故的發(fā)生成為研發(fā)的熱點(diǎn)。作為無人駕駛技術(shù)的重要一環(huán),交通標(biāo)志檢測(cè)的精度和實(shí)時(shí)性成為待解決的熱點(diǎn)問題,能否快速且準(zhǔn)確的檢測(cè)出交通標(biāo)志,并將此類信息反饋給駕駛系統(tǒng),隨之進(jìn)行準(zhǔn)確的決策,在提升駕駛安全性上有極其重大的意義。
針對(duì)上述提出的問題,本文提出了一種基于SSD 改進(jìn)的交通標(biāo)志檢測(cè)算法,通過對(duì)SSD[1]的輸入數(shù)據(jù)進(jìn)行select-cutmix 預(yù)處理,并對(duì)多個(gè)特征圖進(jìn)行反卷積之后疊加做特征融合,提升語義信息,在預(yù)測(cè)的部分,改進(jìn)邊框回歸的損失函數(shù)為CIoU Loss[2],使得此傳統(tǒng)檢測(cè)框架在速度和檢測(cè)性能上也能達(dá)到一個(gè)在當(dāng)前極有競爭力的水平。通過最后的實(shí)驗(yàn)分析驗(yàn)證,本文提出的算法較原版SSD[1]檢測(cè)算法的識(shí)別精度提升極大,在未來的研究中可以使用更輕量級(jí)的骨干網(wǎng)絡(luò)部署到移動(dòng)端,進(jìn)一步提升檢測(cè)的實(shí)時(shí)性,因此也極具應(yīng)用價(jià)值。
近些年的目標(biāo)檢測(cè)算法主要分為兩種類型,兩階段檢測(cè)算法和單階段檢測(cè)算法。
兩階段檢測(cè)算法,如R-CNN類,此類算法主要分為兩步,首先通過特定方法生成可能存在目標(biāo)的區(qū)域,比如select search[3]或者RPN[4],之后將所有的區(qū)域送入檢測(cè)器中進(jìn)行分類和回歸,去掉置信度低的部分,對(duì)置信度高的部分的邊框進(jìn)行修正。此類方法的優(yōu)點(diǎn)在于精度很高,但是檢測(cè)的實(shí)時(shí)性較差。
而單階段檢測(cè)算法,如YOLO[5]系列和SSD[1]等,其流程一步到位,給定圖像的輸入后,直接輸入網(wǎng)絡(luò),使用回歸的方法輸出目標(biāo)的類別和邊框的位置。該類算法較之前的兩階段檢測(cè)算法相比,實(shí)時(shí)性提升很大,但是缺點(diǎn)就是訓(xùn)練較為困難。其中一個(gè)原因就是均勻的密集采樣后,正負(fù)樣本的比例極不均衡,模型的精確度也稍有降低,且檢測(cè)尺度較小的物體也較為困難。
SSD[1]檢測(cè)算法的結(jié)構(gòu)圖如圖1所示。
圖1 SSD基礎(chǔ)結(jié)構(gòu)圖
SSD[1]直接使用卷積的輸出進(jìn)行檢測(cè),且采用了不同尺度的特征圖對(duì)不同尺度的目標(biāo)進(jìn)行檢測(cè)。較淺卷積層的輸出特征圖尺度較大,可以用來檢測(cè)目標(biāo)較小的物體,而深層卷積的輸出特征圖尺度較小,可以用于檢測(cè)較大的物體。另外SSD[1]采用了不同尺度長寬比的先驗(yàn)框,能夠根據(jù)實(shí)際檢測(cè)的任務(wù)進(jìn)行微調(diào)。
SSD[1]不同層的特征圖的大小如表1所示。
表1 SSD卷積層輸出特征圖尺寸
在實(shí)際場(chǎng)景下,利用SSD[1]對(duì)交通標(biāo)志進(jìn)行檢測(cè)的效果不理想,本文分析了以下幾個(gè)主要原因:
1)雖然SSD[1]利用了多個(gè)尺度的特征圖進(jìn)行不同尺寸目標(biāo)的檢測(cè),但是conv4_3 輸出的特征層只經(jīng)過了一次卷積,整個(gè)特征圖的語義信息較少,不能很好地提取到目標(biāo)的信息;
2)針對(duì)較多目標(biāo)框定位的偏差問題,原版的SSD[1]采用了Smooth L1 Loss 作為邊框回歸的損失函數(shù),獨(dú)立的算出目標(biāo)框四個(gè)坐標(biāo)點(diǎn)的損失,這種方法計(jì)算下目標(biāo)框的四個(gè)坐標(biāo)存在相關(guān)性,帶來了不必要的計(jì)算。并且多個(gè)相似框的Smooth L1損失很有可能相同,但是實(shí)際考慮這些邊框的交并比的話,這些目標(biāo)框可能存在較大差異;
3)對(duì)最后每個(gè)可能的目標(biāo)物體生成多個(gè)框后,采用了NMS(Non-Maximum Suppression)[1]算法對(duì)多余框進(jìn)行過濾,原SSD[1]算法采用的NMS 算法僅僅采用IoU(Intersection-over-Union)作為邊框重合度的判斷依據(jù),在很多情況下并不能反映兩個(gè)框的遠(yuǎn)近,也無法精確地反映兩個(gè)框的重合度大小。
隨著現(xiàn)代神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,整個(gè)模型的資源占用也越來越大。更深的網(wǎng)絡(luò)帶來了更好的特征提取能力,但是也帶來了過擬合的風(fēng)險(xiǎn)。如果在圖片中增加一定的噪聲或者進(jìn)行一定的裁剪操作,能夠一定程度上提高網(wǎng)絡(luò)的泛化能力和準(zhǔn)確性。
本文提出的算法在原輸入模式的基礎(chǔ)上引入select-cutmix 數(shù)據(jù)增強(qiáng)。不同于原cutmix[6]數(shù)據(jù)增強(qiáng)的方法,本文考慮到數(shù)據(jù)集種的交通標(biāo)志的像素尺寸較小,比較難以裁剪特定的標(biāo)志,因此先選定目標(biāo)周圍區(qū)域做一個(gè)裁剪,之后四張圖拼接起來。利用select-cutmix 方法生成的輸入圖像如圖2 所示。
圖2 select-cutmix后的輸入圖片
隨后在原版SSD[1]的實(shí)現(xiàn)中,數(shù)據(jù)的輸入會(huì)通過一個(gè)光度變形和幾何變換,本文實(shí)現(xiàn)中省去了幾何變換的部分,僅僅采用了光度變換對(duì)經(jīng)過select-cutmix的輸入數(shù)據(jù)做隨后的處理。
本文提出的select-cutmix 方法在訓(xùn)練過程中不會(huì)出現(xiàn)數(shù)據(jù)集中未出現(xiàn)的無關(guān)像素點(diǎn),不會(huì)引入無關(guān)數(shù)據(jù),同時(shí)不改變訓(xùn)練和推理的代價(jià)。
SSD[1]的檢測(cè)結(jié)構(gòu)中,僅僅提取了conv4_3,fc_7,conv6_2,conv7_2,conv8_2,conv9_2 的卷積輸出特征圖做了特征的提取和檢測(cè),隨后對(duì)其做了兩次卷積,一次是卷積核大小為num_anc?or×4 的卷積,用于預(yù)測(cè)每一個(gè)網(wǎng)格點(diǎn)上的先驗(yàn)框變化,一次是卷積核大小為num_anc?or×num_classes的卷積,對(duì)應(yīng)特征層上的每一個(gè)格點(diǎn)上的預(yù)測(cè)類別[1]。
原SSD[1]算法多尺度特征圖檢測(cè)結(jié)構(gòu)的缺點(diǎn)就是沒有用到最后卷積輸出的高維度特征圖。底層卷積的特征圖輸出分辨率高,但是語義信息較少,因此,淺層的特征圖用于提取特征時(shí),沒有用到深層的語義特征,造成了對(duì)于小目標(biāo)檢測(cè)性能的下滑。因此,本文采用FPN[7]的思想改進(jìn)原網(wǎng)絡(luò)的檢測(cè)和分類部分,改進(jìn)的網(wǎng)絡(luò)如圖3所示。
圖3 改進(jìn)后的SSD檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)
其中本文用一個(gè)反卷積特征融合模塊[8]來做特征圖的融合和維度提升。其結(jié)構(gòu)如圖4所示。
圖4 反卷積上采樣模塊
如圖4 所示,淺層的特征經(jīng)過卷積核批量歸一化之后和深層的反卷積上采樣輸出的結(jié)果進(jìn)行元素級(jí)別的相加操作,最后輸出。
同時(shí),本文將原SSD[1]檢測(cè)網(wǎng)絡(luò)中conv8_2 和conv7_2的兩個(gè)卷積的block換成RFB[9]模塊做一個(gè)特征的聚合。RFB[9]模塊的結(jié)構(gòu)如圖5所示。
圖5 RFB[9]模塊
原SSD[1]算法的邊框位置回歸損失函數(shù)的缺點(diǎn)就是當(dāng)多個(gè)框的IoU 差距較大的時(shí)候可能會(huì)有相同的損失函數(shù),計(jì)算的誤差較大。后續(xù)提出的模型中,常采用IoU 損失函數(shù),但在該損失函數(shù)下,兩目標(biāo)框不相交的時(shí)候不能反映二者的遠(yuǎn)近,且無法反映具體是如何相交的。本文在目標(biāo)框的回歸上采用CIoU Loss[2]來改善這類情況。
原SSD 檢測(cè)算法的損失函數(shù)如公式所示,本文替換回歸框的損失函數(shù)為CIoU Loss[2],替換后的CIoU[2]損失函數(shù)公式如式(1)所示:
本文的數(shù)據(jù)集TT00K 有騰訊和清華大學(xué)聯(lián)合采集,一共有共221 種標(biāo)注類別。其中,訓(xùn)練集和測(cè)試集分別為6105 張3071 張。經(jīng)過瀏覽,數(shù)據(jù)集覆蓋了大量不同的光照環(huán)境和天氣場(chǎng)景,其數(shù)據(jù)豐富性較強(qiáng)。另外部分類別的標(biāo)注數(shù)據(jù)不足300 張,因此本文在實(shí)際訓(xùn)練過程中僅選取了標(biāo)注數(shù)據(jù)較為豐富的前35類交通標(biāo)志。
本文的實(shí)驗(yàn)環(huán)境如表2 所示,系統(tǒng)配置環(huán)境為CUDAv10.2,pytorch v1.9.0。
表2 本文實(shí)驗(yàn)環(huán)境
本文主要兩個(gè)性能指標(biāo),首先是能夠表征識(shí)別準(zhǔn)確度的平均精度均值(mAP),其次是能夠反映識(shí)別實(shí)時(shí)性的FPS(frames per second)。
計(jì)算mAP(mean Average Precision)之前首先要引入FP(False Positive)和TP(True Positive),F(xiàn)N(False Negative)三個(gè)定義,其中FP,TP 分別代表假陽實(shí)例,真陽實(shí)例。真陽實(shí)例表示預(yù)測(cè)為正樣例,實(shí)際也是正樣例,假陽實(shí)例表示預(yù)測(cè)為正樣例,實(shí)際是假。則精確率P 和召回率R 的公式定義如式(4)、(5)所示。
隨后每一類的平均精確率(Average Precision,AP)定義如式(6)所示。
其中p(rc)表示當(dāng)類別c 的召回率為rc時(shí)的準(zhǔn)確率。
平均精度均值及算法方法較為簡單,首先對(duì)每個(gè)類別在全體數(shù)據(jù)集中求出平均精度值,隨后對(duì)所有類比的平均精度值取一個(gè)均值。如式(7)所示
FPS 表征了一個(gè)模型處理圖片的速度,其定義如式(7)所示,其中的t代表處理一幀畫面需要的時(shí)長。
本文針對(duì)改進(jìn)SSD[1]算法模型的訓(xùn)練先用原版的SSD[1]在TT100K 種進(jìn)行50個(gè)epoch的訓(xùn)練,隨后用訓(xùn)練好的模型數(shù)據(jù)初始化相同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)層,丟棄不匹配的部分嗎,隨后線凍結(jié)conv4_3的參數(shù),訓(xùn)練迭代50 個(gè)epoch,隨后解凍所有的參數(shù),繼續(xù)訓(xùn)練100個(gè)epoch。
將本文改進(jìn)的算法和原版SSD[1]以及YOLOv3[9]做性能對(duì)比實(shí)驗(yàn),對(duì)比結(jié)果如表3 所示。本文提出的改進(jìn)算法的mAP達(dá)到了85.37%,相較原版SSD[1]高出了18.05%,相較于YOLOv3[9]高出了11.24%,有了極大的提升,其中YOLOv3[9]的輸入圖片尺寸大小為(416,416)。
表3 本文算法與其他目標(biāo)檢測(cè)算法對(duì)比
綜合識(shí)別的精度(mAP)和處理的速度(FPS)來看,本算法在已經(jīng)提出的目標(biāo)檢測(cè)算法中有較大的競爭力。
本文在SSD[1]基礎(chǔ)上提出了一種改進(jìn)的SSD[1]算法,有效解決了SSD[1]算法在交通標(biāo)志識(shí)別過程中,漏檢和誤檢較多的問題。改進(jìn)算法針對(duì)該數(shù)據(jù)集特征,對(duì)數(shù)據(jù)增強(qiáng)處理,并將多特征圖檢測(cè)結(jié)構(gòu)改進(jìn),將多個(gè)特征圖的融合,增強(qiáng)每個(gè)檢測(cè)分時(shí)的語義信息,并在主干網(wǎng)絡(luò)提取中加了簡化的RFB[8]模塊,提升網(wǎng)絡(luò)的寬度,同時(shí)做特征的聚合。實(shí)驗(yàn)結(jié)果表明,本文的檢測(cè)算法在精度上較之前的SSD[1]有較大的提升,且在處理實(shí)時(shí)性上同YOLOv3[9]對(duì)比存在一定優(yōu)勢(shì),具有較高的落地使用價(jià)值??紤]到實(shí)際應(yīng)用場(chǎng)景中,環(huán)境復(fù)雜,后續(xù)可以考慮采用更好的特征提取網(wǎng)絡(luò)替換本文的基礎(chǔ)卷積網(wǎng)絡(luò)VGG[10],進(jìn)一步提升算法的精度。同時(shí)在實(shí)時(shí)性方面,可以結(jié)合數(shù)據(jù)的特征,精簡各類模塊,重新設(shè)計(jì)通道的參數(shù),在檢測(cè)速度上做進(jìn)一步的提升。