熊恩杰,張榮芬,劉宇紅,彭靖翔
貴州大學 大數據與信息工程學院,貴陽 550025
近年來,隨著無人駕駛技術和智能輔助駕駛系統進入高速發展的階段,對道路上交通標志檢測的要求也越來越高。因此設計出一種檢測精度高、模型參數量小的交通標志檢測算法非常有必要。
傳統的交通標志檢測算法主要是靠人為地去提取交通標志的形狀、顏色以及邊緣等表層信息進行識別,還有一種是基于深度學習的卷積神經網絡目標檢測算法。傳統的目標檢測算法大多采用的是通過使用滑動窗口在輸入圖片上選擇候選區域,再對候選區域進行特征提取,最后通過分類器進行分類。所以傳統的目標檢測算法存在運行時間長、特征提取模塊復雜、計算成本大、提取的特征魯棒性低、識別精度低等問題。相反,基于深度學習的卷積神經網絡使用逐級提取圖像特征并自主學習獲取特征信息,可以使得精度更高并且模型相比更小,所以近年來在交通標志的檢測鄰域多使用基于深度學習的卷積神經網絡。
近些年基于深度學習的卷積神經網絡的目標檢測算法發展迅速,根據檢測階段的數量不同,分為兩類。一類是二階段(two-stage)檢測算法,需要先生成候選區域,再去對候選區域進行識別,所以存在檢測時間過長,不能滿足實時需求等問題,具體的有Girshick等人提出的R-CNN[1]、Fast-RCNN[2]以及Faster-RCNN[3]等方法;另一類就是單階段的檢測算法,具體的有YOLO[4-7]系列、SSD[8-10]系列以及OverFeat[11]等。其中YOLOv8作為YOLO系列中最新的模型,具有更高的精度以及更小的參數量和模型大小,所以本文基于YOLOv8n 網絡針對交通標志檢測任務進行改進和優化。
在交通標志的檢測方面,Lee 等人[12]提出基于SSD(single shot multibox detector)算法構建的CNN 算法同時估計交通標志位置與邊界,在基于VGG16 模型下最高的平均準確率(mean average precision,mAP)達到88.4%,但是使用CNN的檢測方法,網絡設計復雜,參數量龐大,不利于移動端的部署。Jin等人[13]將底層特征融合到頂層特征中以提高對中小目標的檢測性能,并且通過增強有效通道的特征以及抑制無效通道特征改善檢測的效果,但是該方法對模型性能的提升并不明顯。隨著關注像素重要特征的注意力機制在開始應用于神經網絡,注意力機制為單目標檢測算法在不同應用背景下的障礙物檢測的準確率也帶來了巨大提升。Jiang 等人[14]提出使用平衡特征金字塔網絡加入通道注意力的方法來提升YOLOv5對小目標的檢測效果,但是僅僅使用通道注意力對特征金字塔網絡的改進,在特征融合(Neck)時仍然無法很好地傳遞位置信息。薄景文等人[15]提出改進YOLOv3 的礦石輸送帶雜物檢測方法,引入CBAM[16]注意力機制,但是該注意力機制依次進行通道和空間注意力操作,忽略了通道與空間的相互作用,進而丟失了跨維信息。
針對上述存在的問題,本文引入了一種基于Ghost-YOLOv8的交通標志檢測模型,以此來解決當前傳統網絡對交通標志進行檢測時存在的精度低、模型過大等問題。主要貢獻在于:
(1)引入Ghostconv模塊以及設計的全新模塊C2fGhost,使得網絡達到輕量化的效果,網絡的參數量大大減小,提升了網絡模型檢測的性能。
(2)將注意力模塊GAM[17]融合到特征融合網絡(Neck)中,提高了網絡對小目標的興趣,增強了網絡的特征提取以及特征融合能力。
(3)增加160×160 尺度的小目標檢測層,增強了深層語義信息與淺層語義信息的結合,提升了小目標檢測的精確度。
(4)使用廣義交并比邊界損失函數GIoU[18]代替原模型中的CIoU[19]邊界損失函數,有效提升了模型的邊界框回歸性能。
YOLOv8作為最新的YOLO模型,可使用于對象檢測、圖像分類和實例分割任務,本文用于對象檢測任務。根據網絡深度和寬度的不同,YOLOv8分為YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x。基于模型大小的考慮,本文選用體積小、精度高的YOLOv8n網絡。YOLOv8n模型檢測網絡主要由四個部分組成(如圖1所示):Input、Backbone、Neck、Head。

