張小雪,黃 巍
(1.武漢工程大學計算機科學與工程學院,湖北 武漢 430073;2.武漢工程大學智能機器人湖北省重點實驗室,湖北武漢 430073)
交通標志檢測系統部署在車輛等資源受限平臺上,這些平臺沒有較強的運算能力及較大的內存[1]。因此,交通標志檢測模型不能太大,不然無法部署在這些資源受限的平臺上。文獻[2]引入了FireModule以及short-cut 對模型進行壓縮優化,減少了模型占用的內存空間,提高了檢測速度,但是檢測精度下降了。為了提高交通標志的檢測精度,文獻[3]提出了融合注意力機制的Cascaded R-CNN 算法,在CCTSDB數據集上的準確率超過了99%,但是檢測速度只有7.6 FPS。考慮到實際交通場景的檢測需求,設計的交通標志檢測算法要兼顧精度高、速度快、模型容量小的特點。因此,該文對Tiny-YOLOv4 算法進行研究,改進了Tiny-YOLOv4 算法以提高模型的檢測精度,同時兼顧交通標志檢測的速度和模型內存容量要求,提高交通標志檢測算法的綜合性能。
主流的檢測算法可以分為基于候選區域的目標檢測算法,如Faster RCNN[4]、R-FCN[5]、Mask RCNN[6]等,基于回歸的目標檢測算法,如SSD[7]、YOLOv1[8]、YOLOv2[9]、YOLOv3[10]、YOLOv4[11]等。Tiny-YOLOv4是YOLOv4 的簡化,網絡模型相對簡單,速度較YOLOv4 提升了多倍,對硬件的要求不高,但檢測精度有所下降。
Tiny-YOLOv4 網絡結構如圖1 所示,它由主干特征提取網絡和特征金字塔網絡(FPN)[12]兩部分組成。主干特征提取網絡采用了跨階段局部網絡(CSPNet)[13],實現了更豐富的梯度組合,保證了網絡的學習能力。通過特征金字塔網絡,得到13×13 和26×26 大小的預測特征圖,兩種不同尺度的預測同時構成Tiny-YOLOv4 網絡的檢測輸出結果。
通常情況下卷積神經網絡的層數越深,它就可以挖掘出圖像中更高級抽象的語義特征。但是隨著網絡層數加深,經過多次卷積后,可能會導致檢測目標特征的削弱和消失,特征不能被很好地表征[14]。Tiny-YOLOv4 網絡是基于網格點對一定區域進行檢測。當輸入圖像的分辨率大小是416×416 時,經過特征提取網絡和FPN 后會得到兩個預測特征層,大小分別是13×13、26×26。13×13 特征圖的每一個像素點的感受野大小為32×32,交通標志屬于小目標物體,它在整張圖片中占用的尺寸很小,因此它在13×13 特征圖上占有的空間很小甚至消失,很難在13×13 特征圖上被檢測出。26×26 特征圖上的每一個像素點的感受野大小為16×16,對于小尺寸的交通標志,它在26×26 特征圖上占有的空間也很小甚至消失。交通標志目標通常比較密集,在同一個網格內的交通標志目標可能在卷積后被映射到同一個區域,這樣會導致一些小目標不能被檢測出來。原網絡的兩個預測特征層對小目標檢測和密集交通標志檢測的效果不佳,因此,刪除尺度為13×13 和26×26 的預測特征層,改用52×52 和104×104 更大尺度的預測特征層,提高小目標交通標志和密集交通標志的檢測精度。
目標檢測網絡淺層高分辨率特征圖提取的是圖像的細節信息[15],如邊緣、位置信息等。而深層低分辨率特征圖提取的是圖像的抽象信息。為了使52×52 和104×104 預測特征層既包含豐富的位置細節信息又包含目標抽象語義信息,在原網絡的基礎上,將26×26 特征圖上采樣與特征提取網絡的第三次下采樣得到的52×52 特征圖進行融合,得到52×52 的預測特征圖,將52×52 的特征圖繼續上采樣與特征提取網的第二次下采樣得到的104×104 特征圖進行特征融合,得到104×104的預測特征圖。改進后的特征金字塔網絡(FPN)使得淺層高分辨特征圖融入了深層低分辨率特征圖中的抽象語義信息,增強了表達目標特征的能力。
為了增強Tiny-YOLOv4 主干特征提取網絡的特征提取能力,使得特征圖中包含目標更多的信息,將第二次卷積替換為CSPNet 結構,如圖2 所示。該結構中包含殘差結構,實現了更豐富的梯度組合。替換后,網絡的深度加深,網絡的學習能力也提高了,此時兩次下采樣得到的104×104 特征圖相比原網絡包含目標更多的特征信息。在最后一層CSPNet 結構后加入SPP 結構,如圖3 所示。對輸入特征圖分別進行5、9、13 三種尺寸的最大池化,然后將池化后的結果與輸入特征圖進行堆疊,實現了局部特征和全局特征的融合,這樣可以提取每一張圖片多方面的特征,提高交通標志的檢測精度,并且也不會增加額外的參數。同時將原來主干特征提取網絡的最后一層卷積的卷積核大小由3×3 改成1×1,進一步減少模型的參數量和計算量。

