俞辰,卿粼波,滕奇志,胡亮
(四川大學電子信息學院,成都 610065)
隨著城市的現代化,交通環境越來越復雜,智能交通系統也成為了大眾的研究熱點。作為智能交通系統的一部分,交通標識檢測是實現智能交通的必需條件。交通標識檢測可以使駕駛員避免交通違章,對于駕駛人員和行人的出行都增加了安全性,很有研究意義,所以交通標識檢測得到了學術界的廣泛研究[1]。傳統檢測方式主要采用機器視覺算法來檢測交通標識,例如基于形狀和顏色來進行檢測,等等[2],但是該方法一般通過人為的選取或設計特征,然后結合分類器提取檢測目標,存在一定的主觀性[3]。與上述方法相比,基于深度學習的交通標識檢測算法在消除主觀性的同時,其性能更具優越性。近些年來,基于深度學習的交通標識檢測算法研究取得了一定的進展。其中,Muller J 等人使用 SSD(Single Shot MultiBox Detector)實現了交通標識的識別,達到了95%的召回率[4],Linxiu Wu等人基于Faster R-CNN(Faster Region-based Convolutional Neural Network)在不同天氣情況下實現了對交通標識的檢測,準確率約為90%[5]。Cen han 等人基于Faster R-CNN 實現了交通標識檢測并對其進行了改進,提高了12.1%的準確率[6]。但是上述算法復雜度和空間復雜度都較大,因此不便于部署在低容量的嵌入式平臺上實現實時的交通標識檢測。
因為大部分嵌入式平臺與通用計算平臺相比,存儲容量是極其有限的,所以要在嵌入式平臺上實現,網絡需要具有模型小,實時性較高的特性[7]。在所有檢測算法中,Tiny-YOLO 系列網絡由于實時性高、參數量較小的優點[8],所以本文采用Tiny-YOLOv3 作為交通標識的檢測網絡,而Tiny-YOLOv3 精度不是特別高[9],針對上述問題,本文在原有的Tiny-YOLOv3 網絡基礎上,提出了如下優化方法:
(1)對數據和網絡候選框進行預處理,使網絡更適用于交通標識的檢測。
(2)對網絡尺度和深度進行了增加,提高網絡對交通標識的準確率。
(3)對網絡的卷積層和目標檢測層都進行了密集連接,減少網絡的參數量。
Tiny-YOLOv3 模型是 YOLOv3 的輕量級網絡[10],與 Faster R-CNN 算法相比,YOLO(You Only Look Once)系列算法是將檢測問題轉化為回歸問題[11],這種檢測方式提升了檢測速度。并且Tiny-YOLOv3 保持了YOLOv3 的部分網絡結構,融合了最新的特征金字塔網絡和全卷積網絡[12],并且使用多尺度預測最終目標,在檢測小目標方面更有效。其網絡結構如圖1所示。
Tiny-YOLOv3 對輸入圖片進行了5 次池化操作,并使用最后2 次池化得到的降采樣結果對目標進行預測。最后2 次降采樣包含了19×19 與38×38 的目標檢測特征圖。Tiny-YOLOv3 網絡只有上述兩個目標檢測層,這意味著當目標小于一定像素時,網絡對目標的預測就會出現困難[13],檢測小目標時會出現漏檢,誤檢等問題。因為經過16 倍降采樣的目標檢測層對于目標位置信息的檢測能力是有限的。YOLO 算法是通過劃分的網格數來輸出預測結果的,由于原Tiny-YOLOv3網絡只有 19×19 和 38×38 的特征圖層,如圖 2 和 3 所示,只憑借這兩個尺度上的預測難以精確檢測所有的交通標識。
同時由圖1 可見,Tiny-YOLOv3 網絡有部分卷積層卷積核數較多,該網絡卷積層的參數經計算有8668080 個,不滿足一些較小存儲容量的嵌入式平臺的需求。

圖2 19×19卷積尺度圖