圖1 YOLOv8n模型結構圖Fig.1 YOLOv8n model structure diagram
Input 使用Mosaic 進行數據增強,但是在最后的10個epoch 會將其關閉;使用anchor-free 機制直接預測對象的中心而不是已知錨框的偏移量,減少了錨框預測的數量,從而加速了非最大抑制NMS[20]。
主干部分(Backbone)主要用于特征提取,其中包含Conv、C2f、SPPF 等模塊。其中Conv 模塊主要作用就是對輸入圖像進行卷積、BN 和SiLU 激活函數操作;YOLOv8n設計了全新的C2f結構,這是對殘差特征進行學習的主要模塊,其結構讓YOLOv8n 可以在保證輕量化的時候能夠同時擁有豐富的梯度流信息;SPPF 模塊又稱空間金字塔池化,它能夠將任意大小的特征圖轉換成固定大小的特征向量。
頸部網絡(Neck)的主要作用是對多尺度的特征進行融合,生成特征金字塔,Neck部分采用的結構是PANet 結構,其核心結構由特征金字塔網絡FPN[21]和路徑聚合網絡PAN[22]兩部分組成。FPN 首先在卷積神經網絡中提取特征圖來構建特征金字塔,隨后自頂向下利用上采樣與更粗粒度的特征圖融合來實現不同層次特征的融合,但是如果僅有FPN 就會缺少目標的位置信息;PAN 則是FPN 的補充,使用自底向上的結構,通過使用一個卷積層來融合來自不同層次的特征圖,精確地保留了空間信息。FPN與PAN的結合,充分實現了網絡的上下信息流的融合,提升了網絡的檢測性能。
Head 輸出端作為最后的預測部分,根據不同尺寸的特征圖來獲取不同大小目標物體的類別和位置信息。
針對當前傳統網絡對交通標志的檢測不準確、模型參數量以及模型大小過大等問題,本文引入一種基于Ghost-YOLOv8的交通標志檢測模型。本文所提出算法模型Ghost-YOLOv8的網絡結構如圖2所示,主要有4個改進部分。針對當前交通標志的檢測模型過大的問題,引入GhostNet 網絡中的GhostConv 以及全新設計模塊C2fGhost來減少模型參數量;為確保模型算法集中于小目標的檢測,引入GAM注意力機制;基于交通標志的圖像數據集中遠處目標居多,即圖像中小目標居多的現象,增加小目標檢測層,如圖2中的黑色框內所示;為提升網絡模型的邊界框回歸性能,引入GIoU損失函數。

圖2 Ghost-YOLOv8模型結構圖Fig.2 Model structure drawing of Ghost-YOLOv8
GhostNet[23]是華為諾亞方舟實驗室在2020 年設計的輕量級網絡,Ghostconv 是GhostNet 網絡中的一個卷積模塊,可以代替普通的卷積。如圖3 所示,GhostNet輕量級網絡模型可以保持原有卷積輸出特征圖的尺寸以及通道大小的前提下,降低網絡的計算量和參數量,首先利用少量的普通卷積核對輸入的特征圖進行特征信息的提取,然后對特征圖進行相比普通卷積更加廉價的線性變化運算,最后通過Concat生成最終的特征圖。