圖2 CSPNet 結構

圖3 SPP 結構
改進后的Tiny-YOLOv4 網絡結構如圖4 所示。圖中各個模塊含義如下:DBL 模塊包括卷積、批標準化及帶泄露修正線性單元(Leaky ReLU)激活函數;CSPNet 結構如圖2 所示,是跨階段局部網絡;SPP代表空間金字塔池化,如圖3 所示;UpSampling 表示上采樣,使用最近鄰插值;Concat 表示對特征圖進行堆疊;Conv 表示一次卷積。

圖4 改進的Tiny-YOLOv4網絡結構
文中實驗在服務器上訓練,服務器上有四個GPU,型號為NVIDIA 1080Ti。服務器采用的操作系統為Ubuntu 系統,版本為16.04,文中實驗的算法由Keras 框架實現。訓練過程參數設置如下:輸入圖片的大小為416×416像素;采用Adam 優化器,初始學習率為0.000 1,訓練150個epoch,批量大小為8張。實驗采用的數據集是長沙理工大學中國交通標志檢測數據集(CCTSDB),CCTSDB數據集分為訓練集的15 724張圖片和測試集的400 張圖片,如圖5 所示,包含警告、禁止、指示三種類型標志。

圖5 CCTSDB數據集中交通標志種類
Tiny-YOLOv4模型默認的錨點框是針對COCO數據集的,不適合該實驗數據集,因此,實驗使用K-means聚類算法對CCTSDB 數據集進行聚類分析,得到適合該實驗數據集的錨點框。104×104 預測特征層對應的錨點框是(8,23)、(8,15)、(12,20);52×52 預測特征層對應的錨點框是(17,30)、(29,43)、(56,79)。
實驗以精確率(Precision,P)、召回率(Recall,R)、F1值、平均檢測精確度(mean Average Precision,mAP)以及每秒檢測幀數(Frame Per Second,FPS)作為評價指標。
TP 表示實際是正樣本并且預測正確的樣本數,FN 表示實際是正樣本但是預測錯誤的樣本數,FP 表示實際是負樣本但是預測錯誤的樣本數[16]。準確率的計算公式如式(1)所示:

召回率的計算公式如式(2)所示:

F1值可以對Precision和Recall進行整體評價,能夠評價不同算法的優劣。F1 值的計算公式如式(3)所示:

AP(Average Precision)能夠衡量模型在每個類別上性能的優劣。AP 的計算公式如式(4)所示:

mAP 是所有類別上AP 的平均值,它能夠衡量模型在所有類別上性能的優劣,mAP的計算公式如式(5)所示。FPS 是每秒檢測圖片數,用來評價一個檢測模型的檢測速度,FPS 越大,檢測速度越快。

2.3.1 消融實驗
為了驗證前述各部分改進方法的有效性,在CCTSDB 數據集上進行消融實驗,以Tiny-YOLOv4網絡為基礎,組合使用前述的CSPNet、SPP、改進的FPN 來驗證不同改進方法對于網絡性能的提升。以Precision、Recall、F1 和mAP(IOU 閾值取0.5)為評價指標,消融實驗結果如表1 所示。

