俞辰,卿粼波,滕奇志,胡亮
(四川大學(xué)電子信息學(xué)院,成都 610065)
隨著城市的現(xiàn)代化,交通環(huán)境越來越復(fù)雜,智能交通系統(tǒng)也成為了大眾的研究熱點(diǎn)。作為智能交通系統(tǒng)的一部分,交通標(biāo)識(shí)檢測是實(shí)現(xiàn)智能交通的必需條件。交通標(biāo)識(shí)檢測可以使駕駛員避免交通違章,對于駕駛?cè)藛T和行人的出行都增加了安全性,很有研究意義,所以交通標(biāo)識(shí)檢測得到了學(xué)術(shù)界的廣泛研究[1]。傳統(tǒng)檢測方式主要采用機(jī)器視覺算法來檢測交通標(biāo)識(shí),例如基于形狀和顏色來進(jìn)行檢測,等等[2],但是該方法一般通過人為的選取或設(shè)計(jì)特征,然后結(jié)合分類器提取檢測目標(biāo),存在一定的主觀性[3]。與上述方法相比,基于深度學(xué)習(xí)的交通標(biāo)識(shí)檢測算法在消除主觀性的同時(shí),其性能更具優(yōu)越性。近些年來,基于深度學(xué)習(xí)的交通標(biāo)識(shí)檢測算法研究取得了一定的進(jìn)展。其中,Muller J 等人使用 SSD(Single Shot MultiBox Detector)實(shí)現(xiàn)了交通標(biāo)識(shí)的識(shí)別,達(dá)到了95%的召回率[4],Linxiu Wu等人基于Faster R-CNN(Faster Region-based Convolutional Neural Network)在不同天氣情況下實(shí)現(xiàn)了對交通標(biāo)識(shí)的檢測,準(zhǔn)確率約為90%[5]。Cen han 等人基于Faster R-CNN 實(shí)現(xiàn)了交通標(biāo)識(shí)檢測并對其進(jìn)行了改進(jìn),提高了12.1%的準(zhǔn)確率[6]。但是上述算法復(fù)雜度和空間復(fù)雜度都較大,因此不便于部署在低容量的嵌入式平臺(tái)上實(shí)現(xiàn)實(shí)時(shí)的交通標(biāo)識(shí)檢測。
因?yàn)榇蟛糠智度胧狡脚_(tái)與通用計(jì)算平臺(tái)相比,存儲(chǔ)容量是極其有限的,所以要在嵌入式平臺(tái)上實(shí)現(xiàn),網(wǎng)絡(luò)需要具有模型小,實(shí)時(shí)性較高的特性[7]。在所有檢測算法中,Tiny-YOLO 系列網(wǎng)絡(luò)由于實(shí)時(shí)性高、參數(shù)量較小的優(yōu)點(diǎn)[8],所以本文采用Tiny-YOLOv3 作為交通標(biāo)識(shí)的檢測網(wǎng)絡(luò),而Tiny-YOLOv3 精度不是特別高[9],針對上述問題,本文在原有的Tiny-YOLOv3 網(wǎng)絡(luò)基礎(chǔ)上,提出了如下優(yōu)化方法:
(1)對數(shù)據(jù)和網(wǎng)絡(luò)候選框進(jìn)行預(yù)處理,使網(wǎng)絡(luò)更適用于交通標(biāo)識(shí)的檢測。
(2)對網(wǎng)絡(luò)尺度和深度進(jìn)行了增加,提高網(wǎng)絡(luò)對交通標(biāo)識(shí)的準(zhǔn)確率。
(3)對網(wǎng)絡(luò)的卷積層和目標(biāo)檢測層都進(jìn)行了密集連接,減少網(wǎng)絡(luò)的參數(shù)量。
Tiny-YOLOv3 模型是 YOLOv3 的輕量級(jí)網(wǎng)絡(luò)[10],與 Faster R-CNN 算法相比,YOLO(You Only Look Once)系列算法是將檢測問題轉(zhuǎn)化為回歸問題[11],這種檢測方式提升了檢測速度。并且Tiny-YOLOv3 保持了YOLOv3 的部分網(wǎng)絡(luò)結(jié)構(gòu),融合了最新的特征金字塔網(wǎng)絡(luò)和全卷積網(wǎng)絡(luò)[12],并且使用多尺度預(yù)測最終目標(biāo),在檢測小目標(biāo)方面更有效。其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
Tiny-YOLOv3 對輸入圖片進(jìn)行了5 次池化操作,并使用最后2 次池化得到的降采樣結(jié)果對目標(biāo)進(jìn)行預(yù)測。最后2 次降采樣包含了19×19 與38×38 的目標(biāo)檢測特征圖。Tiny-YOLOv3 網(wǎng)絡(luò)只有上述兩個(gè)目標(biāo)檢測層,這意味著當(dāng)目標(biāo)小于一定像素時(shí),網(wǎng)絡(luò)對目標(biāo)的預(yù)測就會(huì)出現(xiàn)困難[13],檢測小目標(biāo)時(shí)會(huì)出現(xiàn)漏檢,誤檢等問題。因?yàn)榻?jīng)過16 倍降采樣的目標(biāo)檢測層對于目標(biāo)位置信息的檢測能力是有限的。YOLO 算法是通過劃分的網(wǎng)格數(shù)來輸出預(yù)測結(jié)果的,由于原Tiny-YOLOv3網(wǎng)絡(luò)只有 19×19 和 38×38 的特征圖層,如圖 2 和 3 所示,只憑借這兩個(gè)尺度上的預(yù)測難以精確檢測所有的交通標(biāo)識(shí)。
同時(shí)由圖1 可見,Tiny-YOLOv3 網(wǎng)絡(luò)有部分卷積層卷積核數(shù)較多,該網(wǎng)絡(luò)卷積層的參數(shù)經(jīng)計(jì)算有8668080 個(gè),不滿足一些較小存儲(chǔ)容量的嵌入式平臺(tái)的需求。
圖2 19×19卷積尺度圖
圖3 38×38卷積尺度圖
由于圖像是從不同的設(shè)備上獲取的,所以圖像的大小并不統(tǒng)一,例如 1000×300、1024×768 和 1280×720。因?yàn)閅OLO 算法所需輸入圖片的尺寸需要為固定大小,所以將不同大小的圖像調(diào)整為608×608 的標(biāo)準(zhǔn)格式[14]。
YOLOv2 后的YOLO 網(wǎng)絡(luò)都使用錨點(diǎn)框(anchor boxes)來檢測目標(biāo)[15],所以同樣的 Tiny-YOLOv3 也需要設(shè)置anchor boxes 的值。anchor boxes 是一組初始候選框,可以自行設(shè)定它們的寬和高。對初始anchor boxes 不同的設(shè)定會(huì)影響到網(wǎng)絡(luò)對交通標(biāo)識(shí)的檢測精度和速度。
本文主要研究的是交通標(biāo)識(shí)檢測問題,所以面對的檢測對象是交通標(biāo)識(shí),原網(wǎng)絡(luò)是為了檢測VOC 和COCO 數(shù)據(jù)集設(shè)置的anchor boxes,對于本文的研究對象不太適用。因此,利用K 均值聚類算法(K-means Clustering Algorithm)對數(shù)據(jù)重新聚類分析,本文采用預(yù)測的box 與標(biāo)注的box 的交并比(Intersect Over Union,IOU)作為目標(biāo)聚類分析的量度,對數(shù)據(jù)集進(jìn)行聚類分析。IOU 的計(jì)算公式如式1 所示:
在上述公式中,IOU 表示預(yù)測框和真實(shí)檢測框的交并比。A 表示預(yù)測框,B 表示檢測框。由于網(wǎng)絡(luò)增加了目標(biāo)檢測層,anchor boxes 的數(shù)量由原來的6 個(gè)增添成了9 個(gè),此時(shí)對應(yīng)的anchor boxes 的寬和高分別為(15,15),(19,19),(24,24),(16,41.6),(32,31),(46,44),(28.5,74.1),(70,73),(126,144)。
由于Tiny-YOLOv3 中網(wǎng)絡(luò)對輸入圖像進(jìn)行了多次池化操作,而池化是對圖像進(jìn)行下采樣,即縮小了卷積層輸出的特征圖從而來加快網(wǎng)絡(luò)的計(jì)算速度。但池化操作會(huì)使得上一層的卷積特征圖的語義信息損失掉一部分。而且淺層的卷積特征感受野包含的背景噪聲小,對小目標(biāo)具有更好的表征能力[10]。另外,當(dāng)目標(biāo)被遮擋住部分時(shí),這時(shí)只能得到目標(biāo)的局部特征,對于淺層的卷積層來說,它們通常對目標(biāo)的局部特征更為敏感,因此需要增加包含淺層信息的目標(biāo)檢測層,從而加強(qiáng)對遮擋的交通標(biāo)識(shí)和較小交通標(biāo)識(shí)的識(shí)別能力。
所以添加淺層目標(biāo)檢測層,以提高檢測的準(zhǔn)確率,為保證網(wǎng)絡(luò)結(jié)構(gòu)的平衡性,首先在Tiny-YOLOv3 的網(wǎng)絡(luò)結(jié)構(gòu)第二個(gè)卷積層后面添加了兩個(gè)卷積層,在此基礎(chǔ)上利用輸出的8 倍降采樣特征圖與經(jīng)過2 倍上采樣的16 倍降采樣特征圖進(jìn)行融合,增加了輸出為8 倍降采樣融合目標(biāo)檢測層,即增添了76×76 的特征圖層,如圖4 所示。增添了目標(biāo)檢測層后,可以獲取到更多的目標(biāo)位置信息[16]。
圖4 增添76×76卷積尺度圖
為了壓縮網(wǎng)絡(luò),本文將密集連接網(wǎng)絡(luò)應(yīng)用到了Tiny-YOLOv3 網(wǎng)絡(luò)中。對卷積層和目標(biāo)檢測層都進(jìn)行了密集連接。密集連接模塊中,如圖5 所示,它的每一層的輸入都是由前面各層的輸出相加而得,將跳層連接用到了極致。如果設(shè)定每一層l 的非線性操作是如下表達(dá)式:Hl(.)。這個(gè)非線性操作可以是卷積、批標(biāo)準(zhǔn)化(Batch Normalization,BN)、線性整流函數(shù)(Rectified Linear Unit,ReLU)、池化,等等。而每一層的輸出是:Xl,對于殘差網(wǎng)絡(luò)(Residual Networks,ResNet)來說,每一層的輸出只是當(dāng)前輸出疊加上一層輸出的結(jié)果[17],計(jì)算如式(2)所示:
而在密集連接模塊中,是每一層都疊加了前面所有層的輸出結(jié)果,即:
密集連接網(wǎng)絡(luò)主要有以下兩個(gè)優(yōu)點(diǎn):①可以減輕在訓(xùn)練過程中梯度消散的問題。該網(wǎng)絡(luò)反向傳播時(shí)每一層都會(huì)接受它后面所有層的梯度信號(hào),所以不會(huì)出現(xiàn)網(wǎng)絡(luò)越深,接近輸入層的梯度會(huì)越來越小的情況。②密集連接中會(huì)有大量的特征被復(fù)用,所以只要使用少量的卷積核就可以生成大量的特征,因此卷積核數(shù)目不會(huì)太多,最終網(wǎng)絡(luò)模型也會(huì)比較小[18]。所以在較淺的網(wǎng)絡(luò)結(jié)構(gòu)中,在相同精度下,使用了密集連接后,參數(shù)量和計(jì)算量都會(huì)大量減少。
圖5 密集連接網(wǎng)絡(luò)結(jié)構(gòu)
為了降低參數(shù)量的同時(shí)保證準(zhǔn)確率,采用密集連接網(wǎng)絡(luò),將增加尺度后的Tiny-YOLOv3 網(wǎng)絡(luò)中的部分卷積層的網(wǎng)絡(luò)結(jié)構(gòu)修改為密集連接結(jié)構(gòu),使得其中的部分卷積層的輸入為它前面的多層卷積特征圖。同時(shí)對目標(biāo)檢測層(即YOLO 層)也進(jìn)行了密集連接,使每個(gè)目標(biāo)檢測層都接受它前面所有目標(biāo)檢測層的特征作為輸入,同時(shí)由于部分網(wǎng)絡(luò)層連接了多層的輸入,所以在進(jìn)行目標(biāo)檢測前需要進(jìn)行多次上采樣。經(jīng)過尺度及深度增加和密集連接后的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖6 所示。
圖6 改進(jìn)后Tiny-YOLOv3網(wǎng)絡(luò)模型
由圖6 可知,Improved Tiny-YOLOv3 網(wǎng)絡(luò)的卷積層卷積核個(gè)數(shù)都較少,卷積層的參數(shù)經(jīng)計(jì)算有1597360個(gè),減少了嵌入式平臺(tái)運(yùn)行該網(wǎng)絡(luò)的存儲(chǔ)需求。
目前國內(nèi)在交通標(biāo)識(shí)檢測方面的公開交通標(biāo)識(shí)別數(shù)據(jù)集有CCTSDB(長沙交通標(biāo)識(shí)數(shù)據(jù)集)等。CCTSDB 數(shù)據(jù)集包含各種場景下攝像頭采集的交通標(biāo)識(shí)圖像,其中訓(xùn)練集為上述數(shù)據(jù)集中隨機(jī)的3500 張,測試集為上述數(shù)據(jù)集中的隨機(jī)的1000 張,驗(yàn)證集為上述數(shù)據(jù)集中的隨機(jī)500 張。數(shù)據(jù)集共分3 個(gè)類別:warning、prohibitory、mandatory。其中 warning 是警告標(biāo)識(shí),prohibitory 是禁止標(biāo)識(shí),mandatory 是指示標(biāo)識(shí)。因此,本文基于公開數(shù)據(jù)集CCTSDB 對我們提出的模型進(jìn)行訓(xùn)練和測試。
本文的實(shí)驗(yàn)環(huán)境配置如下:
訓(xùn)練環(huán)境及參數(shù)配置如下:Intel Core i7-6700 3.4GHz 處理器;顯卡為顯存12GB 的NVIDIA Titan X;Ubuntu 16.04 64 位操作系統(tǒng);深度學(xué)習(xí)框架為Dark-Net。 Tiny-YOLOv3、Improved Tiny-YOLOv3 及 YOLOv3 的網(wǎng)絡(luò)參數(shù)配置如下:訓(xùn)練框架為DarkNet,動(dòng)量為0.9,權(quán)重衰減為0.0005,迭代次數(shù)為10000,學(xué)習(xí)率設(shè)置為 0.001,Tiny-YOLOv3、Improved Tiny-YOLOv3的預(yù)訓(xùn)練模型為Tiny-YOLOv3.conv15,YOLOv3 的預(yù)訓(xùn)練模型為darknet53.conv.74。Faster R-CNN 的網(wǎng)絡(luò)參數(shù)配置如下:訓(xùn)練框架為Caffe,動(dòng)量為0.9,權(quán)重衰減為0.0005,迭代次數(shù)為10000,學(xué)習(xí)率設(shè)置為0.001,訓(xùn)練方式為end to end(端到端)方式。
測試環(huán)境及參數(shù)配置如下:NVIDIA Jetson TX2,Quad ARM A57/2MB L2 處理器,8GB RAM。
針對準(zhǔn)確率以及考慮將網(wǎng)絡(luò)在硬件上實(shí)現(xiàn)等問題,選擇了平均精確度均值MAP(Mean Average Precision)、召回率 Recall、參數(shù)量大?。≒arameters)及運(yùn)行時(shí)間(Time)作為硬件平臺(tái)下運(yùn)動(dòng)目標(biāo)檢測模型的評價(jià)指標(biāo)。
將本文提出的網(wǎng)絡(luò)以測試集結(jié)果的召回率(Recall)為橫坐標(biāo),精確率(Precision)為縱坐標(biāo),最終繪制出P-R 曲線。計(jì)算P 和R 的公式分別為:
上式中,TP 表示正確檢測到的交通標(biāo)識(shí),F(xiàn)N 表示沒有被檢測到的交通標(biāo)識(shí),F(xiàn)P 表示被錯(cuò)誤檢測到的交通標(biāo)識(shí)。上述PR 曲線下的面積即為AP(該類的平均準(zhǔn)確率),圖7 為各標(biāo)識(shí)的PR 曲線圖。而對于每一個(gè)類別均求得其AP 最終取均值即為MAP。將改進(jìn)前網(wǎng)絡(luò)的各類AP 值與改進(jìn)后網(wǎng)絡(luò)的AP 值進(jìn)行對比,顯然改進(jìn)后各類的AP 要略大一點(diǎn)。
表1 為同等硬件環(huán)境和同一個(gè)數(shù)據(jù)集,不同網(wǎng)絡(luò)對交通標(biāo)識(shí)檢測的測試結(jié)果。其中Improved Tiny-YOLOv3 相比于原Tiny-YOLOv3,降低了參數(shù)量的同時(shí),準(zhǔn)確率和召回率都得到了提高。改進(jìn)后的運(yùn)行時(shí)間相較于原網(wǎng)絡(luò),雖然略慢了一些,但平均檢測時(shí)間也只有0.01s,充分滿足實(shí)時(shí)檢測的要求。同時(shí),本文提出的網(wǎng)絡(luò)在準(zhǔn)確率只略低于YOLOv3 的情況下,參數(shù)量得到了大大降低,更加利于將模型應(yīng)用到嵌入式平臺(tái)。
表1 不同模型實(shí)驗(yàn)結(jié)果
圖7 不同標(biāo)識(shí)PR曲線圖
表2 為本文實(shí)驗(yàn)結(jié)果與其他論文中對交通標(biāo)識(shí)檢測的實(shí)驗(yàn)結(jié)果對比??梢钥闯霰疚奶岢龅哪P拖噍^于它們來說無論在準(zhǔn)確率上還是召回率和執(zhí)行時(shí)間上都具有更好的性能。
表2 Improved Tiny-YOLOv3 與其他論文模型對比
為了更好地觀察本文方法的準(zhǔn)確率提升效果,我們給出了原Tiny-YOLOv3 和Improved Tiny-YOLOv3網(wǎng)絡(luò)測試圖片的結(jié)果示例(左邊為原Tiny-YOLOv3 結(jié)果,右邊為Improved Tiny-YOLOv3 結(jié)果)。如圖8 所示,原Tiny-YOLOv3 遺漏的交通標(biāo)識(shí),Improved Tiny-YOLOv3 都成功檢測。
本文基于嵌入式平臺(tái)提出了一種基于改進(jìn)的Tiny-YOLOV3 的交通標(biāo)識(shí)檢測方法,對候選框以及數(shù)據(jù)進(jìn)行預(yù)處理使網(wǎng)絡(luò)更適用于交通標(biāo)識(shí)的檢測、通過增加卷積層及建立輸出為8 倍降采樣的目標(biāo)檢測層減少漏檢錯(cuò)檢的概率,最后為了減少參數(shù)壓縮網(wǎng)絡(luò),將密集連接的概念應(yīng)用到了整個(gè)網(wǎng)絡(luò)中,對卷積層和目標(biāo)檢測層都進(jìn)行了密集連接。改進(jìn)后的算法不僅在準(zhǔn)確率及召回率上有所提升,并且還降低了網(wǎng)絡(luò)在嵌入式平臺(tái)上存儲(chǔ)空間的需求。為了進(jìn)一步降低網(wǎng)絡(luò)運(yùn)行功耗以便實(shí)際應(yīng)用在智能交通系統(tǒng)中,本文的進(jìn)一步目標(biāo)是在FPGA 嵌入式平臺(tái)上實(shí)現(xiàn)該網(wǎng)絡(luò)。
圖8 改進(jìn)前后測試結(jié)果對比