圖3 GhostNet設計核心Fig.3 GhostNet design core
如圖4所示,其中的Cheap operation是一種廉價的線性運算,GhostConv首先使用原卷積一半大小的卷積生成一半的特征圖,接著繼續經過一個5×5 卷積核、步長為1的廉價計算Cheap operation得到另一半特征圖,最后通過Concat 操作將兩部分特征圖拼接成完整的特征圖。

圖4 GhostConv結構Fig.4 GhostConv structure
如圖5 所示,GhostBottelneck 首先經過作為擴展層的第一個GhostConv增加通道的數量,接著經過正則化和SiLU 激活函數,然后經過第二個GhostConv 減少輸出特征圖的通道數使其與輸入通道數相匹配,最后將上一步得到的特征圖與殘差邊相加進行特征融合。

圖5 GhostBottelneck結構Fig.5 GhostBottelneck structure
如圖6所示,設計的全新模塊C2fGhost是將原網絡中C2f 模塊中的Bottelneck 全部替換為GhostBottelneck得到,該結構利用跨階段特征融合策略和截斷梯度流技術增強不同網絡層間學習特征的可變性,從而減少冗余梯度信息的影響,增強網絡的學習能力。由于引入GhostConv和C2fGhost模塊減少了原結構中大量的3×3的普通卷積,大大壓縮了網絡的模型大小,減少了參數量以及計算量,使得模型可以部署在移動端,更易實現交通標志的邊緣計算檢測。

圖6 C2fGhost結構Fig.6 C2fGhost structure
由于本文使用的數據集的圖像中背景占圖像的大部分,并且需要檢測的交通標志中小目標居多,為了提高模型對交通標志的特征表達能力,本文算法模型中引入了GAM(global attention mechanism)注意力機制。GAM 是繼CBAM 后全新的注意力模塊,其結構如圖7所示,是一種結合通道注意力機制和空間注意力機制的模塊,是可以在減少彌散信息的同時放大全局維度特征交互的注意力機制。通過給定一個特征圖F1,經過兩個獨立的注意力子模塊,先通過通道注意力機制模塊對原特征圖進行校正,得到中間狀態F2,然后經過空間注意力機制模塊再次校正,得到最終特征圖F3。

圖7 GAM注意力模塊Fig.7 GAM attention module
通道注意力子模塊如圖8所示,使用三維排列來保留三維信息,然后利用兩層的多層感知器MLP 以此來放大跨維通道空間依賴關系。
中間狀態的定義為式(1)(其中MC是通道注意圖,?表示基于元素的乘法):
空間注意力子模塊如圖9 所示,輸入特征圖F2的大小為C×H×W,使用兩個7×7 的卷積來建模7×7 方塊中像素點的非線性關系,因此參數能夠更多捕獲像素空間之間的關系。

