章羽,羅素云
(201620 上海市 上海工程技術大學 機械與汽車工程學院)
交通標志規定了車輛在道路上的行駛規范,是必須要遵守的基本規則。智能駕駛汽車在公路運行的首要任務就是能準確識別交通標志,按照交通標志安全駕駛[1]。因此,交通標志的檢測和識別對智能車輛安全行駛具有重大意義[2]。
近年來,深度學習在視覺領域表現優異,交通標志的檢測也由原來的傳統機器學習方法轉為深度學習方法[3]。深度學習在目標檢測領域主要有2 條技術路線:一是Anchor-based,例如Faster-RCNN[4]、SSD[5]算法等;二是Anchor-free,CornerNet[6]、FCOS[7]和FSAF[8]算法等。在Anchorbased 技術路線下,又分為單階段目標檢測算法和雙階段目標檢測算法[9]。單階段目標檢測算法有YOLO 系列和Retina-Net[10]等,雙階段目標檢測算法有RCNN[11],SPP-Net[12]和Fast R-CNN[13]等。單階段算法速度快、消耗算力少,而雙階段算法檢測精度高,但速度稍慢。李一鳴等[14]采用YOLOv5s對軋鋼表面缺陷的檢測,能有效檢測6 種不同形態的表面缺陷,有助于生產人員準確把握軋鋼情況;宋甜等[15]通過改進YOLOv5s 對車載紅外圖像目標進行了檢測研究,通過嵌入注意力模塊和替換CIoU 損失函數,成功將mAP@0.5 的值提升了3.4%,實現了對車載紅外圖像目標的高效檢測。YOLOV5s 模型具有很強的泛化性能,可對交通標志實現準確檢測。由于本研究所應用的Jetsonnano 開發板最大功率只有10 W,算力相對較小,同時還要滿足交通標志檢測的實時性要求,因此決定選用YOLOv5s 作為基礎模型。
本研究通過注意力機制SENet[16]和CBAM 提升YOLOv5s 的目標檢測精度,將YOLOv5s 模型的卷積核數量縮減至原來的一半,得到的輕量化模型既達到交通標志檢測的精度要求,也滿足了實時性的需要,有助于智能車輛在道路上實時安全行駛。
根據網絡模型C3 個數和卷積核數量的不同,YOLOv5 分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x 等版本。其中YOLOv5s 模型最小,計算量最低,由于本研究是在嵌入式設備上進行部署,所以選用YOLOv5s 模型作為基礎檢測模型。YOLOv5s 網絡模型結構如圖1 所示。

圖1 YOLOv5s 結構圖Fig.1 YOLOv5s structure diagram
SE 模塊全名為Squeeze-and-Excitation block,主要由4 部分組成:轉換操作(Ftr)、擠壓操作(Fsq)、激勵操作(Fex)和比例操作(Fscale)。基于注意力機制的SE 模塊原理圖如圖2 所示,SE 模塊具體實現圖如圖3 所示。轉換操作是一個常規卷積過程,經過轉換操作后得到一個三維矩陣,對應圖2 中的Ftr 操作。擠壓操作對應圖2 中的Fsq 操作,其使C 個特征圖最后變成1×1×C 的實數數列,圖3 中Global pooling 區域就是擠壓操作。激勵操作對應圖3 中方框區域,用來全面捕獲通道依賴性。比例操作對應圖2 中的Fscale,相當于把輸入特征圖的每一通道中的每個值都乘以一個權重值,從而得到一個對于不同通道具有不同關注度的特征圖。

圖2 SE 模塊原理圖Fig.2 Schematic diagram of SE module

圖3 SE 模塊具體實現圖Fig.3 Concrete implementation of SE module
原C3 模塊主要針對特征圖進行卷積(Convolution)、堆疊(Concat)、相加(add)操作。卷積是對特征圖空間維度的變換,堆疊是對特征圖通道維度的增加,相加是特征圖對應通道的像素值的相加,相加屬于一種信息融合。這些操作都忽視了對特征圖不同通道維度的關注,而SENet 注意力機制重點解決的就是對特征圖不同通道的不同關注度,SENet 的應用增強了特征圖有效通道的權重,減小了無效或效果差的特征圖通道的權重,因而SEC3 具有更強的特征提取能力。
將SENet 添加到BottleNeck 中的2 個Conv 模塊中間,就形成了SEBottleNeck,將SEBottleNeck放入原C3 中BottleNeck 的位置,就形成了SEC3 模塊。用SEC3 模塊代替YOLOv5s 中的backbone 部分的C3 模塊,將得到的新網絡命名為S-YOLOv5s,其結構簡圖如圖4 所示。

圖4 S-YOLOv5s 結構圖Fig.4 S tructure diagram of S-YOLOv5s
Convolutional Block Attention Module(CBAM)表示卷積模塊的注意力機制模塊,CBAM 由一個通道注意力模塊和一個空間注意力模塊組成,如圖5 所示。

