張淑卿,王亞超,肖 寒
(華北理工大學 電氣工程學院,河北 唐山 063210)
高級駕駛輔助系統(tǒng)(Advanced Driving Assistance System,ADAS)旨在幫助駕駛員在行駛過程中避免交通事故,提高駕駛的安全性。車輛與行人檢測是其重要組成部分,通過車載小型攝像機對路況信息實時檢測、精準定位目標,對避免交通事故的發(fā)生具有十分巨大的作用。然而在實際應用場景中,作為汽車“眼睛”的攝像機,在特殊天氣,如霧霾條件下,會產生圖像模糊、特征無法分辨等問題,導致常規(guī)的檢測方法性能大幅下降,出現漏檢或誤檢等問題,極大地增加了駕駛的危險性[1]。因此,對霧霾天氣下的行人與車輛進行檢測,具有重要的研究價值。
目前,在霧霾條件下的行人與車輛檢測主要分為基于機器視覺的檢測方法與基于深度學習的目標檢測方法[2]。傳統(tǒng)的基于機器學習的檢測方法主要利用顏色、紋理和邊緣等細節(jié)信息進行檢測。如Schwartz等[3]將梯度特征與顏色、紋理特征進行融合,構建高維描述子,并通過偏最小二乘降維,可以檢測行人與車輛目標。包曉敏等[4]提出一種基于Gabor小波與HOG特征融合(G-HOG)的行人檢測算法,取得了較好的查全率與識別率?;跈C器視覺的檢測方法,存在特征提取難度大、泛化能力不強和計算復雜等問題,難以滿足如今霧霾條件下行人與車輛檢測高效、實時的需求。
近年來,基于深度學習的圖像分類、目標檢測等技術開始興起。這類目標檢測方法主要可以分為一階段算法與二階段算法。一階段算法在保證檢測精度的前提下,相比二階段算法大幅提高了檢測速度,代表算法有YOLO[5]、SSD[6]和RetinaNet[7]等。YOLO系列算法將目標識別與邊界框回歸同時進行,具有快響應、非接觸式、部署靈活的特點,在行人與車輛檢測中具有廣泛的應用。蔣超等[8]針對傳統(tǒng)行人檢測參數量較大和計算復雜度高的問題,通過對YOLOv5模型進行替換主干網絡、加入注意力機制等方法,獲得了一種輕量化的行人檢測算法。方康等[9]提出一種基于一階段無錨框檢測算法YOLOX的多光譜行人檢測算法,通過將多模態(tài)特征解耦與共性特征提取融合的方法,有效提高了對特征的提取能力,加快了模型的檢測速度。歐群雍等[10]為了提高多行人檢測跟蹤的準確性與魯棒性,提出了一種基于卷積神經網絡與雙向長短期記憶網絡相結合的跟蹤方法,獲得了較好的效果。目前,通過對YOLO系列檢測算法進行改進,在復雜天氣條件下的檢測也取得了一定的成果。劉書剛等[11]將圖像去霧算法加入圖像預處理,同時微調YOLOv4網絡,對霧天場景的行人檢測取得了較好的效果。院老虎等[12]通過改進YOLOv5網絡的圖像增強技術,優(yōu)化NMS非極大值抑制等方法,提高了對霧天場景下的車輛檢測效果。因此,本文采用YOLO算法作為改進的基礎網絡。
針對霧霾天氣下拍攝到的圖像退化模糊,難以進行準確的識別與檢測的問題,本文提出一種基于YOLOv5s改進的霧霾天氣下行人與車輛檢測算法。
YOLOv5網絡作為主流目標檢測算法,繼承了YOLO系列網絡簡潔高效的特點,同時集合了許多計算機視覺方向相關技術,根據內部子模塊中卷積核的深度和寬度,可以分為4個模型,參數量由小到大依次為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。YOLOv5的一般結構如圖1所示,從整體上來看,主要可以分為四部分:圖像預處理、Backbone、Neck和Head部分。
圖1 YOLOv5結構Fig.1 YOLOv5 structure diagram
對于圖像預處理部分,在一般的隨機翻轉、水平旋轉和隨機裁剪的基礎上,YOLOv5繼續(xù)采用在YOLOv4中提出的Mosaic技術,隨機選取4張圖片進行尺度縮放,之后將其拼接成一張圖片輸入到網絡中。Mosaic技術可以極大地豐富檢測物體的背景,同時可以提高對小目標的檢測效果。Backbone部分繼續(xù)延用YOLO系列的主干網絡CSPDackNet-53,采用Focus層,對輸入圖片進行隔點采樣,在尺寸減半的基礎上通道數擴充4倍,將圖片中的位置信息轉化為通道信息,緩解了傳統(tǒng)卷積下采樣帶來的信息損失。同時在CSP1_x模塊中加入殘差連接,加強網絡的學習能力,防止深層網絡在反向傳播中梯度消失問題。在Neck部分,采用經典的FPN+PAN結構,在通過上采樣將高層信息傳遞給底層的同時,借助下采樣將信息反傳遞給高層,使得網絡的各層都擁有一定的信息。Head部分根據特征對目標進行預測,輸出帶有預測信息的張量,經過后處理操作,得到最終的預測結果。
雖然YOLOv5已經具備很強的學習能力,但其特征提取與特征融合方面還有所不足,對遮擋、模糊等復雜條件下的檢測能力還有待提高。因此,本文采用YOLOv5s(v6.1)作為基礎模型,通過對圖片進行去霧處理、加入基于自注意力機制的BoT3模塊、加入注意力機制和替換損失函數等方法來提高其對霧霾天氣下目標的檢測能力,以滿足行人車輛檢測的要求。
YOLOv5模型的主干網絡采用全卷積結構,具有簡潔、高效的特點,但隨著網絡層數的加深,全卷積結構會在各尺度丟失大量的特征信息,導致網絡的檢測能力下降。因此,本文采用BoT3模塊替換原主干網絡中最深層的CSP2_1模塊,以增強網絡對于特征的提取能力。
BoT3模塊取材于BoTNet[13],其結構如圖2所示,可以很明顯地發(fā)現,BoT3結構相比于普通的殘差結構,僅僅是將3×3的卷積替換為了多頭自注意力機制(Multi-Headed Self-Attention,MHSA),其他部分保持不變。BoT3中的MHSA結構示意如圖3所示(顯示了head=1的情況,實驗中所采用的head=4),MHSA的輸入特征矩陣尺寸為H×W×d,H、W表示輸入特征矩陣的長與寬,d表示輸入特征的維度數。輸入特征通過與Q、K、V矩陣相乘,可以得到具有特征信息的q、k、v張量。Rh與Rw是可學習的參數,分別表示長度與寬度的相對位置編碼,其相加可以得到一個指定位置的位置編碼信息r,通過對q、k、v、r進行一系列矩陣運算,可以得到最終的注意力特征。
(a)全卷積殘差結構
圖3 MHSA結構示意Fig.3 MHSA structure diagram
本文采用BoT3模塊替換主干網絡中最深層的CSP2_1模塊,通過在網絡中引入全局注意力機制,提高網絡對于特征的提取能力,同時,與卷積結構的融合,避免了傳統(tǒng)自注意力機制巨大的計算負擔,保持了網絡簡潔高效的特點,提高了模型對特征的提取能力。
圖4 HAM結構示意Fig.4 HAM structure diagram
YOLOv5算法是基于邊界框的檢測算法,其檢測性能很大程度上依賴于損失函數的設計。邊界框損失函數作為其重要組成部分,其準確定義可以帶來顯著的性能提升。原YOLOv5算法的邊界框損失函數采用CIOU損失,它側重于增強邊界框對訓練樣本中高質量樣本的擬合能力,但這種方法對于低質量樣本的擬合能力有所欠缺,同時盲目地強調高質量樣本,而忽視低質量樣本會導致模型泛化能力的下降。針對以上問題,本文算法采用具有動態(tài)非單調靜態(tài)聚焦機制的Wise-IOU(WIOU)損失函數替換CIOU損失函數。WIOU包含三部分:IOU損失、距離損失和非單調聚焦系數。圖5所示為WIOU參數示意。
圖5 WIOU參數示意Fig.5 WIOU parameter schematic
IOU損失定義為:
(1)
距離損失定義為:
(2)
式中:上標*表示將Wg與Hg從計算圖中進行分離,可有效提高收斂效率,并在邊界框與真實框重合較好的情況下降低其對中心點距離的關注,提高泛化能力。
非單調聚焦系數r定義為:
綜上所述,WIOU損失定義為:
(5)
采用WIOU替換CIOU,提高了模型收斂效率,提升了模型的精度。
目標檢測算法通常對于圖片的質量要求較高,不良的圖片往往會導致檢測能力的下降。針對在霧霾條件下建立的數據集,本文采用暗通道先驗去霧算法[15],在訓練初始先進行去霧操作,之后再送入到模型進行訓練。
暗通道先驗去霧算法是一種基于圖像復原的去霧算法,通過對大量無霧圖片與有霧圖片進行觀察總結,得到二者之間某些參數的映射關系,之后根據有霧圖片的形成過程進行逆過程,得到去霧圖片。算法實現過程如下:
① 計算大氣散射模型,公式如下:
I(x)=J(x)t(x)+A(1-t(x)),
(6)
式中:x表示圖像的空間坐標,I(x)、J(x)分別表示有霧與無霧圖像,A表示全球大氣光值,t(x)表示透射率。
② 暗通道的定義公式如下:
As mentioned,two design optimizations are done in this study.The first optimization is a deterministic optimization,and the second is a robust optimization.The considered objective functions and constraints are the same for both design optimizations.
(7)
式中:Ω(x)表示以x為中心的局部區(qū)域,上標C表示RGB三通道。即先計算每個像素RGB通道中最小值,將其保存到一張預設灰度圖中,之后對其進行最小值濾波,半徑由窗口大小決定。暗通道先驗理論認為對于非天空區(qū)域的無霧圖像J(x)趨于0。
③ 公式推導:
(8)
設t(x)為常數,且A給定,則推理如下:
(9)
由式(7)可推出:
(10)
將式(10)帶入式(9),可得:
(11)
綜上,可得最終的圖像去霧公式為:
(12)
本文通過將去霧算法加入到數據預處理階段,有效提高了模型的辨識能力與魯棒性。經過以上改進,得到本文所提出的基于YOLOv5s改進的霧霾天氣下行人與車輛檢測算法。改進后的網絡結構如圖6所示。
圖6 改進后的算法結構Fig.6 Structure diagram of the improved algorithm
本實驗采用自建數據集,圖片數據來源于網絡爬蟲爬取,經過VOC格式標注,共包含圖片4 312張,共包含5類目標,分別為行人(Person)、汽車(Car)、自行車(Bicycle)、巴士(Bus)和摩托車(Motorbike)。數據集類別及標注數量如表1所示。
表1 數據集類別及標注數量Tab.1 Data set category and number of annotation
將數據集按8∶1∶1的比例劃分為訓練集、驗證集和測試集。圖7為數據集標注目標的圖片示例。根據圖片示例可以發(fā)現,在霧霾條件下采集到的圖像存在對比度與飽和度較低、顏色易發(fā)生偏移、失真和目標輪廓模糊不清等問題,同時數據集中包含較多的遮擋、重疊目標與小目標。因此,本文算法主要針對以上問題對YOLOv5s進行改進,以提高其在霧霾天氣下的檢測能力。
圖7 數據集標注示例Fig.7 Example of dataset annotation
本文選擇準確率(Precision,P)、召回率(Recall,R)和平均準確率(mean Average Precision,mAP)作為評價指標來對模型的性能進行評估。公式如下:
式中:TP為將正樣本正確識別為正類的數量,FP為將負樣本錯誤識別為正類的數量,FN為將正樣本錯誤識別為負類的數量,n為數據集中樣本類別數量。同時,還加入模型參數量(Params)和檢測速度(FPS)指標來更加準確地評估模型的性能。
本算法采用的操作系統(tǒng)為Linux Ubuntu發(fā)行版,CPU為15核AMD 32-Core Processor,內存80 GB,GPU選擇NVIDIA Gdforce RTX 3090,顯存24 GB,環(huán)境配置為Python 3.8+Pytorch 1.7.0+Cuda 11.0。輸入圖片尺寸為640 pixel×640 pixel,采取預訓練方法,加載主干網絡參數凍結訓練50個epoch,共訓練100個epoch,凍結階段batch-size為48,解凍后batch-size為24。優(yōu)化器選擇adam,最大學習率1×10-3,最小學習率1×10-5,學習率下降方式選擇余弦退火策略。其余超參數在實驗中均保持一致。
本文算法在數據預處理階段,針對實驗數據集采用暗通道先驗去霧算法先進行去霧處理,之后再進行如隨機水平反轉、隨機平移和隨機縮放等方法對圖片進行增強處理。為更好地說明本文所采用去霧算法的效果,設計本次對比實驗,采用的去霧方法有暗通道先驗法、拉普拉斯增強法、限制對比度自適應直方圖均衡化法(CLAHE)和伽馬變換法。暗通道先驗算法具體參數設置為:最小值濾波半徑r=7,導向濾波半徑r=75,去霧程度w=0.95,透光率t(x)最小值設置為0.1,大氣遮罩圖像最大值設置為 0.8。實驗結果如圖8所示。
圖8 去霧算法效果對比Fig.8 Comparison of the effect of defogging algorithms
由圖8可以看出,拉普拉斯增強法與CLAHE法并不理想,處理后的圖片與原圖相比,并無太大變化,而伽馬變化法對于某些圖片效果尚可,但其對于圖片亮度影響較大,會加深圖片的暗度,不利于目標與背景的分離。相比之下,暗通道先驗法提高了圖像的飽和度,同時易于區(qū)分目標與背景,取得的效果最好。因此,本文選擇暗通道先驗法對圖像進行預處理,增強了模型對于目標的檢測能力,提高了模型的泛化能力。
為了更好地說明本文模型所添加的HAM相較以往注意力機制的優(yōu)勢,設計本次注意力機制實驗,替換主干網絡為BoT3模塊后,在主干網絡的輸出端加入5種注意力機制進行對比實驗,分別為ECA[16]、NAM、CA[17]、CBAM[18]、HAM。表2為加入各個注意力機制后模型的實驗數據。
表2 注意力機制對比實驗數據Tab.2 Comparative experimental data of attention mechanism
由實驗結果可以發(fā)現,加入注意力機制后,因為模型參數量的提高,導致推理速度有所下降,但模型的mAP均有所上升,其中,加入HAM的模型mAP提升最多,提升了1.41%,體現出了HAM的優(yōu)越性。
根據實驗可知,加入HAM,可有效提高對目標的關注程度,加強重要特征、抑制無用特征并減輕背景中干擾信息的影響,在行人與車輛檢測任務中可以有效提高模型準確度。
為了驗證本文對YOLOv5算法所做的各項改進對霧霾天氣下對行人車輛檢測的影響,對各處改進點進行評估,實驗結果如表3所示,“√”代表添加此模塊。
表3 消融實驗結果
由表3可以發(fā)現,在進行圖像去霧增強后,提高了模型對特征的辨別能力,同時,由于圖像去霧處理只在訓練階段啟用,在檢測階段并沒有啟用,故在保持速度的同時,mAP提高了0.61%;在主干網絡中加入帶有全局注意力機制的BoT3模塊,提高了模型對特征的提取能力,mAP增加了1.31%,但同時模型的參數量有所增加,檢測速度有所下降;在主干網絡的輸出端加入HAM,起到了強調重要特征、抑制無關特征及緩解背景信息的干擾作用,在略微提高模型參數量的同時,mAP提高了1.41%;采用WIOU損失替換CIOU損失,提高了模型訓練過程中預測框對于真實框的擬合效率,在不改變模型參數量和檢測速度的情況下,mAP提高了0.8%。
為了驗證本文算法的性能,與當前經典的目標檢測算法進行對比實驗,選擇的目標檢測算法包括SSD、YOLOv3、YOLOv4、YOLOv4-Tiny、YOLOv5、YOLOX、YOLOv7。對比實驗結果如表4所示。
由表4可以發(fā)現,本文的改進算法相較YOLOv5在檢測準確度mAP上提高4.13%,同時與SSD、YOLOv3、YOLOv4等算法相比具有參數量上的明顯優(yōu)勢,更加符合移動端檢測的部署要求。與YOLOv7相比,雖然其mAP和FPS占優(yōu),但本文算法參數量只有其19.3%,在精確度與模型參數量方面本算法取得了更好的平衡。
本文算法在YOLOv5的基礎上改進而來,對霧霾天氣下行人車輛的檢測效果相比原算法具有比較顯著的提升,YOLOv5s算法與本文改進算法對目標的檢測效果如圖9所示。
圖9 檢測效果對比Fig.9 Comparison of testing effect
由圖9可以看出,原算法對于行人與車輛檢測存在漏檢和定位不準的問題,對小目標的檢測很困難,在目標堆疊情況下檢測效果很差。本文的改進算法在小目標檢測、目標堆疊等情況下可以檢出更多目標,證明了改進的效果,具有更高的檢測精度,模型的魯棒性更好。
本文提出了一種基于YOLOv5s改進的霧霾天氣下行人與車輛檢測方法,主要工作和結論如下:
① 由于本文數據集包含了大量霧霾場景下的圖像,因此,在通常的圖像預處理階段中,采用暗通道先驗法對圖像進行處理,提高了模型對特征的辨識能力和檢測精度。
② 針對霧霾天氣下圖像的飽和度低、背景色彩偏移等問題,通過加入HAM與替換損失函數的方法,抑制了背景中無關信息的干擾,提高了模型對特征的提取能力,在幾乎不提高模型參數量的情況下保持了檢測速度,同時提高了檢測精度。
③ 在相同的實驗條件下,本文的改進算法與其他傳統(tǒng)神經網絡模型進行了對比實驗,驗證了本文算法在檢測精度與檢測速度方面取得了更好的平衡。