圖9 空間注意力子模塊Fig.9 Spatial attention submodule
中間狀態的定義為式(2)(其中MS是空間注意圖):
由于小目標樣本的尺寸較小并且YOLOv8 的下采樣倍數比較大,較深的特征圖比較難學到小目標的特征信息,所以YOLOv8 原模型對小目標的檢測能力較差。原始模型的輸入圖像大小640×640,最小檢測尺度80×80檢測每一個網格所得到的感受野是8×8,如果原始圖像中的目標高寬均小于8像素,原網絡就難以識別網格內的目標特征信息。
因此本文提出增加小目標檢測層,如圖2中黑色框所示,在原來的網絡中增加160×160尺度的小目標檢測層,其中包括補充的融合特征層以及引入的額外的檢測頭,以此增強小目標的語義信息和特征表達能力。首先將Backbone中的第五層的80×80尺度特征層與Neck中的上采樣特征層繼續向上堆疊,經過C2f和上采樣處理后得到包含小目標特征信息的深層語義特征層,繼續與Backbone中的第三層的淺層位置特征層進行堆疊,補充完善160×160 尺度融合特征層對小目標語義特征以及位置信息的表達能力,最后經過C2f送至Head中的一個額外的解耦頭(Decoupled Head)。
Head部分的補充,使得小目標的特征信息通過Head結構繼續沿著下采樣路徑傳遞到其他三個尺度特征層,從而加強網絡的特征融合能力,提升小目標的檢測精度;額外的解耦頭的引入,可以擴大交通標志的檢測范圍。檢測精度以及范圍的改進,使得網絡更加精確地識別道路旁的交通標志。
原始的YOLOv8 模型使用的是DFL Loss+CIoU Loss 作為回歸損失,但是CIoU 在縱橫交并比描述的相對值方面存在一定的模糊,并且沒有考慮難易樣本的平衡問題。因此本文引入GIoU Loss 代替CIoU Loss,GIoU 作為IoU 的改進形式,同樣具有尺度不變性的優點,并且,相比IoU,GIoU 還考慮了目標的非重疊區域,彌補了IoU 邊界損失函數無法量化真實框與預測框不相交的缺點。GIoU的定義為式(3):
式中,C為包圍A、B的最小矩形框,IoU的取值區間為[0,1],而GIoU的取值區間為[-1,1],其中IoU的定義為式(4):
GIoU作為損失函數,表示為式(5):
本實驗使用由清華大學和騰訊的聯合實驗室所整理公開的TT100K[24]中國交通標志數據集,在中國5個不同城市中選擇了10 個區域,從騰訊數據中心下載了十萬張全景圖,每張全景圖的尺寸為8 192×2 048,通過水平滑動將每張圖片分割成4幅圖像,之后對圖像中的交通標志進行了邊界框標注,類別標注以及像素級標注。其中包括警告、禁令、指示3 大類共120+個小類的中國交通標志。本實驗從其中選取了實例數都大于100 張的42 類交通標志,其中6 598 張作為訓練集,1 889 張作為測試集。
本實驗在操作系統Ubuntu18.04 下進行,GPU 為NVIDIA RTX 1080TI,主機內存為12 GB,編程語言為Python3.8,使用CUDAv10.1 和CUDNNv7.1.4 對GPU 進行加速,基于深度學習框架Pytorch1.7.1 進行訓練。訓練參數設置如表1所示。

表1 訓練參數設置Table 1 Training parameter setting
本實驗使用精確率Precision、召回率Recall、平均精度均值mAP 對模型進行評價,其中精確率是指正確預測為正(TP)的占全部預測為正(TP+FP)的比例,計算公式如式(6)所示:
而召回率是指正確預測為正(TP)的占實際為正(TP+FN)的比例,計算方式如式(7)所示:
平均精度均值(mAP)中m 代表平均,AP@0.5 指的是當混淆矩陣的IoU 的閾值取0.5 時,針對這一類樣本的平均精確度,而mAP@0.5 即是將所有的類別的樣本的Precision 值取平均值,它反映的是模型的精確率(Precision)隨召回率(Recall)的變化趨勢,該值越高代表模型越容易在高召回率下保持著高精確率;而mAP@0.5:0.95 則代表在不同IoU 閾值(從0.5 到0.95,步長0.05)上的平均mAP。計算方式如下所示:
3.4.1 對比實驗
為驗證本文算法Ghost-YOLOv8 相比當前熱門的交通標志檢測模型的優越性,以Precision、Recall、mAP@0.5、mAP@0.5:0.95、Parameters、Model size 作為評價指標,將本文算法與Faster R-CNN、YOLOv3、YOLOv4、YOLOX、YOLOv5、YOLOv7、YOLOv8、文獻[25]、文獻[26]算法在相同的條件下(統一的配置以及相同的數據集)進行實驗對比。
根據表2 可得,YOLOv8n 在參數量及模型大小均小于其他五個網絡的情況下,精確率、回歸率、mAP 均優于Faster R-CNN、YOLOv3-tiny、YOLOv4、YOLOX以及YOLOv7,雖然YOLOv5s 略高于YOLOv8n,但是YOLOv5s的參數量及模型大小差不多是YOLOv8n的兩倍。本文改進算法Ghost-YOLOv8 相比原始YOLOv8n雖然FPS略微降低,但是改進模型的參數量及模型大小更小,并且精確率等均優于原始YOLOv8n 算法。并且相比近些年相關文獻算法如文獻[25]、文獻[26],本文算法在各個指標方面都展現了其優越性。