圖5 CBAM 結構圖Fig.5 CBAM structure diagram
先對輸入特征分別進行一個空間維度的全局平均池化和最大池化,再將其分別送入一個2 層的神經網絡中,此時得到的2個特征相加后,經過一個Sigmoid 函數,就得到了通道注意力權值。通道注意力模塊(CAM)結構如圖6 所示。

圖6 CAM 結構圖Fig.6 CAM structure diagram
從通道注意力模塊來的特征圖,先分別進行一個通道維度的平均池化和最大池化,并將所得的2 層在通道維度上拼接,送入一個7×7 的卷積層,經Sigmoid 函數處理后,就得到了空間注意力權值。空間注意力模塊(SAM)結構如圖7 所示。

圖7 SAM 結構圖Fig.7 SAM structure diagram
將S-YOLOv5s 模型刪減一半卷積核后,模型的精度雖降到了92.0%,但模型的大小降到了3.98 M,只有原來的28.03%,相較于模型體積的大幅下降,模型精度的下降是可以接受的。為補償模型精度下降,選擇將CBAM 模塊融合進S-YOLOv5s 以提升精度。CBAM 注意力模塊具有關注特征圖空間維度的特性,而模型head 部分中的后3 個C3 模塊負責預測不同維度特征圖中物體的具體位置,位置本身是一種空間信息,因此,本研究將CBAM 融合進head 的后3 個C3 模塊中,形成C3CBAM模塊。融合了CBAM模塊后,將模型命名為SC-YOLOv5s。SC-YOLOv5s 模型結構如圖8 所示。

圖8 SC-YOLOv5s 結構Fig.8 SC-YOLOv5s structure
YOLOv5s 模型訓練結果如圖9 所示,在沒有添加任何模塊和優化的前提下,YOLOv5s 的精度達到了93.6%,說明YOLOv5s 模型本身的特征提取能力非常強。在僅訓練50 個epoch 時,就達到了90%的精度,說明該模型對交通標志檢測任務有很高的適用性。因此,本研究在保持S-YOLOv5s中各小模塊各自結構和功能完整的前提下,削減各模塊中卷積核的個數至原來的一半,大幅削減模型的參數量,以達到模型輕量化的目的。采用這一策略后的實驗結果證明其可行,輕量化后的模型訓練結果如圖10 所示。在100 個epoch 時,mAP 就達到了90%的精度,說明該輕量化模型的收斂速度還是非常快的;訓練結束時,該模型精度達到了92.0%,相較于原始精度94.6%,只有略微下降,但模型大小卻從14.2 M 降低到了3.98 M,說明這次輕量化是非常有效的。

圖9 YOLOV5s 訓練圖Fig.9 YOLOv5s training chart

圖10 輕量化模型訓Fig.10 Lightweight model training
從圖9 和圖10 的對比可以看出,輕量化模型相較于原模型的一個較大不足是,達到最高精度所需要的訓練次數明顯上升。原模型訓練到120 個epoch 時,基本就能達到最高精度,后續訓練精度不再上升,且會有微小的下降。
而輕量化模型在達到90%訓練精度以前所需epoch 數是原模型的2 倍,且90%精度以后的訓練提升極其緩慢,由圖10 可見,曲線一直有一種微微向上的趨勢,但增長極慢。訓練到260個epoch時,基本達到其最高精度,即使后續接著訓練,精度也不再提升。
TensorRT 是英偉達官方推出的一個高性能深度學習推理優化器,能夠為深度學習模型提供低延遲、高吞吐率的部署推理。Jetson nano B01 是英偉達官方推出的嵌入式開發板,深度學習模型運用TensorRT 技術部署在該開發板上,可以使得深度學習模型的推理速度明顯加快。
先將SC-YOLOv5s 模型訓練后所得到的.pt 文件轉化為.wts文件,然后在Jetson nano上執行編譯操作,此時會生成一個YOLOv5 文件,再利用YOLOv5 文件將.wts 文件轉化為.engine 文件,利用這個.engine文件,執行反序列化操作就可以將模型運行起來。至此,模型就成功部署在Jetson nano B01 上了。
本次研究使用的是騰訊公司和清華大學合作制作的交通標志數據集TT100K,該數據集中含有訓練圖片6 105 張,測試圖片3 071 張,交通標志種類45 個。由于訓練圖片偏少,本實驗先將訓練圖片和測試圖片混合成一個數據集,再將其打亂分割。在混合中發現訓練集和測試集有6 張圖片重復,將其去除,得到9 170 張圖片;再將其分割,得到訓練圖片7 256 張,驗證圖片957 張,測試圖片957 張。
本研究訓練過程是在Ubuntu18.04 操作系統下完成的,GPU 為A4000 顯卡,CUDA 版本為11.1,Pytorch 版本為1.8.1,python 版本為3.8。本研究設置的初始學習率為0.01,優化器為SGD,學習率采用余弦退火函數,在訓練的初始階段采用訓練預熱方式,減少震蕩,使模型收斂速度更快。
本次研究采用mAP評估模型的準確率,采用FPS評估模型的識別速度。mAP為各類別AP的平均值,一般以P-R曲線所圍成的面積的平均值計算,mAP越大說明網絡識別物體的準確度越高。FPS為每秒識別的圖片數,FPS值越大說明網絡處理圖片的速度越快。計算公式分別為
式中:R(Recall)——召回率;P(Precision)——準確率;AP——單個類別的PR曲線的面積;c——類別個數;TP——正類數預測為正類數的個數;FP——負類數預測為正類數的個數;FN——正類數預測為負類數的個數;TN——負類數預測為負類數的個數。
在模型輕量化之前,改進S-YOLOv5s 算法的mAP達到94.6%,與原YOLOv5s 算法相比提升了1%,說明改進的SEC3 模塊相較原始C3 模塊具有更強的特征提取能力。從圖11 可以看出,在整個訓練過程中,改進的S-YOLOv5s 模型的曲線都是在原模型之上的,說明S-YOLOv5s 模型相較原YOLOv5s 模型有一定的優越性。