圖3 38×38卷積尺度圖
由于圖像是從不同的設備上獲取的,所以圖像的大小并不統一,例如 1000×300、1024×768 和 1280×720。因為YOLO 算法所需輸入圖片的尺寸需要為固定大小,所以將不同大小的圖像調整為608×608 的標準格式[14]。
YOLOv2 后的YOLO 網絡都使用錨點框(anchor boxes)來檢測目標[15],所以同樣的 Tiny-YOLOv3 也需要設置anchor boxes 的值。anchor boxes 是一組初始候選框,可以自行設定它們的寬和高。對初始anchor boxes 不同的設定會影響到網絡對交通標識的檢測精度和速度。
本文主要研究的是交通標識檢測問題,所以面對的檢測對象是交通標識,原網絡是為了檢測VOC 和COCO 數據集設置的anchor boxes,對于本文的研究對象不太適用。因此,利用K 均值聚類算法(K-means Clustering Algorithm)對數據重新聚類分析,本文采用預測的box 與標注的box 的交并比(Intersect Over Union,IOU)作為目標聚類分析的量度,對數據集進行聚類分析。IOU 的計算公式如式1 所示:

在上述公式中,IOU 表示預測框和真實檢測框的交并比。A 表示預測框,B 表示檢測框。由于網絡增加了目標檢測層,anchor boxes 的數量由原來的6 個增添成了9 個,此時對應的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 中網絡對輸入圖像進行了多次池化操作,而池化是對圖像進行下采樣,即縮小了卷積層輸出的特征圖從而來加快網絡的計算速度。但池化操作會使得上一層的卷積特征圖的語義信息損失掉一部分。而且淺層的卷積特征感受野包含的背景噪聲小,對小目標具有更好的表征能力[10]。另外,當目標被遮擋住部分時,這時只能得到目標的局部特征,對于淺層的卷積層來說,它們通常對目標的局部特征更為敏感,因此需要增加包含淺層信息的目標檢測層,從而加強對遮擋的交通標識和較小交通標識的識別能力。
所以添加淺層目標檢測層,以提高檢測的準確率,為保證網絡結構的平衡性,首先在Tiny-YOLOv3 的網絡結構第二個卷積層后面添加了兩個卷積層,在此基礎上利用輸出的8 倍降采樣特征圖與經過2 倍上采樣的16 倍降采樣特征圖進行融合,增加了輸出為8 倍降采樣融合目標檢測層,即增添了76×76 的特征圖層,如圖4 所示。增添了目標檢測層后,可以獲取到更多的目標位置信息[16]。

圖4 增添76×76卷積尺度圖
為了壓縮網絡,本文將密集連接網絡應用到了Tiny-YOLOv3 網絡中。對卷積層和目標檢測層都進行了密集連接。密集連接模塊中,如圖5 所示,它的每一層的輸入都是由前面各層的輸出相加而得,將跳層連接用到了極致。如果設定每一層l 的非線性操作是如下表達式:Hl(.)。這個非線性操作可以是卷積、批標準化(Batch Normalization,BN)、線性整流函數(Rectified Linear Unit,ReLU)、池化,等等。而每一層的輸出是:Xl,對于殘差網絡(Residual Networks,ResNet)來說,每一層的輸出只是當前輸出疊加上一層輸出的結果[17],計算如式(2)所示:

而在密集連接模塊中,是每一層都疊加了前面所有層的輸出結果,即:

密集連接網絡主要有以下兩個優點:①可以減輕在訓練過程中梯度消散的問題。該網絡反向傳播時每一層都會接受它后面所有層的梯度信號,所以不會出現網絡越深,接近輸入層的梯度會越來越小的情況。②密集連接中會有大量的特征被復用,所以只要使用少量的卷積核就可以生成大量的特征,因此卷積核數目不會太多,最終網絡模型也會比較小[18]。所以在較淺的網絡結構中,在相同精度下,使用了密集連接后,參數量和計算量都會大量減少。

圖5 密集連接網絡結構
為了降低參數量的同時保證準確率,采用密集連接網絡,將增加尺度后的Tiny-YOLOv3 網絡中的部分卷積層的網絡結構修改為密集連接結構,使得其中的部分卷積層的輸入為它前面的多層卷積特征圖。同時對目標檢測層(即YOLO 層)也進行了密集連接,使每個目標檢測層都接受它前面所有目標檢測層的特征作為輸入,同時由于部分網絡層連接了多層的輸入,所以在進行目標檢測前需要進行多次上采樣。經過尺度及深度增加和密集連接后的網絡結構圖如圖6 所示。

