劉麗偉,侯德彪,侯阿臨,梁 超,鄭賀偉
(長春工業(yè)大學 計算機科學與工程學院, 吉林 長春 130102)
近年來,隨著智能交通和人工智能技術的高速發(fā)展,自動駕駛技術成為汽車領域的研究熱點[1]。然而,自動駕駛場景下的道路環(huán)境復雜。一方面,車輛行駛過程中光線和相對角度等因素變化,導致目標的特征發(fā)生改變,從而產(chǎn)生目標檢測漏檢和誤檢的現(xiàn)象。另一方面,行人姿態(tài)改變以及車輛局部遮擋,容易產(chǎn)生目標檢測的漏檢和誤檢[2]。因此,在復雜的道路場景中,如何準確、快速地檢測出車輛與行人是自動駕駛技術的重點研究內(nèi)容。
目前主流的目標檢測算法主要分兩類,傳統(tǒng)的目標檢測算法以及基于深度學習的目標檢測算法[3]。其中傳統(tǒng)的目標檢測算法主要通過矩形的滑動窗口去搜索圖片內(nèi)的目標,而后利用SURF[4]、HOG[5]等手工特征輸入支持向量機、Adaboost等分類器中進行識別。然而在自動駕駛場景中,環(huán)境復雜多變,目標形態(tài)各異,手工特征往往達不到理想的檢測效果,并且傳統(tǒng)的目標檢測技術檢測效率低、精度差、魯棒性不足,不能達到實際要求。
基于深度學習[6]的目標檢測算法自動學習檢測目標的高級語義特征,避免了手工特征泛化能力差的問題,具有較高的檢測精度和較快的檢測速度,已成為自動駕駛目標檢測的主流算法。目前,基于深度學習的目標檢測算法大概可以分為單階段和二階段。其中,二階段目標檢測算法以R-CNN[7]系列為代表,此類算法首先通過提取候選框獲取感興趣部分,并縮放到固定大小,再通過大規(guī)模的卷積神經(jīng)網(wǎng)絡提取圖片的特征信息,最后再進行目標分類與回歸。此算法雖然可以獲得較高的精確度,但是其所有的候選框皆需送入大規(guī)模的卷積神經(jīng)網(wǎng)絡中,耗費時間過長,導致無法達到自動駕駛的實時性要求。單階段目標檢測算法以SSD[8]、YOLO網(wǎng)絡[9-11]等為代表,相較于二階段目標檢測算法,此類算法無須預先設置候選框獲取目標信息,便可直接輸出目標的位置信息與類別,大大提高了檢測效率。Du S等[12]通過在YOLOv4網(wǎng)絡基礎上加入難挖掘模塊(hard negative mining),抑制了復雜背景的干擾,提高了車輛檢測精度。Tan L等[13]利用空洞卷積、ULSAM超輕量子空間注意力機制改進YOLOv4網(wǎng)絡,提高了特征提取與目標檢測性能。
盡管當前的檢測算法提升了檢測效率,但是常以犧牲檢測精度為代價。因此,如何在不降低檢測效率的前提下,提高檢測精度成為亟待解決的問題。卷積神經(jīng)網(wǎng)絡較深層的特征語義信息更為豐富,但對于檢測密集的對象并不有效[14]。在自動駕駛場景下,目標遮擋是行人檢測中經(jīng)常遇到的難題。注意力機制常被用來改善復雜交通環(huán)境下的目標檢測,突出人臉或車輛等目標特征[15-16]。
文中提出一種改進的YOLOv4算法實現(xiàn)自動駕駛場景下的目標檢測。首先,將輕量型注意力模塊SimAM[17]引入主干網(wǎng)絡,在不增加參數(shù)量的前提下加速權值的計算,使得精練的特征更加聚焦目標主體。然后,采用一種新的激活函數(shù)ACON-C[18]加速分類過程,進一步提高檢測精度,使得網(wǎng)絡在保證實時性的前提下,達到較高檢測精度。
YOLO網(wǎng)絡是單階段目標檢測網(wǎng)絡代表之一,其直接將檢測任務轉換成回歸問題來進行快速檢測,而在訓練過程與預測過程利用全圖信息,相比較區(qū)域候選網(wǎng)絡擁有更快的檢測速度與更高的檢測精度,可以實現(xiàn)端到端的預測。
2020年,Bochkovskiy A等[19]提出了YOLOv4網(wǎng)絡,其網(wǎng)絡結構如圖1所示。
圖1 YOLOv4網(wǎng)絡結構
與YOLOv3網(wǎng)絡相比,YOLOv4在數(shù)據(jù)輸入端采用了Mosaic數(shù)據(jù)增強,豐富了檢測物體的背景,同時也采用了K-means聚類算法對數(shù)據(jù)集中的目標框進行維度聚類分析。在主干網(wǎng)絡部分,采用CSPDarknet53網(wǎng)絡作為骨干網(wǎng)絡,借鑒CSPNet[20]思想,在YOLOv3的特征網(wǎng)絡Darknet基礎上形成,降低了計算量,提升計算速度,激活函數(shù)采用Mish,使網(wǎng)絡得到更好的檢測精度和泛化能力。在neck部分,YOLOv4不再使用特征金字塔(FPN),而是改用空間金字塔池化層(SPP)[21]和路徑聚合網(wǎng)絡(PANet)[22],使用多個尺寸的窗口,擴大了網(wǎng)絡的感受野,增強提取特征的能力,同時實現(xiàn)了深層特征與淺層特征的融合,保證了特征的完整性與多樣性。在Head部分,YOLOv4網(wǎng)絡沿用YOLOv3的檢測頭,進行大小為3×3和1×1的兩次卷積操作完成檢測。YOLOv4的網(wǎng)絡結構增加了對小目標的檢測能力,檢測速度也優(yōu)于YOLOv3等其他系列,更能勝任復雜的自動駕駛場景中的目標檢測任務。
SimAM模塊是由Yang L等[17]提出的一種無參數(shù)的注意力模塊,從神經(jīng)科學理論出發(fā),為挖掘重要神經(jīng)元,構建一種能量函數(shù)。
SimAM算法首先評估每個神經(jīng)元的重要性,在神經(jīng)科學中,信息豐富的神經(jīng)元通常表現(xiàn)出與周圍神經(jīng)元不同的放電模式,而且,激活神經(jīng)元通常會抑制周圍的神經(jīng)元,即空域抑制,所以具有空域抑制效應的神經(jīng)元應該被賦予更高的重要性。通過度量神經(jīng)元之間的線性可分性去尋找重要神經(jīng)元,因此定義如下能量函數(shù):
(1)
其中,
最小化上述公式等價于訓練統(tǒng)一通道內(nèi)神經(jīng)元t與其他神經(jīng)元之間的線性可分性。采用二值標簽,并添加正則項,最終能量函數(shù)定義為
et(wt,bt,y,xi)=
(2)
理論上,每個通道有M=H×W個能量函數(shù)。上述公式具有如下解析解:
(3)
其中,
因此,最小能量可以通過下式得到
(4)
ACON-C激活函數(shù)是由Ma N等[18]提出的一種簡單有效的激活函數(shù),其函數(shù)表達式為
fACON-C(x)=Sβ(ptx,p2x)=
(p1-p2)x·σ[β(p1-p2)x]+
p2x,
(5)
式中:Sβ----平滑最大值函數(shù)的微分形式;
β----平滑因子;
σ----Sigmoid函數(shù),該激活函數(shù)采用雙自變量函數(shù),帶有一個額外的超參數(shù)β,作用是在功能上使用超參數(shù)縮放,通過新增加p1與p2兩個超參數(shù),改善可學習的上界與下界。
YOLOv4算法具有較高的實時性檢測能力得益于其全卷積神經(jīng)網(wǎng)絡結構和較小的卷積核尺寸,以及回歸邊界框的算法結構設計,為實現(xiàn)在不增加網(wǎng)絡深度的前提下提升網(wǎng)絡的檢測精度,SimAM-YOLOv4算法僅對YOLOv4主干網(wǎng)絡中的殘差結構進行改進,通過對傳遞特征的篩選,使得殘差融合時保留更加有效的特征,降低特征損失,有利于后續(xù)的定位與分類。
對目標檢測任務而言,主干網(wǎng)絡對于不同的目標所關注的特征是不同的,如果在訓練開始時就以同樣的關注度對待每一張?zhí)卣鲌D,會加快網(wǎng)絡的收斂速度。同時,在保證實時性的前提下,由于不引入額外的參數(shù)能夠保持模型的大小,并且獲得了良好的mAP提升,因此選用無參數(shù)注意力模塊是一個較好的選擇。CSPDarknet53主干網(wǎng)絡存在大量的殘差模塊連接,因此在殘差模塊中嵌入注意力模塊時需要對其模塊結構進行一定的調(diào)整。CSPDarknet53中原始的殘差模塊如圖2所示。
圖2 CSPDarknet53中原始殘差模塊
該模塊將特征圖輸入到兩個由二維卷積、標準化和Mish激活函數(shù)所組成的卷積塊中,再通過跳躍連接,將輸入的特征圖與處理后的特征圖相加得到最終的輸出特征圖。
改進的CSPDarknet53中殘差模塊如圖3所示。
利用ACON-C激活函數(shù)替換原有的Mish激活函數(shù),改善網(wǎng)絡可學習的上下限,再通過將SimAM注意力模塊嵌入到兩個卷積塊之后,度量神經(jīng)元之間的線性可分性,尋找重要的神經(jīng)元,最后利用跳躍連接,實現(xiàn)原始特征圖的重要信息進行篩選。
圖3 改進的CSPDarknet53中殘差模塊
實驗數(shù)據(jù)集選用當前國際上最大的自動駕駛場景下的計算機視覺評測數(shù)據(jù)集KITTI,數(shù)據(jù)集共7 481張圖片,分8個類別:汽車、箱式汽車、貨車、行人、坐著的人、騎車的人、電車和雜項。在實驗中考慮到實際場景的復雜性,將數(shù)據(jù)集的類別進行調(diào)整,汽車、箱式汽車與貨車合并為汽車;將行人與坐著的人合并為人;騎車的人不作調(diào)整;刪除最后兩個類別。最終得到樣本數(shù):汽車33 261個、行人4 709個、騎車的人1 627個。
實驗環(huán)境配置為:Intel i5處理器,64 G內(nèi)存,NVIDIA GeForce RTX 3090顯卡,Windows10操作系統(tǒng),Python版本3.8。
在實際自動駕駛場景下,目標檢測的速度與精度極其重要。如果模型檢測速度過慢,達不到實時性,致使汽車系統(tǒng)來不及對突發(fā)事件做出反應,亦或是檢測的精度不準確,不能夠準確判斷目標的類別與位置,導致汽車在駕駛過程中無法做出正確識別,最終導致車禍發(fā)生。
根據(jù)上述問題,本實驗檢測的精度評價指標選用mAP值(mean Average Precision)來衡量,mAP值表示所有類別的平均精度值(Average Precision, AP)的平均值,而AP值是由精確率(Precision)和召回率(Recall)形成的PR曲線和橫縱坐標組成的面積計算得到,其計算為
(6)
(7)
式中:TP----正類樣本預測為正類樣本的數(shù)量;
FP----負類樣本預測為正類樣本的數(shù)量;
FN----正類樣本預測為負類樣本的數(shù)量。
選用FPS(frames per second)去衡量算法的檢測速度,即每秒處理的圖片數(shù)量或者處理每張圖片所需要時間。
實驗采用遷移學習,將原始YOLOv4網(wǎng)絡的預訓練模型的參數(shù)加載到SimAM-YOLOv4網(wǎng)絡中進行訓練,總共迭代500次,前100次迭代采用凍結主干網(wǎng)絡參數(shù)訓練,防止訓練初期權值被破壞,加快訓練速度,此時批量大小設定為8,學習率設定為0.001,剩余400次迭代,將所有參數(shù)解凍全部參與訓練,批量大小設定為4,學習率設定為0.000 1。在訓練過程中輸入圖片的分辨率大小設定為608*608,優(yōu)化策略采用余弦退火的Adam優(yōu)化算法,設定參數(shù)T_max為5,參數(shù)eta_min為0.000 01。
為了驗證各個方法改進的有效性,分別采用原始YOLOv4網(wǎng)絡、添加SE-Attention注意力模塊的YOLOv4網(wǎng)絡、添加CBAM注意力模塊的YOLOv4網(wǎng)絡、添加SimAM注意力模塊的YOLOv4網(wǎng)絡以及同時添加SimAM注意力模塊和激活函數(shù)的SimAM-YOLOv4網(wǎng)絡進行實驗對比,網(wǎng)絡模型性能對比見表1。
通過表1可以看到,原始YOLOv4在沒有改進的條件下,mAP值為85.85%,加入CBAM注意力模塊的YOLOv4,其mAP值為89.95%,mAP提升4.1%,為20 幀/s,犧牲25 幀/s,加入SE注意力模塊的YOLOv4,其mAP值為90.08%,mAP提升4.23%,為34 幀/s,犧牲11 幀/s,加入SimAM注意力模塊,mAP提升4.01%,為40 幀/s,犧牲5 幀/s,可以看出,SimAM模塊僅犧牲了較低的速度,獲得了與其他注意力模塊相近的mAP提升。
表1 不同模型性能對比
在SimAM注意力模塊的基礎上加入ACON-C激活函數(shù),修正了特征向量,使得后續(xù)檢測可以充分利用特征,mAP相比原始YOLOv4提高5.34%,與只加SimAM注意力模塊模型結果提高1.33%。雖然都有檢測速度的損失,但能夠滿足實時性的要求。同時不同模型針對不同類別的檢測性能進行對比,實驗結果對比見表2。
表2 不同類別的對比結果
通過表2可以看出,原始YOLOv4對大目標Car檢測精度很高,而對小目標Cyclist、Pedestrian檢測精度明顯達不到要求。通過嵌入SimAM注意力模塊,Car類AP提升2%,Cyclist類AP提升6%,Pedestrian類AP提升5%。SimAM-YOLOv4相較于只引入注意力機制,Car、Cyclist類指標基本不變,但Pedestrian類AP提升4%。由此可以看出,SimAM-YOLOv4有效地解決了原始YOLOv4對小目標檢測精度不足的問題。
為了更加直觀地感受上述不同算法之間的差異,文中選取了一組檢測結果進行對比分析,檢測效果如圖4所示。
(a) 原始YOLOv4模型
(b) OLOv4+SimAM
(c) SimAM-YOLOv4模型
從實驗效果可以看出,原始YOLOv4對檢測出的對象具有較高的置信度,但由于遮擋存在漏檢問題,相較而言,引入SimAM注意力模塊有效地解決了漏檢問題,但存在某些目標置信度較低的問題,而SimAM-YOLOv4既解決了漏檢問題,也解決了遮擋導致目標置信度較低的問題。
綜上所述,SimAM-YOLOv4對YOLOv4的改進與優(yōu)化具備合理性與有效性,在自動駕駛場景下的目標檢測任務中提升了原算法的檢測性能。
提出一種基于改進YOLOv4的自動駕駛場景目標檢測任務的算法,針對原始YOLOv4對于小目標檢測精度低的問題,SimAM-YOLOv4使用SimAM無參注意力模塊結合ACON-C激活函數(shù)改進主干網(wǎng)絡中的殘差結構,引導網(wǎng)絡對所提取出的特征圖進行充分的修正,更好地篩選出有利于后續(xù)檢測的特征。在KITTI數(shù)據(jù)集上的mAP達到91.19%,較原始模型提升5.34%,檢測速度達到32 幀/s。在滿足實際自動駕駛對目標檢測實時性需求的前提下,以較低的推理耗時換取了較大的檢測精度提升。同時模型大小為250 MB,與原模型大小幾乎相同,可以更好地應用在自動駕駛場景中。下一步工作將從網(wǎng)絡結構輕量化的角度優(yōu)化模型,繼續(xù)研究注意力模塊及激活函數(shù)機理,進一步提高檢測精度與速度。