表2 對比實驗Table 2 Contrast experiment
3.4.2 消融實驗
為了驗證本文算法改進模塊的有效性,以原始模型YOLOv8n為基線模型,并以Precision、Recall、mAP@0.5、mAP@0.5:0.95、Parameters、Model size 作為評價指標,通過多個改進模塊不同的組合方式進行消融實驗。如表3所示。

表3 消融實驗Table 3 Ablation experiment
根據表3可得,添加了小目標檢測層的模型相比原始的YOLOv8n模型,Precision、Recall、mAP@0.5、mAP@0.5:0.95 分別提高了7.4、2.2、5、3.7 個百分點;在添加了CBAM 注意力機制后,相比添加GAM 一些指標都存在降低,所以選擇加入GAM注意力機制;添加了GAM 注意力機制后,Precision、mAP@0.5、mAP@0.5:0.95 分別提高了2.6、1、0.6個百分點;添加了輕量化模型GhostConv以及設計的C2fGhost后,Precision提高了0.4個百分點,并且模型參數量(Parameters)、模型大小(Model size)分別下降了0.576×109、1.12 MB;添加了GIoU 損失函數后,Recall、mAP@0.5、mAP@0.5:0.95 分別提高了5、1.2、0.7 個百分點。通過表3 的實驗結果表明本文改進后的Ghost-YOLOv8 模型相比較于原始的YOLOv8n 網絡模型,雖然FPS有略微下降,但是在Precision、Recall、mAP@0.5、mAP@0.5:0.95 上分別提高了9.5、4.5、6.5、4.5 個百分點,并且模型的參數量(Parameters)、模型大?。∕odel size)分別下降了0.223×109、0.2 MB,證明了本文所提出的算法改進的有效性。
3.4.3 算法驗證
通過YOLOv5s、YOLOv8n 以及本文改進的Ghost-YOLOv8 算法(從左至右)在交通標志的檢測結果進行可視化圖片對比,如圖10所示,根據A組以及B組的實驗結果對比,可得到:改進的Ghost-YOLOv8 算法具備更高的識別精度,證明本文算法可以改善遠處較小目標的交通標志識別不佳的問題;并且根據C組的實驗結果對比,可以看出改進的算法可以檢測到其他模型檢測不到的目標,證明本文算法可以改善交通標志目標定位不準確及目標特征表達不充分的問題。

圖10 交通標志檢測效果對比圖Fig.10 Comparison of traffic sign detection effect
本文提出一種高效、輕量的Ghost-YOLOv8 網絡模型來對交通標志進行檢測和識別,引入GhostConv模塊以及設計的全新模塊C2fGhost,減小了模型的參數量及模型大??;添加了GAM注意力模塊,提升了模型的特征融合能力;并增加了小目標檢測層,提高了模型檢測小目標的精確度;使用GIoU作為損失函數,提升了網絡模型的邊界框回歸性能。改進的Ghost-YOLOv8 網絡模型在精確率及mAP@0.5相比較于原始網絡模型分別提升了9.5、6.5 個百分點,并且網絡的參數量及模型大小相較于原始網絡模型分別降低了0.223×109、0.2 MB。未來將在該模型基礎上繼續研究改進網絡模型,使得模型在具有更高的檢測精度的同時擁有較快的檢測速度,且考慮該應用方向在現實生活中所具有的實際應用價值,后續也將對模型進行邊緣移動平臺的移植驗證和改進,使得模型更小、更易部署。