邵葉秦,周昆陽,鄭澤斌,向 陽,唐宇亮,施 佺
(1.南通大學(xué) 交通與土木工程學(xué)院,江蘇 南通 226019;2.南通大學(xué) 張謇學(xué)院,江蘇 南通 226019)
交通信號燈是車輛駕駛過程中的重要標(biāo)志信息。目前,輔助駕駛或自動駕駛的移動端對交通信號燈的識別準(zhǔn)確率較低、實時性較差,存在很大的安全隱患。因此,準(zhǔn)確、高效的交通信號燈識別是輔助駕駛和自動駕駛的重要研究方向?,F(xiàn)有的交通信號燈檢測與識別算法主要分為兩類:基于圖像處理的傳統(tǒng)方法和基于神經(jīng)網(wǎng)絡(luò)的方法。
基于傳統(tǒng)圖像處理的方法主要利用交通信號燈的顏色(紅、綠等)和形狀(一般圓形)特征完成檢測與識別[1-3]。這些傳統(tǒng)的方法對于環(huán)境的敏感度較高,對于不同環(huán)境光照的魯棒性較差,不利于實際使用。
基于神經(jīng)網(wǎng)絡(luò)的方法主要利用卷積神經(jīng)網(wǎng)絡(luò)去自主學(xué)習(xí)交通信號燈的深度特征,使得模型能夠在不同場景下完成交通信號燈的檢測與識別。Kim和Muller 等[4-5]使用單幀多目標(biāo)檢測(single shot multibox detection,SSD)[6]算法完成交通信號燈檢測與識別,但SSD 算法檢測準(zhǔn)確率較低。Han 等[7]通過將Faster-RCNN[8]中的特征提取網(wǎng)絡(luò)VGG16 的Pool4層去除,增大輸出特征的尺寸,使得區(qū)域生成器能夠更好地提取小物體特征;另外,引入在線難樣本挖掘策略,進一步提高模型對交通信號燈識別的準(zhǔn)確率。目前,基于經(jīng)典目標(biāo)識別算法(you look only once,YOLO)[9]模型的交通信號燈識別成為新的研究熱點。2018 年提出的YOLOv3 算法把目標(biāo)邊框定位問題轉(zhuǎn)化為回歸問題,利用多尺度特征實現(xiàn)目標(biāo)檢測,使得算法檢測速度更快、檢測精度較高、且更加通用[10-14]。然而,常用的YOLO 算法模型主干網(wǎng)絡(luò)較深,模型較大,在移動端推理速度較慢,難以實時檢測和識別交通信號燈。
近幾年提出的ShuffleNetv2[15]是一個輕量級的卷積神經(jīng)網(wǎng)絡(luò),模型小、檢測速度快。ShuffleNetv2 在提取特征過程中使用分組卷積(group convolution)和通道隨機分配(channel shuffle)來壓縮模型,大幅度減少計算量。
本文提出了一種基于改進的輕量級YOLOv3模型(Lightweight-YOLOv3,LW-YOLOv3)的交通信號燈檢測和識別方法。采用輕量級的ShuffleNetv2網(wǎng)絡(luò)代替YOLOv3 的主干網(wǎng)絡(luò);改進網(wǎng)絡(luò)結(jié)構(gòu),融合ShuffleNetv2 的低、中、高層特征組成最終的高層輸出特征,以獲得更加豐富的交通信號燈信息;基于多尺度的檢測和結(jié)果融合,完成交通信號燈的準(zhǔn)確檢測與識別。
為了實現(xiàn)輕量級YOLOv3,本文把YOLOv3 的主干(DarkNet53)替換為輕量級的ShuffleNetv2,并對ShuffleNetv2 輸出的低、中層特征進行特征變換,拼接到高層特征上,豐富交通信號燈的特征表示,并通過上采樣的方式融合多尺度的特征,利用多尺度檢測和相應(yīng)結(jié)果的融合,最終實現(xiàn)交通信號燈的快速、準(zhǔn)確識別。本文方法的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示,Convl 表示3*3 卷積,Pool 是指最大池化,resn 中的n 表示block1 的重復(fù)次數(shù),conv 表示1*1 卷積。
改進的輕量級YOLOv3 網(wǎng)絡(luò)以ShuffuleNetv2為主干,包含stage2、stage3、stage4 的3 個不同尺度的特征圖(如圖1 所示)。輸入圖像經(jīng)過stage2、stage3、stage4 多次卷積或池化操作后,特征大小僅為12×12。交通信號燈原本在輸入圖像(384×384)中就比較小,經(jīng)過一系列處理后交通信號燈特征幾乎丟失,不利于信號燈的準(zhǔn)確預(yù)測。而在ShuffleNetv2 網(wǎng)絡(luò)的低層特征中較好保存了尺寸較小物體的特征。因此,本文對ShuffleNetv2 低、中層的輸出特征進行特征變換(見圖2),然后把它們?nèi)诤系礁邔犹卣魃希鳛镾huffleNetv2 最終的特征輸出,如圖3 所示。
圖1 本文算法的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Network structure of our method
圖2 步長為2 的特征變換Fig.2 Feature transformation of step size 2
圖3 特征融合圖Fig.3 Feature fusion diagram
特征經(jīng)過stage2 后得到特征圖A1,A1經(jīng)過stage3 繼續(xù)提取特征。同時,A1經(jīng)過1*1 卷積操作減少通道數(shù),接著通過特征變換與stage4 的輸出特征在通道方向進行拼接。類似地,特征經(jīng)過stage3后得到的特征圖A2,與stage4 的輸出特征在通道方向進行拼接。這樣,拼接后的輸出特征中含有較為豐富的交通信號燈信息,能夠有效提高識別準(zhǔn)確率。這里,ShuffleNetv2 提取特征時,在每個卷積層后都加上批量標(biāo)準(zhǔn)化層(Batch Normalization)[16]和非線性激活函數(shù)層(Leaky ReLU)[17]。需要注意的是,本文未使用ShuffleNetv2 最后階段積層、全局池化層和全連接層。
為了實現(xiàn)不同尺度特征的拼接,本文使用了特征變換。特征變換是對輸入的特征圖進行維度變換(如圖2),維度1、維度2、維度3 分別是圖像的高、長和通道數(shù)。具體來說,對于stage3 的輸出特征圖,特征變換先以步長為2 在維度1 和維度2 上進行切片,再將得到的2 × 2 數(shù)據(jù)塊在維度3 上疊加,在保持特征信息的情況下,實現(xiàn)特征圖的變換。對于stage2 的輸出特征圖,特征變換除了以步長為4 在維度1 和維度2 上進行切片外,其他和stage3 相同。經(jīng)過特征變換后,stage2、stage3 輸出的特征圖大小和stage4 相等。通過特征拼接,ShuffleNetv2 輸出大小為12 × 12 的特征圖,通道數(shù)為128+256 +464=848。
除了在ShuffleNetv2 網(wǎng)絡(luò)結(jié)構(gòu)上通過特征變換豐富交通信號燈的輸出特征,本文還基于高、中、低層的特征(圖1 中的y1、y2、y3),通過多尺度的目標(biāo)檢測,提高小目標(biāo)檢測的準(zhǔn)確率,如圖4 所示,SBL、Conv 與圖1 中的SBL、Conv 含義相同,而3*3、1*1 表示卷積核大小。
圖4 基于多尺度的目標(biāo)檢測示意圖Fig.4 Multiscale-based object detection
整個網(wǎng)絡(luò)分為低、中、高3 個尺度。低尺度的特征通過上采樣,融入到高尺度的特征中。由于YOLOv3 將目標(biāo)檢測問題轉(zhuǎn)化成回歸問題,因此,在每個尺度的預(yù)測過程中,如果交通信號燈的中心點落入到某個網(wǎng)格當(dāng)中,那么該網(wǎng)格就負責(zé)預(yù)測交通信號燈的類別與位置。通過預(yù)測,本文得到結(jié)果向量M=12 × 12 × B ×(N+C+x+y+w+h),其中,B 為目標(biāo)邊界框個數(shù),N 為目標(biāo)類別的數(shù)量,C為目標(biāo)邊框置信度,x 和y 代表預(yù)測的目標(biāo)邊框的中心,w 和h 代表預(yù)測的目標(biāo)邊框的寬和高[18]。由于最小尺度的特征圖y1為12 × 12,因此將圖像分成12 × 12 的網(wǎng)格。這里,圖4 中的Detection Block 是由3 個1*1 的卷積塊和2 個3*3 的卷積塊交替連接實現(xiàn)的。
本文使用3 個尺度得到多個預(yù)測結(jié)果,需要將它們?nèi)诤掀饋?。在檢測過程中,同一個目標(biāo)可能會有多個檢測框,因此本文使用非極大值抑制算法[19](non-maximum suppression)消除那些置信度較低的檢測框,使得每個物體只保留1 個檢測框,完成檢測結(jié)果的融合。
YOLOv3 原本的先驗框(anchor box)是在VOC2007和VOC2012 兩個通用的目標(biāo)檢測數(shù)據(jù)集上確定的,但并不適合交通信號燈。為了提高模型的針對性,本文使用K-means[20]算法在LaRa 數(shù)據(jù)集上重新確定YOLOv3 的先驗框。具體流程如下:1)隨機在樣本中選取K 個聚類對象,并以此作為聚類中心(本文的K 個聚類對象即為K 個anchor box);2)分別計算每一個樣本對象到K 個聚類中心的距離,并將每個樣本對象分配到和其距離最近的一個聚類中心,被分配的樣本對象組成一個新的聚類;3)根據(jù)當(dāng)前樣本重新計算每個聚類中心;4)不斷地重復(fù)步驟2)和3)直到最終K 個聚類中心保持穩(wěn)定。本文中使用IOU 作為樣本和聚類中心間的距離函數(shù)
其中:box 表示標(biāo)注矩形框;centroid 表示聚類中心的矩形框;IOU 表示聚類中心的矩形框和標(biāo)注矩形框的交并比。為了不影響準(zhǔn)確率,同時提高檢測速度,本文選擇了9 個先驗框(即K=9),其寬和長分別為(5,16)、(7,24)、(8,26)、(3,12)、(8,24)、(7,22)、(4,13)、(6,19)、(13,38)。
2.1.1 數(shù)據(jù)集
本文使用LaRa 公開數(shù)據(jù)集[21],一共包含9 168張帶標(biāo)簽圖像,每個圖像的分辨率為640 × 480。其中,訓(xùn)練集7 500 張,測試集1 668 張。數(shù)據(jù)集原始標(biāo)簽包括紅燈、黃燈、綠燈、模糊4 類,其中紅燈5 280 張,黃燈58 張,綠燈3 381 張,模糊449 張。
本文采用隨機縮放、隨機亮度調(diào)整、隨機對比度調(diào)整、隨機飽和度調(diào)整等方法來增強數(shù)據(jù)集。其中,隨機縮放倍數(shù)是8~12 之間的隨機數(shù);隨機亮度調(diào)整設(shè)定閾值為0.5,并在區(qū)間內(nèi)隨機選取1 個數(shù)a,如果a≥5,則亮度調(diào)整比例為a,如果a <0.5,則在區(qū)間(-a,a)內(nèi)隨機抽1 個數(shù)b,調(diào)整比例即為b +1。隨機對比度調(diào)整、隨機飽和度調(diào)整與隨機亮度調(diào)整方法相同,閾值均為0.5。
2.1.2 實驗平臺
模型訓(xùn)練平臺為百度AI Studio,32 GB 內(nèi)存,Intel(R)Xeon(R)Gold 6271C CPU@ 2.60GHz,Tesla V100 16 GB GPU。編程環(huán)境為Python3.7,深度學(xué)習(xí)框架為PaddlePaddle 1.8.0。移動端測試平臺為Nvidia Jetson TX2,256-core Nvidia PascalTMGPU,8 GB 顯存,32 GB 內(nèi)存,通過PaddleLite 部署模型,編程環(huán)境為Python3.6。
為了比較不同算法的性能,本文采用平均精度均值Pma(mean average precision)、Rmd(missing detection rate)、單張圖片檢測時間t(infer time)、模型大小s 作為衡量指標(biāo)。
2.2.1 主干網(wǎng)絡(luò)對比
為了確保實驗的公平性,對比實驗全部在LaRa數(shù)據(jù)集上進行。其中,將ShuffleNet-YOLOv3 方法YOLOv3 的backbone 替換為ShuffleNetv1;將ShuffleNetv2-YOLOv3 方法backbone 替換為ShuffleNetv2。三者實驗對比如表1 所示。
表1 主干網(wǎng)絡(luò)測試結(jié)果對比Tab.1 Results comparison of backbones
從實驗結(jié)果可看出,YOLOv3 的主干替換為輕量級神經(jīng)網(wǎng)絡(luò)ShuffleNetv1 和ShuffleNetv2 后,雖然在平均精度均值和漏檢率上的性能有所降低,但模型的大小僅為YOLOv3 的1/8,檢測速度提高為3倍,尤其是ShuffleNetv2 更加明顯,因此更適用于實際交通信號燈的檢測。若要將YOLOv3 推理時間降低到與ShuffleNetv2-YOLOv3 基本一致,需要在主流的Tesla V100 GPU 上,進一步采用TensorRT 推理加速技術(shù)。最終,YOLOv3 的檢測時間可達到64.03 ms,接近ShuffleNet-YOLOv3 的推理時間。
2.2.2 特征變換對比
實驗進一步對比了添加特征變換前后的ShuffleNetv2-YOLOv3 方法和本文方法,如表2 所示。
表2 特征變換結(jié)果對比Tab.2 Results comparison of feature transformation
從表2 可以看出,通過特征變換,本文方法增強了對物體檢測能力,相較于ShuffleNetv2-YOLOv3有著更高的平均精度均值和更低的漏檢率,僅增加了很少的檢測時間。
2.2.3 輕量型模型對比
為了驗證模型在移動端上的性能,我們將本文方法和最新的幾個輕量級YOLOv3 模型(YOLOv3-Tiny 和MobileNetV2-YOLOv3)在Nvidia 移動端設(shè)備Jetson TX2 上進行測試,實驗采用之前的測試集,輸入模型圖像大小為384×384,實驗結(jié)果如表3 所示。
表3 輕量級模型結(jié)果對比Tab.3 Comparison of results on lightweight models
從實驗結(jié)果可以看出,本文方法在平均精度均值和漏檢率上都優(yōu)于另外兩個模型。本文方法的單張圖像檢測時間和MobileNetV2-YOLOv3、YOLOv3-Tiny 相當(dāng)。綜合平均精度均值、檢測速度和漏檢率,本文方法在速度相當(dāng)?shù)那闆r下,平均精度均值較高,更適合應(yīng)用于實際移動端的識別。雖然本文方法相較于其他輕量型模型具有較高的平均精度均值和較低的漏檢率,但針對模糊圖片中交通信號燈的誤檢率和漏檢率較高。一方面因為模糊圖片在訓(xùn)練數(shù)據(jù)集中包含較少,模型對這種情況學(xué)習(xí)不夠充分;另一方面因為本文模型為輕量級模型,參數(shù)量較少,對各種復(fù)雜場景的適應(yīng)能力還需提高。
2.2.4 檢測結(jié)果對比
不同輕量級YOLO 模型的信號燈檢測結(jié)果對比如圖5 所示。其中,圖5(a)是原圖像,圖5(b)為YOLOv3-Tiny 檢測結(jié)果,圖5(c)為MobileNetV2-YOLOv3 檢測結(jié)果,圖5(d)為本文的LW-YOLOv3檢測結(jié)果。從檢測結(jié)果可以看出:本文的輕量級YOLOv3 相較于其他3 個輕量級YOLOv3 模型,漏檢率較低,對圖像中較遠的交通信號燈也可以檢測到。YOLOv3-Tiny 漏檢率最高,很多分辨率較低的交通信號燈未能檢測到。
圖5 不同輕量級YOLOv3 模型檢測結(jié)果對比Fig.5 Comparison of detection results of lightweight YOLOv3 models
本文提出了一種改進的基于ShuffleNetv2 的輕量級YOLOv3 模型,實現(xiàn)交通信號燈的檢測與識別。算法將YOLOv3 的主干替換為ShuffleNetv2 并改進ShuffleNetv2 的網(wǎng)絡(luò)結(jié)構(gòu),通過融合來自低、中、高層的特征組成高層的輸出特征,不僅增加了交通信號燈的特征,也使得YOLOv3 多尺度預(yù)測的特征圖中具有更豐富的交通信號燈信息。LaRa 數(shù)據(jù)集上的實驗表明,本文方法的平均精度均值達到87.21%,雖然比YOLOv3 的精度有所下降,但檢測速度是YOLOv3 的3 倍,同時模型大小僅為YOLOv3 的1/8。移動端設(shè)備Jeston TX2 上的實驗結(jié)果表明,本文方法在檢測速度相當(dāng)?shù)那闆r下,平均精度均值明顯高于其他輕量級YOLOv3 模型。
目前交通信號燈信息的自動獲取主要通過車路協(xié)同和交通信號燈檢測識別等技術(shù)實現(xiàn)。車路協(xié)同技術(shù)依托先進的無線通信和新一代互聯(lián)網(wǎng)等技術(shù),主動將紅綠燈信息發(fā)送給車輛,避免了環(huán)境、天氣等因素的干擾,然而這種新型技術(shù)尚未成熟,目前還未能大范圍落地使用,而且其對通信要求高、存在延遲等問題。而作為單車智能的交通信號燈檢測識別,特別是基于深度學(xué)習(xí)的交通信號燈檢測識別方法具有延遲小、實現(xiàn)方便、主動感知等特點,適用于沒有路測感知的場合,然而也存在感知死角等問題。因此,在未來的發(fā)展過程中,這兩種技術(shù)將互為補充,魯棒地獲取交通信號燈信息。