圖11 4 模型訓練結果對比圖Fig.11 Comparison of training results of four models
在模型輕量化之后,由圖11 可知,輕量S-YOLOv5s 模型的mAP為92.0%,融合了CBAM而形成的SC-YOLOv5s 模型的mAP為92.9%,模型有0.9%的精度提升;在100 個epoch 以前,輕量S-YOLOv5s 模型的訓練精度略高于SC-YOLOv5s,但100 個epoch 以后,SC-YOLOv5s 模型的精度就超過了S-YOLOv5s。
在YOLOv5s 模型逐漸改進過程中,共產生4個模型,按改進順序排序:YOLOv5s →S-YOLOv5s→輕量S-YOLOv5s → SC-YOLOv5s。
從表1 可知,在經過一系列改進和優化后,相較于YOLOv5s 模型,SC-YOLOv5s 模型的體積減小了71.7%,但mAP@0.5 僅僅下降了0.7%,說明本次研究對YOLOv5s 模型的改進和優化是成功的。

表1 4 模型對比Tab.1 Comparison of four models
與其他算法的對比結果如表2 所示,在公開數據集TT100K 上,本文改進算法的體積、平均精度和檢測速度全部優于YOLOv3 和YOLOv4-Tiny,只有平均精度比YOLOv4 低1.2%,但體積和檢測速度方面本文改進算法遠遠優于YOLOv4,體積只有YOLOv4 的1.6%,檢測速度則是YOLOv4 的26.8 倍。綜合各項指標,本文算法遠優于其他算法。

表2 與其他算法對比Tab.2 Comparison with other algorithms
從圖12 和圖13 可看出,YOLOv5s 和SCYOLOv5s 都能以很高精度正確檢測出交通標志。原YOLOv5s 模型部署到Jetson nano 上,同樣采用TensorRT 技術加速推理,得到的結果是平均每張圖片的推理速度為75.76 ms,也就是FPS=13.2;而改進的YOLOv5s 模型運用TensorRT 技術部署到Jetson nano上,平均每張圖片的推理速度為41.49 ms,即FPS=24.1。改進模型的速度是原模型的1.83 倍,而mAP僅僅下降了0.7%,且FPS達到了24.1,完全滿足了交通標志實時檢測的需要。

圖12 YOLOv5s 檢測效果圖Fig.12 YOLOv5s detection rendering

圖13 SC-YOLOv5s 檢測效果圖Fig.13 SC-YOLOv5s detection rendering
快速檢測交通標志和嵌入式部署是實現智能駕駛的基礎條件。本研究在YOLOv5s 模型的基礎上提出了一種交通標志檢測的輕量算法,該算法有助于對交通標志的更高精度、更快速度的檢測。
(1)首先,對YOLOv5 模型進行了分析,選擇YOLOv5s 模型作為基礎模型;然后通過注意力機制SENet 對YOLOV5s 的backbone 部分的C3 模塊進行改進,提升整個backbone 的特征提取能力;接著刪減一半的卷積核,使模型輕量化;再將CBAM模塊融合進模型head 部分的C3 模塊,以彌補輕量化導致的精度降低;最后,運用TensorRT 技術將模型部署在Jetson nano 開發板,實現模型的真正應用。逐次改進過程中模型mAP@0.5 和體積變化:YOLOv5s(93.6%,14.12 MB)→S-YOLOv5s(94.6%,14.23 MB)→輕量S-YOLOv5s(92.0%,3.98 MB)→SC-YOLOv5s(92.9%,3.99 MB)。
(2)在TT100K 數據集上的實驗結果表明,本文的輕量化交通標志檢測模型體積小,精度達到了92.9%,FPS達到了24.1,能滿足實時交通標志檢測的要求。還可以應用更好的池化方法提高精度,通過量化使模型速度得到進一步提高,更好地實現實時交通標志檢測。