趙 宏,馮宇博
(蘭州理工大學(xué) 計算機(jī)與通信學(xué)院,蘭州 730050)
近年來,隨著車輛的增多,以及無人駕駛技術(shù)和智能輔助駕駛系統(tǒng)進(jìn)入高速發(fā)展階段,對道路交通標(biāo)志精準(zhǔn)并快速檢測的要求日益提高。由于路面情況的逐漸復(fù)雜化,對交通標(biāo)志精確快速的檢測使得智能駕駛輔助更加高效,同時也為行車安全提供了保障。傳統(tǒng)的目標(biāo)檢測算法大多采用基于滑動窗口的區(qū)域選擇方式,存在運(yùn)行時間長、計算成本大的問題。并且,由于待測目標(biāo)在成像時有多樣性的變化和干擾,手動選擇的特征沒有較高的魯棒性[1],因此傳統(tǒng)的目標(biāo)檢測算法無法完成對精度和速度要求極高的交通標(biāo)志檢測任務(wù)。而基于深度學(xué)習(xí)的目標(biāo)檢測算法在檢測精度和效率上遠(yuǎn)高于傳統(tǒng)算法。
基于深度學(xué)習(xí)的目標(biāo)檢測算法使用多層卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)逐級提取圖像特征,自主學(xué)習(xí)并獲取特征信息,提高了檢測的精度,縮短了檢測的時間。較高的精度和實時性使得基于深度學(xué)習(xí)的目標(biāo)檢測算法在交通標(biāo)志檢測領(lǐng)域被廣泛應(yīng)用。
常用的基于深度學(xué)習(xí)的目標(biāo)檢測算法有SSD、R-CNN、Faster R-CNN、YOLOv3、YOLOv4 等。以R-CNN 與Faster R-CNN 為代表的兩階段目標(biāo)檢測算法需要先生成候選區(qū)域,再對候選區(qū)域進(jìn)行分類識別,這個過程會耗費(fèi)較多的時間,影響目標(biāo)檢測的速度和效率。YOLOv5 作為單階段目標(biāo)檢測算法,將目標(biāo)檢測定義為一個回歸問題,將單個卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于整個圖像,使用多個網(wǎng)格分割一張圖像,并預(yù)測每個網(wǎng)格的類概率和邊界框,比R-CNN 快1 000 倍,比Fast R-CNN 快100 倍,能夠在 同時保 證精度和速度的情況下進(jìn)行檢測。相較于同樣是單階段目標(biāo)檢測算法的SSD,YOLOv5 使用了FPN 結(jié)構(gòu)融合多層特征,能夠更有效地提取淺層小目標(biāo)特征。
在交通標(biāo)志檢測方面,文獻(xiàn)[2]基于YOLOv3-tiny網(wǎng)絡(luò),提出使用深度可分離卷積模塊代替普通卷積模塊搭建特征提取網(wǎng)絡(luò),并且通過改進(jìn)特征融合網(wǎng)絡(luò)提高對中小型交通標(biāo)志的檢測精度。文獻(xiàn)[3]提出一種改進(jìn)的Faster R-CNN,使用深度殘差網(wǎng)絡(luò)ResNet50 作為骨干網(wǎng)絡(luò),并在殘差塊中加入了注意力機(jī)制,提升了針對交通標(biāo)志的檢測精度,但由于采用了兩階段檢測算法,檢測實時性不強(qiáng)。文獻(xiàn)[4]基于YOLOv5s 網(wǎng)絡(luò)提出使用AF-FPN 特征金字塔網(wǎng)絡(luò),以及一種自動學(xué)習(xí)數(shù)據(jù)增強(qiáng)的策略,在目標(biāo)多尺度識別及模型的魯棒性方面有所提高,但仍存在模型不夠輕量化與檢測精度不夠高的問題。文獻(xiàn)[5]提出使用平衡特征金字塔網(wǎng)絡(luò)加入通道注意力的方法來提升YOLOv5 對小目標(biāo)的檢測,然而僅僅使用通道注意力對特征金字塔網(wǎng)絡(luò)進(jìn)行改進(jìn),在特征融合時仍然無法很好地傳遞位置信息。文獻(xiàn)[6]針對YOLOv4 和YOLOv5,提出在主干網(wǎng)絡(luò)中添加感受野交叉模塊來擴(kuò)大感受野,加強(qiáng)上下文特征,同時還使用了加入注意力機(jī)制的隨機(jī)擦除數(shù)據(jù)增強(qiáng)策略,以提升網(wǎng)絡(luò)對遮擋目標(biāo)的檢測。雖然該網(wǎng)絡(luò)在檢測精度上有所提升,但是在FPS 上有較明顯的下降,實時性表現(xiàn)欠佳。
本文基于YOLOv5 目標(biāo)檢測算法,提出一種改進(jìn)的CGS-Ghost YOLO 檢測模型。該模型主要有以下改進(jìn):1)添加了StemBlock 模塊,在維持精度的同時提升模型速度;2)提出CGS(Conv Group-norm SMU)模塊,結(jié)合GhostConv 提取特征,減少模型參數(shù),優(yōu)化模型性能;3)添加坐標(biāo)注意力(Coordinate Attention,CA)機(jī)制,增強(qiáng)通道信息與位置信息,提升特征提取能力;4)采用Bi-FPN 雙向跨尺度鏈接加權(quán)特征融合網(wǎng)絡(luò),使得多尺度特征有效融合;5)使用α-CIoU Loss+VariFocal Loss 計算損失,針對交通標(biāo)志檢測任務(wù),進(jìn)行邊框回歸損失及分類損失的計算。
目前基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)目標(biāo)檢測算法主要分為單階段和兩階段兩種,部分代表算法如圖1 所示。
圖1 基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測發(fā)展現(xiàn)狀Fig.1 The development status of object detection based on convolutional neural network
兩階段目標(biāo)檢測算法分為生成候選區(qū)和特征提取兩個階段,代表算法有R-CNN、Faster R-CNN、Mask R-CNN 等。由于在交通標(biāo)志檢測任務(wù)中,對檢測的精度及實時性要求較高,這類算法精度高但是檢測速度慢,因此兩階段目標(biāo)檢測算法無法很好地進(jìn)行交通標(biāo)志檢測。單階段目標(biāo)檢測算法如YOLO、SSD、RetinaNet等,在檢測目標(biāo)的類別與位置時,使用CNN 通過端到端的方式進(jìn)行檢測,縮短檢測時間,滿足實時性需求,在交通標(biāo)志檢測中應(yīng)用廣泛。
YOLO 經(jīng)歷了v1 至v4 的版本迭代,于2020 年 由Ultralytics LCC 發(fā)布了v5 版 本。YOLO 各版本核心功能及主要改進(jìn)如表1 所示。
表1 YOLO 各版本核心功能及主要改進(jìn)Table 1 The core funtion and main improvement of each version of YOLO
YOLOv5 官方目標(biāo)檢測網(wǎng)絡(luò)中有4 種個版本,按網(wǎng)絡(luò)的深度可區(qū)分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。YOLOv5 的網(wǎng)絡(luò) 結(jié)構(gòu)由輸入端、主干網(wǎng)絡(luò)(Backbone)、頸部多尺度特征融合網(wǎng)絡(luò)(Neck)和頭部輸出端(Head)4 個部分組成。
YOLOv5 的輸入端使用了Mosaic 數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計算及自適應(yīng)圖片縮放。其中,Mosaic 數(shù)據(jù)增強(qiáng)參考了文獻(xiàn)[7]提出的CutMix 數(shù)據(jù)增強(qiáng),Mosaic 使用隨機(jī)縮放、隨機(jī)裁剪、隨機(jī)排布的方法豐富了數(shù)據(jù)集,并添加了很多小目標(biāo),使網(wǎng)絡(luò)的魯棒性更好。YOLOv5 可以在針對不同訓(xùn)練集的每一次訓(xùn)練時使用自適應(yīng)計算獲取最佳錨框。
YOLOv5 的主干網(wǎng)絡(luò)由Focus 模塊、C3 模 塊、空間金字塔池化(Spatial Pyramid Pooling,SPP)模塊[8]構(gòu)成。Focus 模塊首先對圖片進(jìn)行切片,類似于下采樣操作。C3 模塊包含了3 個標(biāo)準(zhǔn)卷積層和多個Bottleneck 模塊,刪除了BottleneckCSP 中殘差輸出后的標(biāo)準(zhǔn)卷積模塊,并且Concat 后的標(biāo)準(zhǔn)卷積模塊中的激活函數(shù)由Leaky ReLU 換成SiLU。針對不同的特征圖,SPP 模塊可以將它轉(zhuǎn)換成所需大小的特征向量,將輸入經(jīng)過一次卷積后送入不同大小的最大池化層,再將所提取出來的特征進(jìn)行拼接。
YOLOv5 的頸部多尺度特征融合網(wǎng)絡(luò)部分由FPN+PAN 結(jié)構(gòu)組成,特征金字塔(FPN)[9]網(wǎng)絡(luò)結(jié)構(gòu)能夠在增加較少計算量的前提下融合低分辨率語義信息較強(qiáng)的特征圖和高分辨率語義信息較弱但空間信息較強(qiáng)的特征圖,使每一層不同大小的特征圖都具有較豐富的語義信息。路徑聚合網(wǎng)絡(luò)(PAN)[10]為了獲得更多的底部特征,引入一條從下而上的路徑以增強(qiáng)信息提取能力。FPN 與PAN 從兩個方向分別傳達(dá)強(qiáng)語義與強(qiáng)定位特征,加強(qiáng)網(wǎng)絡(luò)的特征提取能力,使網(wǎng)絡(luò)能夠更好地進(jìn)行特征融合。
在輸出端,YOLOv5 采用CIoU Loss 作為邊框回歸損失函數(shù),使用BCEWithLogitsLoss 作為置信度和類損失函數(shù)。
YOLOv5s 網(wǎng)絡(luò)與其他網(wǎng)絡(luò)相比深度較淺,在檢測速度快的同時擁有較為不錯的檢測精度,因此本文基于YOLOv5s 網(wǎng)絡(luò)進(jìn)行改進(jìn),提出了CGS-Ghost YOLO 網(wǎng)絡(luò)。網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示,網(wǎng)絡(luò)參數(shù)如表2所示,其中,from 表示該層的輸入來自于哪一層,如[-1,6]表示該層輸入來自于上1 層和第6 層。
表2 網(wǎng)絡(luò)參數(shù)Table 2 Network parameters
圖2 CGS-Ghost YOLO 網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of CGS-Ghost YOLO
在YOLOv5 中,基本卷積模塊CBS 由標(biāo)準(zhǔn)卷積層、批歸一化(BatchNorm,BN)[11]和SiLU 激活函數(shù)構(gòu)成。本文使用組歸一化(GroupNorm,GN)和SMU 激活函數(shù)構(gòu)成新的CGS(Conv GroupNorm SMU)卷積模塊。BN 是一種常用的歸一化方法,可以在一定程度上提升訓(xùn)練和收斂的速度。然而,過小的Batch Size 會造成性能下降,因為隨著Batch Size 的縮小,當(dāng)前批數(shù)據(jù)的平均值和方差無法代表整體輸入數(shù)據(jù)的分布,因此BN 誤差率會逐漸上升。由此可見,BN 歸一化依賴于Batch Size 的大小。如圖3 所示,GN 將通道分為多組,分別對每一組進(jìn)行歸一化操作,由于卷積提取的特征是一種非結(jié)構(gòu)化的向量,在同一張圖上學(xué)習(xí)到的特征具有相同的分布,具有相同的特征即可分為一組,無BN 依賴Batch Size 值的問題。因此,GN 較為穩(wěn)定,并且誤差率大約比BN 少10%,BN 和GN 示例如圖4 所示,BN 和GN 誤差率如圖5 所示。本文使用GN 以獲得更好的訓(xùn)練效果。
圖3 組歸一化原理Fig.3 Group normalization principle
圖4 批歸一化和組歸一化Fig.4 Batch normalization and group normalization
圖5 批歸一化和組歸一化的誤差率Fig.5 Error rates of batch normalization and group normalization
SMU 激活函數(shù)[12]是在Leaky ReLU 近似的基礎(chǔ)上提出的一種激活函數(shù),在一定程度上改善了ReLU的性能。SMU 計算如式(1)所示:
其中:erf 為高斯誤差函數(shù)。
由文獻(xiàn)[12]可知,SMU 激活函數(shù)在分類、目標(biāo)檢測、語義分割等任務(wù)中,精度均超越了ReLU、Leaky ReLU、Swish、GELU 等激活函數(shù),因此本文使用SMU 激活函數(shù)以獲得更高的檢測精度。
CGS 卷積模塊通過GN 在很大程度上降低了Batch Size 對訓(xùn)練效果的影響,并且配合SMU 激活函數(shù)能夠更好地對特征進(jìn)行提取。實驗結(jié)果表明,使用CGS 卷積模塊能夠達(dá)到更好的訓(xùn)練效果,提高檢測精度。
原YOLOv5 在數(shù)據(jù)輸入之后使用Focus 結(jié)構(gòu)進(jìn)行下采樣,增加了網(wǎng)絡(luò)參數(shù),提高了計算成本。本文刪除Focus 模塊并加入了StemBlock 模塊,提高了網(wǎng)絡(luò)的泛化能力,在保持較強(qiáng)的特征表達(dá)能力的同時減少了網(wǎng)絡(luò)參數(shù)。與普通卷積操作相比,StemBlock 有兩個分支:一個分支先進(jìn)行1×1 的卷積將通道數(shù)減半,再進(jìn)行下采樣;另一分支將原始的輸入經(jīng)過最大池化層處理后與前一分支相拼接,這樣既保證了能夠獲得足夠多的語義信息,又能夠減少大量參數(shù),達(dá)到輕量化模型的目的。StemBlock 構(gòu)成如圖6 所示。
圖6 StemBlock 構(gòu)成Fig.6 StemBlock composition
在卷積神經(jīng)網(wǎng)絡(luò)中,對特征的提取往往會出現(xiàn)特征圖冗余,層數(shù)較深的網(wǎng)絡(luò)由于堆疊了大量的卷積層,從而會導(dǎo)致存在大量的冗余特征圖,在參數(shù)量變大的同時也增加了計算的消耗。文獻(xiàn)[13]提出了GhostNet,通過少量的計算提取大量特征,解決特征提取冗余的問題。與常規(guī)的卷積操作不同,GhostConv 將卷積操作劃分為兩步,分別為少量卷積和輕量級線性變換操作,如圖7 所示。少量卷積即為將普通卷積操作的卷積核數(shù)量縮小為原來的1/2,從而減少1/2 的計算量。輕量級線性變換是對第一步操作所提取出的特征圖逐個進(jìn)行卷積核為3 或5的卷積。最后將以上兩步操作所得到的特征圖進(jìn)行拼接來生成最終的特征圖,得到與普通卷積相當(dāng)?shù)奶卣鲌D,能夠在不影響網(wǎng)絡(luò)提取特征性能的同時減少參數(shù)量。
圖7 常規(guī)卷積與GhostConv 原理圖Fig.7 Principle diagram of general convolution and GhostConv
本文將CGS 模塊與GhostConv 相結(jié)合構(gòu)成CGS-GhostConv,CGS 負(fù)責(zé)卷積核減半提取特征操作,輕量級線性化操作使用基本卷積模塊,對CGS 模塊提取出的特征分別進(jìn)行特征提取,以達(dá)到生成相似特征圖的目的。本文使用CGS-GhostConv 作為Backbone 和Head 中的卷積層,能夠有效縮減參數(shù)量并且提升模型性能。
注意力機(jī)制的引入可以針對卷積提取的特征進(jìn)行監(jiān)督,剔除沒價值的特征,保留有價值的特征,可以顯著提升模型性能。常用的注意力機(jī)制有SE、CBAM 等,然而SE 注意力模塊僅僅增強(qiáng)了通道信息而忽略了位置信息,因此引入了CA 機(jī)制[14]。SE 注意力機(jī)制使用全局池化將所提取到的特征張量直接進(jìn)行轉(zhuǎn)化,而CA 機(jī)制可以沿著X和Y兩個空間方向來進(jìn)行聚合特征,其中每個方向都是一個一維特征編碼的過程,這樣做能夠同時捕獲跨通道信息與位置信息。CA 坐標(biāo)信息嵌入在對各通道編碼時針對輸入x(C×W×H)沿著X橫軸方向和Y豎軸方向使用不同大小的池化核,如式(4)、式(5)所示,這樣可以使注意力模塊捕捉到更精確的位置信息。
CA 對輸出Zh和Zw進(jìn)行聚合特征,生成一對具有方向感知的特征圖,其中包含了較為精確的位置信息。然后將以上輸出進(jìn)行拼接,再通過1×1 卷積進(jìn)行變換,如式(6)所示:
其中:δ為非線性激活函數(shù);F為卷積變換函數(shù)。
再利用另外2 個1×1 的卷積變換Fh和Fw分別將fh和fw變?yōu)橥ǖ罃?shù)相同的張量:
其中:σ為Sigmoid 激活函數(shù)。
gh和gw分別作為注意力機(jī)制權(quán)重,最后CA 注意力機(jī)制的輸出如下:
CA 機(jī)制如圖8 所示。
圖8 CA 機(jī)制Fig.8 CA mechanism
本文將CA 機(jī)制添加至CSP 模塊中以及SPPF 模塊前,增強(qiáng)網(wǎng)絡(luò)的特征提取能力。
YOLOv5 在Neck 部分使用了FPN+PAN 結(jié)構(gòu)。很多目標(biāo)檢測算法僅通過采用語義信息豐富的頂層特征來進(jìn)行預(yù)測,雖然可以準(zhǔn)確地檢測出目標(biāo),但是其中的位置信息卻較為粗略,而FPN 可以把高層強(qiáng)語義信息和低層高分辨率信息有效結(jié)合,提高檢測性能和小目標(biāo)識別。FPN 是自頂向下,雖然增強(qiáng)了語義信息,但是對定位信息沒有進(jìn)行傳遞,文獻(xiàn)[10]提出了路徑聚合網(wǎng)絡(luò)(PAN),PAN 在FPN 網(wǎng)絡(luò)的基礎(chǔ)上,為縮短信息路徑并且使用低層中存在的精確定位信息而創(chuàng)建了自下而上的路徑增強(qiáng),進(jìn)一步增強(qiáng)了整個特征提取網(wǎng)絡(luò)的定位能力,有效地改進(jìn)了FPN 定位信息不足的問題。Bi-FPN 是由文獻(xiàn)[15]提出的一種加權(quán)的雙向特征金字塔網(wǎng)絡(luò),其原理圖如圖9 所示。Bi-FPN 通過使用權(quán)重值來針對所輸入不同特征的重要性進(jìn)行學(xué)習(xí)以提升網(wǎng)絡(luò)的特征提取效果,首先在雙向的多尺度特征融合基礎(chǔ)上,刪除了不進(jìn)行特征融合的節(jié)點,因為這些節(jié)點對于多層特征層融合的特征網(wǎng)絡(luò)貢獻(xiàn)較少,然后在同一特征層的輸入節(jié)點處使用跳躍連接的方式連接至輸出節(jié)點,使整個特征提取網(wǎng)絡(luò)融合更多的特征,檢測結(jié)果更加精確。
圖9 Bi-FPN 原理圖Fig.9 Bi-FPN prineiple diagram
Bi-FPN 是一種高效的雙向跨尺度鏈接和加權(quán)特征融合網(wǎng)絡(luò)。因此,本文借鑒Bi-FPN 的思想改進(jìn)了YOLOv5 的Neck,在原本PAN 結(jié)構(gòu)的基礎(chǔ)上添加了跳躍連接,幫助網(wǎng)絡(luò)更好地進(jìn)行特征融合,能夠提高檢測精度。
在YOLOv5 中使用CIoU Loss 邊框回歸損失函數(shù),將二元交叉熵?fù)p失函數(shù)BEC Loss 作為分類損失。IoU 即為檢測目標(biāo)的預(yù)測邊框與真實邊框的交疊率,能夠反映檢測效果,當(dāng)兩個邊框不相交時,IoU 的值為0,無法反映出預(yù)測框與真實框之間的距離遠(yuǎn)近。當(dāng)預(yù)測框和真實框大小相同時,會出現(xiàn)重疊位置不同但I(xiàn)oU 值相同的狀態(tài),此時IoU Loss便無法反映出兩個預(yù)測框相交情況的區(qū)別。針對以上問題,文獻(xiàn)[16]提出DIoU Loss 以及CIoU Loss。DIoU Loss 考慮了預(yù)測邊框和真實邊框的重疊面積和它們的中心點之間的距離,在IoU Loss 的基礎(chǔ)上添加了一個用于最小化兩個框中心點距離的懲罰項。IoU Loss 如式(10)所示,DIoU Loss 如式(11)所示:
其中:b、bgt表示預(yù)測框和真實框的中心點;ρ表示兩個檢測框中心點的歐氏距離;c為預(yù)測框與真實框最小包圍的對角線長度。CIoU 在DIoU 的基礎(chǔ)上添加了由檢測框長寬值所決定的懲罰項,收斂更快,效果更好。CIoU Loss 如式(12)所示:
其中:α為平衡損失比例的權(quán)重值;v為度量長寬比相似性的參數(shù)。
α-IoU[17]在IoU Loss 中引入 了Power 變換來 推廣普通IoU 損失和增加正則化項的IoU 損失。針對普通IoU Loss 進(jìn)行Box-Cox 變換,可以將IoU Loss轉(zhuǎn)化為α-IoU:
使用相同的Power 參數(shù)α來表示IoU 和懲罰項可以歸納出常用的IoU 損失,如GIoU Loss、DIoU Loss 和CIoU Loss。
α-IoU Loss 的冪變換同時具有IoU Loss 作為性能度量的關(guān)鍵性質(zhì),在0<α<1 和α>1 時,α-IoU Loss可以自適應(yīng)地改變相對損失值。當(dāng)α>1 時,α-IoU Loss 通過提高其相對損失的權(quán)重以增加對高IoU 目標(biāo)的關(guān)注度,也增加了IoU Loss 的絕對損失量,可以更好地優(yōu)化各個層次的目標(biāo)。α-IoU Loss 通過重新加權(quán)的方式來提供更大的靈活性,達(dá)到更高的精度。因此,本文使用α-CIoU 作為改進(jìn)模型的邊框回歸損失函數(shù)。
YOLOv5 使用二元交叉熵?fù)p失作為分類損失,在交通標(biāo)志檢測任務(wù)中,檢測場景復(fù)雜且檢測目標(biāo)較小,正樣本與負(fù)樣本不平衡。二元交叉熵?fù)p失無法很好地區(qū)分正樣本和負(fù)樣本,因此本文使用VFocal Loss 作為分類損失。由于檢測任務(wù)中樣本類別不均衡,單階段目標(biāo)檢測算法的準(zhǔn)確率通常低于兩階段的目標(biāo)檢測算法。Focal Loss[18]能夠很好地改善樣本不均衡問題,提高單階段目標(biāo)檢測算法的準(zhǔn)確率。Focal Loss 可以通過減少容易分類樣本的權(quán)重從而使模型在訓(xùn)練時更加注重較難分類的樣本。Focal Loss 使用權(quán)重α來平衡正負(fù)樣本比例,如式(21)所示,使用調(diào)制因子γ來控制分類樣本的權(quán)重,增加困難樣本的重要性,如式(22)所示:
Focal Loss 將檢測器集中在稀疏的困難樣本上,防止在訓(xùn)練時檢測器被過多的簡單負(fù)樣本所淹沒。VFocal Loss[19]也是基于二元交叉熵?fù)p失并且借鑒了Focal Loss 通過加權(quán)的方式來解決樣本不平衡問題的方法。
VFocal Loss(VFL)如式(24)所示:
其中:p為預(yù)測的IoU 感知分類評分(IoU-Aware Classification Score,IACS);q為目標(biāo)分?jǐn)?shù)。
VFocal Loss 不降低整體樣本的權(quán)重,只減少負(fù)樣本的損失貢獻(xiàn),同時VFocal Loss 通過加權(quán)把訓(xùn)練的重點集中在高質(zhì)量的正樣本上,能夠在同樣的速度下獲得更高的精度,因此使用VFocal Loss 作為分類損失。
本文實驗的數(shù)據(jù)集使用清華大學(xué)和騰訊聯(lián)合采集整理的TT100K[20]中國交通標(biāo)志檢測數(shù)據(jù)集,包括警告、禁令、指示三大類共120+小類中國交通標(biāo)志。本文實驗從中選取最常見的45 類交通標(biāo)志共9 170 張圖像作為實驗數(shù)據(jù),其中,7 200 張作為訓(xùn)練集,1 970 張作為測試集。數(shù)據(jù)集部分圖片如圖10 所示。
綜上所述,本文研究的結(jié)果為康復(fù)醫(yī)學(xué)工作者在為患者康復(fù)訓(xùn)練時肘關(guān)節(jié)活動度達(dá)到日常生活所需即為適合的活動角度。使康復(fù)醫(yī)學(xué)工作者在為肘關(guān)節(jié)功能障礙的患者康復(fù)訓(xùn)練時提供一定的指導(dǎo)。若患者在做某項功能性動作上有困難,則要把評估和治療這個過程放到康復(fù)訓(xùn)練中來;同樣的,若患者已經(jīng)知道肘關(guān)節(jié)的活動度不足,治療師和康復(fù)醫(yī)師就要預(yù)知患者在做相對的功能性動作時有困難,并且要建議做適當(dāng)?shù)恼{(diào)試,沒有必要一味的去追求肘關(guān)節(jié)活動度的完全恢復(fù)。
本文實驗在操作系統(tǒng)Ubuntu 18.04 下進(jìn)行,CPU為AMD Ryzen 7 5800H 3.20 GHz,GPU 為NVIDIA RTX 3060 6 GB,主機(jī)內(nèi)存為16 GB,編程語言為Python3.8,使 用CUDAv11.3 和CUDNNv8.2.1 對GPU 進(jìn)行加速,并基于深度學(xué)習(xí)框架PyTorch1.8.1進(jìn)行訓(xùn)練。
訓(xùn)練參數(shù)設(shè)置如下:訓(xùn)練周期(epochs)為600,批處理量(batchsize)為16,進(jìn)程數(shù)(workers)為8,訓(xùn)練時輸入圖像大小為640×640像素,初始學(xué)習(xí)率為0.01。
本文實驗使用精確率(Precision,P)、召回率(Recall,R)和平均精度均值(mAP)對模型進(jìn)行評價,指標(biāo)計算公式如下:
其中:TTP表示真實值為正樣本時預(yù)測值為正樣本;FFP表示真實值為負(fù)樣本時預(yù)測值為正樣本;FFN表示真實值為正樣本時預(yù)測值為負(fù)樣本;N表示物體類別的個數(shù)表示對第n個類別的物體評價精確率。
4.4.1 參數(shù)量
本文采取StemBlock 和GhostConv 兩種方法來減少參數(shù)量與優(yōu)化模型,達(dá)到提速的目的。由表3參數(shù)量對比可以看出,加入StemBlock 的YOLOv5s網(wǎng)絡(luò)在FLOPS 上略微上升,但是在參數(shù)量上有所下降。使用GhostConv 的YOLOv5s 網(wǎng)絡(luò)參數(shù)量降低顯著減少,約降低21.2 個百分點,同時FLOPS 也有所降低。同時,使用StemBlock 和GhostConv 時,參數(shù)量和FLOPS 都維持在較低的水平,因此本文的方法在檢測精度提高的同時能夠使網(wǎng)絡(luò)更加輕量化。
表3 模型參數(shù)量對比Table 3 Comparison of model parameter
4.4.2 對比實驗
本文選取了Efficientde[t15]、SSD[21]、RetinaNet[18]、Faster R-CNN[22]、YOLOv3[23]、YOLOv4[24]、YOLOv5 與改進(jìn)模型在TT100K 數(shù)據(jù)集上進(jìn)行對比實驗,如表4所示,其中,SSD、Faster R-CNN、YOLOv3、YOLOv4 與YOLOv5 常用于 交通標(biāo)志檢測。由對比實驗可知,改進(jìn)后的CGS-Ghost YOLO網(wǎng)絡(luò)在精度上全面超越其他檢測算法,并且相較原始YOLOv5s 在檢測精度上達(dá)到了93.1%,提升了11.3 個百分點,并且在FPS 上也有所提升,滿足交通標(biāo)志檢測對精度和實時性的要求。本文實驗所有類PR 曲線及混淆矩陣如圖11、圖12所示。
表4 不同模型在TT100K 數(shù)據(jù)集上的對比實驗Table 4 Comparative experiments of different models on TT100K dataset
圖11 所有類PR 曲線Fig.11 All classes PR curves
圖12 混淆矩陣Fig.12 Confusion matrix
4.4.3 損失函數(shù)改進(jìn)對比
在交通標(biāo)志檢測任務(wù)中,一張圖片中交通標(biāo)志的數(shù)量較少,以背景為主的負(fù)樣本較多,為降低訓(xùn)練時背景類負(fù)樣本所造成的影響,選取了VFocal Loss作為分類損失。由表5 可知,使用α-CIoU Loss+VFcoal Loss 損失函數(shù)進(jìn)行訓(xùn)練,模型的精確率(P)和召回率(R)以及平均精度均值mAP@0.5 都有所上升。VFocal Loss 在正負(fù)樣本不平衡的問題上有一定的改善,提高了模型的訓(xùn)練效果。
表5 損失函數(shù)對比Table 5 Loss function comparison
4.4.4 消融實驗
為了驗證本文方法對YOLOv5s 網(wǎng)絡(luò)進(jìn)行改進(jìn)的有效性,針對主要改動部分在TT100K 數(shù)據(jù)集上進(jìn)行消融實驗,以測試單獨(dú)改進(jìn)方法和各方法融合對檢測精度的影響,對比實驗結(jié)果如表6 所示,其中,模型序號為原始模型YOLOv5s 加√的模塊,如:①為YOLOv5s,②為YOLOv5s+GhostConv,以此類 推。由消融實驗可知,本文所提出的GhostConv、CA 注意力機(jī)制、Bi-FPN、α-CIoU+VFocal Loss 的檢測精度均在一定程度上有所提升。
4.4.4 部分檢測結(jié)果示例
本文選取了100 張交通標(biāo)志較遠(yuǎn)較小,依靠人眼難以快速辨識的圖片,在鬧市及交通流量密集街道等具有較多干擾因素的復(fù)雜場景以及在交通標(biāo)志側(cè)面、下面等角度偏斜較大的圖片進(jìn)行測試,在以上條件下均未出現(xiàn)漏檢、錯檢等情況,仍然保持著較高的準(zhǔn)確率,部分檢測效果如圖13所示。
圖13 檢測結(jié)果示例Fig.13 Example of test result
本文基于YOLOv5 提出CGS-Ghost YOLO 網(wǎng)絡(luò)監(jiān)測模型。使用StemBlock 模塊替換Focus 模塊進(jìn)行采樣,能夠在維持精度的同時減少參數(shù),在此基礎(chǔ)上通過引入坐標(biāo)注意力機(jī)制,提高模型的特征提取能力,并設(shè)計SMU 激活函數(shù)與組歸一化相結(jié)合的CGS 卷積模塊,提升模型的檢測精度。實驗結(jié)果表明,該模型在參數(shù)量更少的同時能達(dá)到更高的精度,且檢測速度有所提升。由于路況及天氣等不定因素的多變性,交通標(biāo)志檢測任務(wù)對精度的要求極高,雖然本文改進(jìn)后的模型能達(dá)到較高的精度和速度,但漏檢和誤檢的情況仍然會發(fā)生,因此后續(xù)將繼續(xù)優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),提升模型性能。