管 堯 朱 凱
(江蘇理工學院,江蘇 常州 213000)
霧是一種常見的自然天氣現象,由于霧霾的存在,增加了圖像上的噪音,尤其在交通道路上采集到的圖像會因為對比度和飽和度低、視覺效果差的原因,給人們的生活以及各種計算機視覺系統任務的有效性帶來嚴重的影響,如道路上的目標檢測、目標追蹤和識別系統。
霧天環(huán)境下的道路目標檢測被分劃為兩個流程,首先經過去霧處理再進行目標檢測。當下,霧天圖像的去霧處理主要分為兩大類。一類是基于傳統的大氣退化模型,利用神經網絡對模型中的參數進行估算;另一類是利用輸入的有霧圖像直接輸出得到去霧后的圖像,即圖像增強的方式;其中何凱明等[1]提出基于暗通道先驗知識統計的去霧算法,該方法對霧氣濃度值估計過高,導致色彩失真;Cai 等[2]提出DehazeNet,利用卷積網絡對大氣退化模型中的透射率進行估計從而恢復無霧圖像。該方法提出了一種新的非線性激活函數,提高了恢復圖像的質量,但是在霧氣情況較重的場景下,由于透射率估計不準確會出現去霧效果不明顯的狀況。因此,當下的去霧算法大多是依賴大氣散射模型的原理,依次對透射率和大氣光值進行估值計算,最終得到去霧后的圖片。所以,本文選用基于該理論的去霧算法:AOD-Net 算法[3],它可通過網絡訓練和學習,能夠對霧天的圖像特征信息進行有效的提取和增強,并且,無需對傳輸矩陣和大氣光的值進行估算,而是通過輕量級的卷積神經網絡直接生成清晰圖像,其數據處理的誤差更小,模型更小。
目前圖像處理在車輛檢測識別中也已經發(fā)展成熟,在利用深度學習進行目標檢測的算法領域,主要分為兩大類:兩階段[4-6]和單階段[7,8]?!皟呻A段”是先經過對圖片生成候選區(qū)域,然后將其分類成不同的目標類別,代表模型有R-CNN、Faster R-CNN[9];“單階段”則將目標檢測任務視為一個端到端的回歸問題,直接進行預測識別,代表模型有YOLO(You Only Look Once)[10]算法系列和SSD(Single Shot Multibox Detector)[11]算法。
以上算法主要存在以下三個問題:①去霧網絡對不同濃度霧的處理性不好,去霧效果不明顯。②去霧模型復雜,耗時多,去霧后的圖像應用到檢測網絡中準確率不高。③在霧天圖像道路上行人和車輛檢測,存在霧天檢測數據集不充足。針對以上問題,本文將AOD-Net的去霧網絡與YOLOv5的檢測網絡進行改進結合,其中YOLOv5 在輸入端采用了Mosaic 數據增強的方式,通過對數據集進行隨機裁剪,打亂布局,隨意縮放的方式,達到豐富數據集的效果,并且,YOLOv5 的網絡訓練框架相對簡潔,因此YOLOv5 的檢測精度和檢測速度更高。同時采用RTTS 的道路霧天數據集,在使用數據增強的前提下,擴充數據集,保證數據集充足,方便提高對霧天環(huán)境下車輛識別的檢測性能且使得模型更加輕量易于嵌套,其流程圖如圖1所示。
圖1 算法流程圖
大氣中存在霧霾、灰塵等介質時,光的傳播會因為這些顆粒的散射導致圖片信息不足,細節(jié)無法辨識,在很大程度上影響了圖片的實用性。圖像去霧的目的就是為了消除霧霾環(huán)境對圖像質量的影響,增加圖像的能見度。其中,霧天圖片能見度較低以及對比度下降的原因,是由于大氣中懸浮的顆粒對光的吸收和散熱造成。由McCartney[12]提出的大氣散射模型,該模型證明,接收到的光經過傳播散射而衰減分為入射光和大氣光。其中,傳播距離越長,入射光越弱,大氣光越強。探測器接收到的大氣光成分主要是太陽直射光、大氣散射光和地面反射光組成。因此,得到的霧天圖片退化模型如式(1)所示:
式(1)中:I(x)是指圖像的亮度;J(x)是去霧恢復之后的圖像;A是全球大氣光成分,環(huán)境光;t(x)是透射率,取值在[0,1]之間。
當大氣均勻時,透射率可以表示為:
式(2)中:β是大氣散射的系數,d(x) 為光線傳輸的距離。該式表達了透射率會隨著光線傳輸距離的增大而呈現出指數型的衰減。
為了使輸出J(x)與真實圖像之間的重建誤差最小,采用自適應的深度模型,其參數將隨著輸入霧天的圖像進行變換;t(x)和A集成到新變量K(x)中,如式(3)所示:
式(3)中:b為恒定偏差,值默認為1。
AOD-Net 算法由兩個模塊組成:一是K 值估計模塊,用于從輸入I(x)中估計K(x),二是利用K(x)的清晰圖像生成模塊,K(x)作為其輸入自適應參數來估計J(x),其算法模型如圖2所示。
圖2 AOD-Net模型
在K值估算模塊中,卷積層融合不同大小的濾波器,以捕捉不同尺度的特征。第一層是輸入層,每個卷積層只使用3 個卷積核。為了結合從不同卷積層提取的特征,在卷積層之間增加了Concat連接層。Concat1 將Conv1 和Conv2 提取的特征連接在一起;Concat2 連接從Conv2 和Conv3 提取的特征,依次類推。Concat層不僅可以結合各種特征實現從低級特征到高級特征的轉換,還可以彌補卷積過程中的信息損失[13]。其模型如圖3所示。
圖3 K值估算模塊
本文采用YOLOv5 算法作為霧天交通道路上的車輛和行人目標檢測網絡,它是一種單階段目標檢測算法,該算法在之前的基礎上添加新的改進之處,使得無論在速度還是精度上都得到了極大的提升,具體包括:輸入端的Mosaic數據增強、自適應錨框計算、自適應圖片縮放操作;基準端的Focus 結構與CSP 結構;Neck 端的SPP 與FPN+PAN 結構;輸出端的損失函數GIOU_Loss[14]以及預測框篩選的DIOU_nms[15]。
該階段通常包含一個圖像預處理階段,即將輸入圖像縮放到網絡的輸入大小,并進行歸一化等操作。在網絡訓練階段,YOLOv5使用Mosaic數據增強操作提升模型的訓練速度和網絡的精度;并提出了一種自適應錨框計算與自適應圖片縮放方法。其中Mosaic數據增強方法,采用了4張圖片按照隨機縮放、隨機裁剪和隨機排布的方式進行拼接而成,將幾張圖片組合成一張,不僅大大豐富了數據集,而且直接計算4張圖片數據,減少了GPU的訓練負荷,降低了模型的內存需求,提升了網絡的訓練速度,具體的效果如圖4所示。
圖4 Mosaic數據增強
其中YOLO算法會根據不同的數據集,預測對應尺寸的錨框(Anchor Box)。在網絡訓練階段,模型會對比初始錨框(Anchor Box),根據對比的尺寸差距輸出對應的預測框,比較兩者與真實背景(Ground Truth)框之間的區(qū)別,然后執(zhí)行逆更新操作,以此更新整個網絡的參數,因此設定初始錨框也是比較重要的一環(huán)。其中圖片的自適應縮放,通常需要執(zhí)行圖片縮放操作,即將原始的輸入圖片縮放到一個固定的尺寸,再將其送入檢測網絡中。YOLO 系列算法中常用的尺寸包括416*416,608*608等尺寸。在最初的縮放方法中,由于圖片的尺寸不同,經過縮放填充之后,圖片兩端的黑邊大小不相同,相反如果填充過多,則會出現信息冗余的情況,加重算法處理的負擔。為了進一步提升YOLOv5算法的推理速度,該算法提出一種方法能夠自適應的裁剪圖片至合適的尺寸送入網絡。
主干網絡通常包含了許多性能優(yōu)異的分類器種的網絡,其中Backbone 模塊用來提取一些通用的特征表示。YOLOv5 中不僅使用了CSPDarknet53 結構,而且使用了Focus結構作為基準網絡。該結構的主要思想是通過切片(slice)操作來對輸入圖片進行裁剪(圖5)。原始輸入圖片大小為608*608*3,經過Slice與Concat操作之后輸出一個304*304*12的特征映射;接著經過一個通道個數為32的卷積層,最終輸出一個304*304*32大小的特征圖。其結構如圖6所示。
圖5 切片操作
圖6 Focus結構
Neck模塊位于基準網絡和頭網絡的中間位置,利用它可以進一步提升特征的多樣性及魯棒性。YOLOv5用到了SPP模塊、FPN+PAN模塊,SPP模塊采用1×1,5×5,9×9,13×13 的最大池化方式,利用Concat 拼接擴充維度的張量,進行多尺度特征融合,SPP 模塊圖如圖7 所示。主干網絡Backbone和Neck 中設計了兩種不同的CSP 結構:CSP1_X 和CSP2_X,都借鑒了CSPNet 的網絡結構,主要優(yōu)點是在網絡模型輕量化的同時保證準確性,同時降低了對計算機設備的要求。CSP1_X 模塊由CBL 模塊及卷積層Concat 而成,CSP2_X 模塊由卷積層和多個殘差結構Concat 組成,用于構建深層網絡,進一步加強了網絡特征融合的能力其模塊分別如圖8、圖9所示。
圖7 SPP模塊
圖8 CSP1_X模塊圖
圖9 CSP2_X模塊圖
該端用來完成目標檢測結果的輸出。其中IoU(Intersection over Union)表示兩個方框所在區(qū)域的交并比,用于測量真實和預測之間的相關度,相關度越高,該值越高。其計算公式如式(4)。圖10 展示了Ground-Truth 和predicted 的結果,綠線代表人工標記的結果,紅線代表算法預測出的結果,IoU 利用這兩個結果計算算法的精確性,以此來提高車輛檢測率。
圖10 IoU損失函數算法
YOLOv5中采用由IoU衍生出的GIoU_Loss做預測范圍的損失函數。其損失函數公式如式(5),用C和A∪B比值的絕對值除以絕對值C得到閉合區(qū)域中不屬于兩個框的區(qū)域比重,最后計算IoU與比重的差,得到GIoU的值。
式(5)中A、B、C的含義如圖11所示。
圖11 GIoU損失函數算法
在目標檢測的后處理過程中,針對很多目標框的篩選,通常需要經過非極大值抑制處理(Non-Maximum Suppression,NMS)[16]。算法可能對同一個對象做出多次檢測,NMS可去除冗余的檢測框,保留最好的一個。如圖12所示。
圖12 NMS算法
在YOLOv5中所用到的Weighted NMS[17]的方式,在進行矩形框剔除的過程中,并未將那些與當前矩形框IOU大于閾值且類別相同的框直接剔除,而是根據網絡預測的置信度進行加權,得到新的矩形框,把該矩形框作為最終預測的矩形框,再將冗余的檢測框剔除。
本次程序設計平臺為Python,并同時安裝了cuda10.1 和cudnn7.6 用于完成模型的訓練與測試。具體實驗配置如表1所示。
表1 實驗環(huán)境
本次實驗將NYU2 數據集[18]劃分為訓練集24443 張圖片,驗證集2813張圖片。以此訓練去霧網絡,其中初始學習率為1e-4,權重衰減值設為1e-4,一次訓練所抓取的數據樣本數量為8,迭代次數為10。利用訓練得到的模型進行不同霧氣濃度下的對比實驗,如圖13~15 所示,其中圖左為原始圖片,圖右為去霧處理后的圖片。最后對真實的霧天數據集RTTS[19]進行去霧處理,應用于目標檢測階段。
圖13 輕度霧氣下的處理結果
圖14 中度霧氣下的處理結果
圖15 重度霧氣下的處理結果
目前常用的去霧算法評價指標有,均方根誤差(Root Mean Square Error,RMSE)、峰值信噪比(Peak Signal To Noise Ratio,PSNR)、結構相似度(Structural SIMilarity,SSIM)。其中PSNR 為基于誤差敏感的圖像質量評價,用于評價兩幅圖像相比質量的好壞,即失真情況,其公式如式(6)~(7)所示。SSIM 用均值作為亮度(Luminance)的估計,標準差作為對比度(Contrast)的估計,協方差作為結構(Structure)相似程度的度量,其公式如式(8)~(11)所示。RMSE反映的是空間細節(jié)信息的評價指標,其公式如式(12)所示。
在圖像處理算法中,對一張H×W的圖片,MSE 指處理后圖像像素值與原始像素值之差平方和的均值,其公式如式(6)所示。
對于一張未失真的圖片X 和一張失真的圖片Y,SSIM分別從亮度、對比度、結構三方面度量圖像的相似性,其公式如下:
式中:C1=(K1L)2,C2=(K2L)2為兩個常數,避免除零,L為像素的范圍,K1=0.01,K2=0.03 為默認值;一般取C3=C2/2 ;uX、uY為圖像X和Y的均值;σX、σY分別為圖像X和Y的方 差;σXσY表示圖像X和Y的協方差;C1、C2、C3為常數項。
PNSR 和SSIM 值越大,RMSE 值越小,表示圖像失真越??;此次分別利用傳統的DCP[20]去霧方法得到的數據集和基于色彩增強的MSRCR[21]去霧方法得到的數據集,與經過AOD-Net去霧網絡訓練得到的數據集與進行對比,得到處理過后的指標,其對比如表2所示。
表2 本文數據集去霧效果的客觀評價
分析表2 可知,經過不同的去霧處理后,經AOD-Net 網絡去霧后的數據集相比于其他的去霧方法的PNSR值提高了2.16、0.5;SSIM 值提高了0.0398、0.01;RMSE 值降低了16.7、8.2。綜上,處理后的數據集,得到了更詳細的透射圖像,圖片信息更加豐富,為車輛檢測提供了更好的圖像。
本次將RTTS數據集劃分為訓練集3889張圖片,驗證集433 張圖片進行模型訓練。該數據集包含的種類以及數據集中檢測的目標數如表3 所示,同時本文算法采用Mosaic數據增強,使數據集目標分布更加均衡,并且這種重新組合圖像的方式增強數據集的豐富性,使得神經網絡訓練的魯棒性更好。
表3 RTTS數據集的相關數據
本次實驗部分實驗參數學習率為0.0001,權重衰減系數為0.0005,batch_size為8,訓練批次為260,采用Adam梯度優(yōu)化使得模型總損失快速收斂,本次共訓練了4個模型,模型1為YOLOv5s,模型2 為AOD+YOLOv5s,模型3 為DCP+YOLOv5s,模型4 為MSRCR+YOLO5s,以此來比對出本文算法的提升效果,具體訓練過程參數如圖16所示。
圖16 不同模型的過程參數
在目標檢測領域中,平均精度值(Mean Average Precision,mAP),作為當下衡量網絡模型訓練的重要參數,其中包含著模型的精確率P、召回率R。其公式如式(13)~(14)所示:
式(13)~(14)中:TP表示實際預測的正樣本的個數;FP表示實際預測中假的正樣本的個數;FN 為實際預測中假的負樣本的個數。
此外,算法檢測速度也是衡量算法性能好壞的重要指標。FPS是用來評估目標檢測的速度,即每秒內可以處理的圖片數量或者處理一張圖片所需時間來評估檢測速度,時間越短,速度越快。其公式如式(16)所示:
式(16)中:Frame為幀數,second為秒數。
本節(jié)使用控制變量法用于驗證當前構造的去霧檢測算法是較優(yōu)的結構,并且選取了幾張圖片進行模型之間的比較。如圖17所示,17(a)模型1為YOLOv5s算法下的效果圖,17(b)模型2 為AOD+YOLOv5s 算法下的效果圖,17(c)模型3為DCP+YOLOv5s算法下的效果圖,17(d)模型4為MSRCR+YOLOv5s算法下的效果圖。
圖17 (a) 模型1
圖17 (b) 模型2
圖17 (c) 模型3
圖17 (d) 模型4
由圖17(a)~17(d)知,在霧天條件下的目標檢測中,模型2對目標的檢測效果明顯優(yōu)于其他3個模型。對交通道路上的目標的定位精度高于其他模型,且檢測到的目標可靠度更高。
最終訓練結果的具體參數如表4所示,在所選的數據集上模型2的MAP@0.5值相比于其他模型分別提高了1.31%、1.08%、0.73%,模型2 召回率相比于模型1、模型3、模型4 分別提高了3.4%、2.58%、1.78%。模型2 的檢測速度FPS 達到了25.0,優(yōu)于其他3個模型。
表4 不同算法模型間的性能對比
本文結合去霧算法與目標檢測算法,一方面,適用于不同霧氣濃度下的交通環(huán)境,去霧效果明顯,另一方面,改善了霧天車輛識別精度低、速度慢的問題。實驗可見,該方法在真實霧天交通道路上的車輛檢測的mAP 值可達81.73%,FPS可達到25.0。并且,相比于其他算法,該目標檢測精度更高,泛化能力更好,算法模型更加輕量化,便于嵌套使用;下一步將繼續(xù)增加數據集的圖片數量和不同的霧天場景,從而為未來自動駕駛霧天環(huán)境下的車輛和行人檢測奠定基礎。