徐 麗,劉星星,屈立成
(長安大學 信息工程學院,陜西 西安 710000)
在YOLO v3[1]算法結(jié)構(gòu)的基礎(chǔ)上YOLO v4[2]融合了最近幾年在深度神經(jīng)網(wǎng)絡(luò)中有明顯優(yōu)勢的算法模型思想和訓練技巧,達到了很高的檢測精度。主干特征提取網(wǎng)絡(luò)在Darknet基礎(chǔ)上,結(jié)合CSPNet算法的思想,構(gòu)成CSPDarknet53,并使用Mish[3]激活函數(shù)、Dropblock正則化方式[4];加強特征提取網(wǎng)絡(luò)由YOLOv3采用的特征金字塔網(wǎng)絡(luò)(FPN)修改為加入空間金字塔池化層[5](SPP)和路徑聚合網(wǎng)絡(luò)[6](PANet)的組合;預測網(wǎng)絡(luò)使用YOLO v3中的YOLO-Head,預測框篩選使用DIOU_NMS。最終形成“CSPDarknet53+SPP-PANet+YOLO-Head”的模型結(jié)構(gòu)。
YOLO v4網(wǎng)絡(luò)相較于傳統(tǒng)機器學習算法有著明顯的優(yōu)勢,其優(yōu)勢主要體現(xiàn)在更多的參數(shù)和更大更深的網(wǎng)絡(luò)模型。復雜的模型結(jié)構(gòu)能夠增強網(wǎng)絡(luò)的非線性擬合能力,并且海量數(shù)據(jù)能夠增強模型的泛化能力[7]。然而在實際使用時,YOLO v4網(wǎng)絡(luò)模型需要面臨計算資源的限制及速度的嚴格要求,故該文主要對基于YOLO v4的夜間車輛檢測模型進行輕量化,使其在檢測精度降低少許的基礎(chǔ)上最大程度地縮減參數(shù)量及模型體積,使檢測速度更快,更能滿足夜間車輛檢測的實時性需求。
夜間車輛檢測模型的輕量化過程如圖1所示。
輕量化夜間車輛檢測的問題也是轉(zhuǎn)化成一個回歸問題求解,即將整張圖像用作網(wǎng)絡(luò)輸入,直接在輸出層回歸邊框位置及其所屬類別,流程如圖2所示。
圖1 夜間車輛檢測模型輕量化過程
圖2 夜間車輛檢測算法過程
(1)將輸入的原始圖像resize到416*416;(2)利用更改為MobileNet V2的主干特征提取網(wǎng)絡(luò),使得網(wǎng)絡(luò)參數(shù)量與計算量較少,可以更快地提取待檢測目標的有效特征;(3)在加強特征提取網(wǎng)絡(luò)以SPP+PANet的模型結(jié)構(gòu)分別進行最大池化、卷積、上下采樣、特征層融合的操作,實現(xiàn)將多層語義特征以及多尺度感受野進行融合,同時將加強特征提取網(wǎng)絡(luò)里面的3×3普通卷積全部更改為深度可分離卷積;(4)在預測網(wǎng)絡(luò)利用加強特征提取網(wǎng)絡(luò)處理后的3個特征層進行結(jié)果預測,判斷先驗框里面是否存在待檢測對象以及對象類別,并采用非極大值抑制NMS處理和先驗框調(diào)整來確定最終的預測框,得到車輛種類及坐標信息。
訓練前,對數(shù)據(jù)集進行白平衡處理[8]以減少路燈顏色干擾進而增強圖像畫質(zhì),并采用K-means++算法針對數(shù)據(jù)集聚類出合適的先驗框,其中距離度量使用交并比距離。訓練時,首先采用Mosaic算法進行數(shù)據(jù)增強,有利于區(qū)別檢測物體的背景、前景,豐富了數(shù)據(jù)集中的圖像特征,尤其是隨機縮放出現(xiàn)了很多小目標車輛,增強了網(wǎng)絡(luò)對小目標車輛的特征提取能力。最后采用構(gòu)建的夜間車輛檢測模型對數(shù)據(jù)集進行稀疏正則化訓練。
YOLOv4夜間車輛檢測算法的特征提取網(wǎng)絡(luò)包括主干特征提取網(wǎng)絡(luò)和加強特征提取網(wǎng)絡(luò)兩部分,相比預測網(wǎng)絡(luò)參數(shù)量在這兩部分較多。而MobileNet即MobileNet V1是2017年谷歌提出的一種輕量化的CNN模型,目前共有3個版本,其結(jié)構(gòu)是以深度可分離卷積為基礎(chǔ)的,除第一層是普通卷積,其余卷積層都由深度可分離卷積組成,計算量與參數(shù)量非常少,簡單的網(wǎng)絡(luò)定義,就可獲得檢測性能優(yōu)異的網(wǎng)絡(luò),因此常作為輕量化的特征提取網(wǎng)絡(luò),故將主干特征提取網(wǎng)絡(luò)CSPDarknet53分別更改為三個版本的MobileNet,得到的模型參數(shù)量和體積如表1所示。
表1 不同主干特征提取網(wǎng)絡(luò)的模型參數(shù)量和體積
從表1可以看出,主干特征提取網(wǎng)絡(luò)使用了MobileNet后其參數(shù)量和模型體積還是相當龐大,而夜間車輛檢測模型的大多數(shù)參數(shù)在加強特征提取網(wǎng)絡(luò)居多,其參數(shù)量主要集中在3×3的卷積上面,故嘗試將加強特征提取網(wǎng)絡(luò)里面的3×3普通卷積全部更改為在模型輕量化方面有優(yōu)異特性的深度可分離卷積,此時可得到模型參數(shù)量和體積的情況如表2所示。
表2 修改PANet后不同主干網(wǎng)絡(luò)的模型參數(shù)量和體積
從表2可以看出,在主干特征提取網(wǎng)絡(luò)使用MobileNet的基礎(chǔ)上,同時把加強特征提取網(wǎng)絡(luò)里面的普通卷積全部更改為深度可分離卷積,此時參數(shù)量和模型體積明顯縮減了。同時可以看到MobileNet V2的模型參數(shù)量和體積少于MobileNet V1和MobileNet V3,故決定將CSPDarknet53更改為MobileNet V2作為模型的主干特征提取網(wǎng)絡(luò),同時將加強特征提取網(wǎng)絡(luò)里面的3×3普通卷積全部更改為深度可分離卷積。
深層模型的通道稀疏性有利于通道剪枝,且能獲得有可能會被剪枝的重要性低的通道數(shù)量。按照通道修剪原理,稀疏訓練過程中得為每個卷積層的每個通道分配一個縮放因子γ(γ作為通道剪枝的重要依據(jù)[9],將其正則項和權(quán)重損失函數(shù)聯(lián)合優(yōu)化,網(wǎng)絡(luò)本身就可識別重要性低的通道并將其安全剪除,而不會影響其泛化性能),將其與該通道的輸入相乘,使得每層的各通道提取的特征產(chǎn)生不一樣的作用效果,其中縮放因子的絕對值就表示通道重要性。因為夜間車輛檢測網(wǎng)絡(luò)中每個卷積層后都增加了批量歸一化(BN)層,BN層的公式如(1)所示:
(1)
L1正則化是以L1范數(shù)為基礎(chǔ),即把參數(shù)的L1范數(shù)和項與目標函數(shù)相加,如公式(2):
(2)
其中,C0是原始的代價函數(shù),n是樣本數(shù),λ是權(quán)衡正則項與C0項比重的正則項系數(shù),后面一項即L1正則項。計算時w梯度的變化如公式(3)所示:
(3)
其中,sgn是符號函數(shù),那么使用下面公式(4)對參數(shù)進行更新:
(4)
從上式可以看出,L1正則項是將原本接近零(即|w|≈0)的那些參數(shù)w移到零,從而使某些參數(shù)為零,這意味著L1正則化能夠發(fā)揮選擇通道的作用,使得重要性降低的通道γ盡可能靠近0。故為有效地區(qū)分通道的重要與否,該文通過L1正則化來進行通道的稀疏訓練。與此同時,依據(jù)網(wǎng)絡(luò)中參數(shù)的變化,引入與γ有關(guān)的懲罰項,稀疏訓練損失函數(shù)如公式(5)所示:
(5)
其中,(x,y)表示網(wǎng)絡(luò)的輸入、輸出,w表示權(quán)重,第一項表示原始網(wǎng)絡(luò)訓練時的損失,第二項表示關(guān)于γ的L1正則,g(γ)表示縮放因子的稀疏誘導懲罰,λ表示超參數(shù),作用是將正常訓練損失和通道縮放因子懲罰項損失的比例進行平衡,Γ表示縮放因子γ的取值集合。通常L1正則化即g(γ)=|γ|為通道的重要性,被廣泛應(yīng)用于實現(xiàn)稀疏化。
模型剪枝是復雜模型輕量化時一種廣泛使用的方法。最早是用來去除模型中的多余參數(shù),減小復雜度,進而提升泛化性能。模型剪枝可以從不同剪枝粒度上實現(xiàn),例如權(quán)重級、通道級或?qū)蛹?。細粒度剪?如權(quán)重級)比較靈活常用,而且剪枝率高,但它一般得使用特殊設(shè)備來輔助實現(xiàn)。相反粗粒度剪枝并不需要特殊設(shè)備,但是要對某些整層進行修剪,所以并不靈活,而且只有當深度足夠深時,例如多余50層的網(wǎng)絡(luò)[10],剪枝才是有效果的。相比之下通道級別的剪枝能夠很好地權(quán)衡靈活性與易于實現(xiàn)程度,且能夠應(yīng)用于任何CNN或全連接的網(wǎng)絡(luò),由此生成一個輕量化的網(wǎng)絡(luò),使得傳統(tǒng)的CNN能夠在任何平臺上快速有效地運行。
實現(xiàn)通道級剪枝需要修剪所有與通道相關(guān)的輸入和輸出,但是對已預訓練好的模型做通道剪枝效率不高,因為不可能通道所有輸入或輸出的權(quán)重都有近似0的值。實驗結(jié)果表明,在保證相對準確率時,對預訓練好的ResNet做通道剪枝,僅僅可以減少10%的參數(shù)量[11]。
通道剪枝的實現(xiàn)流程如圖3所示。
圖3 通道剪枝流程
(1)對每個通道引入縮放因子γ,與該通道輸入相乘;(2)將γ正則項和權(quán)重損失函數(shù)聯(lián)合進行稀疏正則化訓練;(3)剪去較小縮放因子的通道;(4)微調(diào)剪枝后的模型;(5)經(jīng)過性能評估后再進行修剪迭代,最后得到一個輕量化的車輛檢測模型。
圖4 通道剪枝
稀疏訓練后獲得的通道縮放因子如圖4(a)所示,當前的縮放因子γ是稀疏分布的,第i層卷積層中的通道2和4中縮放因子近似為0,這代表著經(jīng)過訓練的模型認為該通道所提取的特征對目標的識別和分類基本沒有任何作用,通過剪枝操作后,會刪去該通道,里面的卷積核及其參數(shù)將不會被保存,達到輕量化模型的效果。剪枝之后的輕量化模型如圖4(b)所示。
(6)
實驗的硬件配置為Intel(R)Core(TM)i7-8700K CPU @ 3.70 GHz,64 GB內(nèi)存與NVIDIA GeForce GTX 1080 Ti獨立顯卡,軟件環(huán)境為Windows 10系統(tǒng),算法基于Keras框架,CUDA版本為10.0。在實驗中,選擇Adam作為優(yōu)化器,early_stopping用于設(shè)定早停,val_loss多次不下降自動結(jié)束訓練,表示模型基本收斂,batch_size=16,學習率設(shè)置為0.001,并在110 epoch后調(diào)整為0.000 1,共訓練220 epoch。將實驗里面的數(shù)據(jù)劃分為68%的訓練集、12%的驗證集與20%的測試集,其中訓練驗證集占到80%。
使用的數(shù)據(jù)集是UA-DETRAC數(shù)據(jù)集。該數(shù)據(jù)集是由佳能攝像機在天津和北京24個不同地點拍攝的10小時的視頻組成,圖像分辨率為960×540像素。該數(shù)據(jù)集將車輛分為四類,即car、bus、van和others,由于只有車輛被檢測,故只取前三類car、bus、van。因為要研究的是夜間場景下的車輛檢測算法,所以選取了16 000張夜間圖像作為該文的研究對象。
常用的車輛檢測算法評價指標有:精確率(Precision,P)、召回率(Recall,R)、平均精度AP、全部類別目標平均精度mAP、每秒處理幀數(shù)FPS等。
基于YOLO v4檢測模型,將CSPDarknet53更改為MobileNet V2作為模型的主干特征提取網(wǎng)絡(luò),并將加強特征提取網(wǎng)絡(luò)里面的普通卷積全部更改為深度可分離卷積后的車輛檢測模型(M1)進行訓練。對模型M1進行220次迭代的稀疏性訓練,稀疏因子λ采用默認值0.000 1,剪枝率設(shè)為50%,可以發(fā)現(xiàn)剪枝后模型(M2)的檢測精度下降了4.9%,所以對模型進行微調(diào),最終得到微調(diào)后的檢測模型(M3)。模型輕量化過程中各個模型的檢測結(jié)果如表3所示。
表3 模型輕量化過程中各個模型的檢測結(jié)果
從表3可知,通道剪枝可有效剪除網(wǎng)絡(luò)冗余,并且利用模型微調(diào)對剪枝后的模型進行再訓練可彌補剪枝帶來的檢測精度損失,在參數(shù)量及模型體積縮減一半以上的情況下,檢測精度只損失了0.68%。因此該方法能夠?qū)嶒炛械臋z測模型進行有效的輕量化。該輕量化夜間車輛檢測模型的car、bus、van的AP和mAP的變化如圖5所示。
圖5 AP和mAP變化圖
損失函數(shù)曲線如圖6所示。
圖6 loss變化曲線
由圖可知網(wǎng)絡(luò)在迭代訓練200次后損失曲線不再明顯波動,模型更快地趨于收斂,曲線相當平滑,整體訓練效果良好,且在迭代訓練210次后網(wǎng)絡(luò)發(fā)生了早停,停止訓練。
對于嵌入式及移動終端設(shè)備來說,因計算性能、內(nèi)存有限,不能滿足深度神經(jīng)網(wǎng)絡(luò)的運行需求時,就會追求極致的剪枝率[14],但是對于模型輕量化來說,超過一定的剪枝率,就會使得檢測精度直線下降。因此,該文對模型剪枝率方面進行了實驗與對比分析,使得模型檢測精度在基本保持不變的情況下能夠去除更多的網(wǎng)絡(luò)冗余,使檢測速度更快,更能滿足夜間車輛檢測的實時性需求。
由表4可以看出,剪枝率越大,參數(shù)量和模型體積越小,檢測精度會隨之有一定的下降。當剪枝率在75%時,剪枝后模型的參數(shù)量和模型體積降為大約原來的5%,F(xiàn)PS提升為大約原來的2倍,同時mAP只降低了1.6%。當剪枝率達到90%時,檢測精度會大幅降低。故該文采用剪枝率為50%時的輕量化模型,此時檢測精度mAP為98.29%,且每秒處理幀數(shù)FPS為42幀圖像。
表4 剪枝率對比
模型輕量化后的檢測效果如圖7所示。
圖7 車輛檢測輕量化模型的檢測效果
為了驗證輕量化模型對小目標車輛的檢測效果,從UA-DETRAC數(shù)據(jù)集中專門挑選了3 200張未經(jīng)過預處理的夜間車輛圖像,其特點為存在小目標車輛。經(jīng)過測試,在YOLO v4算法中的mAP為98.39%,而在該文輕量化模型的mAP達到98.04%,證明所提出的輕量化夜間車輛檢測模型對小目標車輛也具有很好的魯棒性。
該文構(gòu)建了基于YOLO v4的輕量化夜間車輛檢測模型,其檢測精度和實時性都可滿足夜間車輛檢測的需求,而且對小目標車輛也有很高的檢測精度。然而僅實現(xiàn)了夜間車輛的類別與位置檢測,對檢測到的車輛進行實時跟蹤[15]以及預測其接下來準確的行駛方向也具有重要意義。