表1 CCTSDB數據集上的消融實驗結果
對比Tiny-YOLOv4和模型CSPNet、SPP、改進FPN可知,CSPNet、SPP、改進FPN 對于模型的性能均有所提升,在mAP 上分別提高了2.21%、1.7%、6.32%。Tiny-YOLOv4 在應用了全部改進方法后實現了最佳的檢測性能,在Precision、Recall、F1、mAP 上均取得了最優的結果,與原網絡模型相比,分別提升了12.14%、6.38%、9%,13.4%。根據消融實驗結果可知,CSPNet、SPP、改進FPN 對于網絡性能的提升是有效的。
2.3.2 與其他目標檢測算法對比
為了進一步驗證改進后算法在檢測精度、檢測速度以及模型內存容量上的綜合性能效果,該文選 取YOLOv4、Tiny-YOLOv4、RetinaNet-Resnet50、Strong Tiny-YOLOv3[2]、Cascaded R-CNN[3]五種目標檢測算法與該文算法進行對比,對比實驗在CCTSDB 數據集上進行,選擇Precision、Recall、F1、mAP、FPS、模型內存容量六項指標對各個算法進行評價,對比實驗結果如表2 所示。Strong Tiny-YOLOv3 和Cascaded R-CNN 的實驗結果來文獻[2-3]。

表2 CCTSDB數據集上對比實驗結果
Cascaded R-CNN 模型在Precision 和F1 上取得了最優結果,但是該模型的檢測速度最慢;YOLOv4模型在Recall和mAP上取得了最優結果,但是該模型的檢測速度與該文算法相比太慢,并且該文算法的mAP與其相比只相差1.09%,差距并不大,而檢測速度約是其5 倍,模型內存容量相比其減少了233.2 MB;Tiny-YOLOv4 模型在FPS 上取得了最優結果,但是該文算法與其相比,FPS 相差不大,且模型內存容量相比其減少了11.8 MB,mAP 相比其增加了13.4%,在Precision、Recall、F1上的檢測效果均比其好;Strong Tiny-YOLOv3 模型在模型內存容量上取得了最優結果,但是該文算法與其相比,模型內存容量相差不大,檢測速度約是其6 倍,且模型的mAP 值相比其也提升了3.23%。
雖然改進Tiny-YOLOv4 模型在單個指標上均未達到最優結果,但綜合檢測精度、檢測速度以及模型內存容量三個方面評價,改進Tiny-YOLOv4 模型的效果優于其他檢測模型,它的檢測精度為88.79%mAP,檢測速度達到了200 FPS,可以快速檢測交通標志,模型內存容量為10.8 MB,可以搭載在車輛等資源受限的平臺上,對平臺的計算量和內存容量要求不高。
2.3.3 圖片檢測結果
為了進一步證明改進Tiny-YOLOv4 網絡的檢測效果,隨機抽取測試集中的三張圖片進行測試,結果如圖6 所示。

圖6 改進Tiny-YOLOv4前后的檢測結果
從圖6 可以看出,圖6(a)沒有檢測出兩個尺寸比較小的交通標志,而圖6(b)檢測出了兩個尺寸比較小的交通標志;圖6(c)和圖6(d)都漏檢了一個交通標志,而圖6(d)和圖6(f)可以正確地檢測出所有的交通標志。因此,改進Tiny-YOLOv4 檢測算法可以提高對小目標交通標志的檢測率,降低交通標志檢測的漏檢率。
考慮到實際交通場景的檢測需求,設計的算法要兼顧精度、速度、模型容量的要求,該文基于Tiny-YOLOv4 算法提出了改進Tiny-YOLOv4 快速交通標志檢測算法。對原網絡的主干特征提取網進行改進,引入了CSPNet 和SPP 模塊,加深了主干特征提取網絡的深度,減少了網絡的參數量,增強了主干特征提取網的學習能力。改進FPN 結構,選用更大尺度的預測特征層,增強了對小目標交通標志和密集交通標志的檢測精度,進一步減少了模型的參數量。從CCTSDB 數據集上進行的消融實驗可以看出,這三種改進方法對于原網絡性能提升的有效性。通過該文算法與其他交通標志檢測算法在CCTSDB 數據集上的對比實驗可知,該文算法在檢測精度、檢測速度以及模型內存容量綜合性能上達到最佳,能夠同時兼顧三方面的要求。