圖6 改進后Tiny-YOLOv3網絡模型
由圖6 可知,Improved Tiny-YOLOv3 網絡的卷積層卷積核個數都較少,卷積層的參數經計算有1597360個,減少了嵌入式平臺運行該網絡的存儲需求。
目前國內在交通標識檢測方面的公開交通標識別數據集有CCTSDB(長沙交通標識數據集)等。CCTSDB 數據集包含各種場景下攝像頭采集的交通標識圖像,其中訓練集為上述數據集中隨機的3500 張,測試集為上述數據集中的隨機的1000 張,驗證集為上述數據集中的隨機500 張。數據集共分3 個類別:warning、prohibitory、mandatory。其中 warning 是警告標識,prohibitory 是禁止標識,mandatory 是指示標識。因此,本文基于公開數據集CCTSDB 對我們提出的模型進行訓練和測試。
本文的實驗環境配置如下:
訓練環境及參數配置如下:Intel Core i7-6700 3.4GHz 處理器;顯卡為顯存12GB 的NVIDIA Titan X;Ubuntu 16.04 64 位操作系統;深度學習框架為Dark-Net。 Tiny-YOLOv3、Improved Tiny-YOLOv3 及 YOLOv3 的網絡參數配置如下:訓練框架為DarkNet,動量為0.9,權重衰減為0.0005,迭代次數為10000,學習率設置為 0.001,Tiny-YOLOv3、Improved Tiny-YOLOv3的預訓練模型為Tiny-YOLOv3.conv15,YOLOv3 的預訓練模型為darknet53.conv.74。Faster R-CNN 的網絡參數配置如下:訓練框架為Caffe,動量為0.9,權重衰減為0.0005,迭代次數為10000,學習率設置為0.001,訓練方式為end to end(端到端)方式。
測試環境及參數配置如下:NVIDIA Jetson TX2,Quad ARM A57/2MB L2 處理器,8GB RAM。
針對準確率以及考慮將網絡在硬件上實現等問題,選擇了平均精確度均值MAP(Mean Average Precision)、召回率 Recall、參數量大?。≒arameters)及運行時間(Time)作為硬件平臺下運動目標檢測模型的評價指標。
將本文提出的網絡以測試集結果的召回率(Recall)為橫坐標,精確率(Precision)為縱坐標,最終繪制出P-R 曲線。計算P 和R 的公式分別為:

上式中,TP 表示正確檢測到的交通標識,FN 表示沒有被檢測到的交通標識,FP 表示被錯誤檢測到的交通標識。上述PR 曲線下的面積即為AP(該類的平均準確率),圖7 為各標識的PR 曲線圖。而對于每一個類別均求得其AP 最終取均值即為MAP。將改進前網絡的各類AP 值與改進后網絡的AP 值進行對比,顯然改進后各類的AP 要略大一點。
表1 為同等硬件環境和同一個數據集,不同網絡對交通標識檢測的測試結果。其中Improved Tiny-YOLOv3 相比于原Tiny-YOLOv3,降低了參數量的同時,準確率和召回率都得到了提高。改進后的運行時間相較于原網絡,雖然略慢了一些,但平均檢測時間也只有0.01s,充分滿足實時檢測的要求。同時,本文提出的網絡在準確率只略低于YOLOv3 的情況下,參數量得到了大大降低,更加利于將模型應用到嵌入式平臺。

表1 不同模型實驗結果

圖7 不同標識PR曲線圖
表2 為本文實驗結果與其他論文中對交通標識檢測的實驗結果對比??梢钥闯霰疚奶岢龅哪P拖噍^于它們來說無論在準確率上還是召回率和執行時間上都具有更好的性能。

表2 Improved Tiny-YOLOv3 與其他論文模型對比
為了更好地觀察本文方法的準確率提升效果,我們給出了原Tiny-YOLOv3 和Improved Tiny-YOLOv3網絡測試圖片的結果示例(左邊為原Tiny-YOLOv3 結果,右邊為Improved Tiny-YOLOv3 結果)。如圖8 所示,原Tiny-YOLOv3 遺漏的交通標識,Improved Tiny-YOLOv3 都成功檢測。
本文基于嵌入式平臺提出了一種基于改進的Tiny-YOLOV3 的交通標識檢測方法,對候選框以及數據進行預處理使網絡更適用于交通標識的檢測、通過增加卷積層及建立輸出為8 倍降采樣的目標檢測層減少漏檢錯檢的概率,最后為了減少參數壓縮網絡,將密集連接的概念應用到了整個網絡中,對卷積層和目標檢測層都進行了密集連接。改進后的算法不僅在準確率及召回率上有所提升,并且還降低了網絡在嵌入式平臺上存儲空間的需求。為了進一步降低網絡運行功耗以便實際應用在智能交通系統中,本文的進一步目標是在FPGA 嵌入式平臺上實現該網絡。

圖8 改進前后測試結果對比