梁銘峰 李 蠡(成都信息工程大學 四川 成都 610000)
隨著高速公路與高速城市道路交通事故頻率的不斷攀升,防碰撞預警輔助裝置的需求也在日益增多。由于行車記錄儀的鏡頭物理特性導致在高速情況下出現圖像失真、檢測目標模糊等情況,通過消除模糊并提前預警前車的突然出現或者異常狀況可以最大程度地使駕駛員做出相應的防御措施。模糊圖像去模糊方法分為兩種不同的類型:盲目和非盲目去模糊。早期傳統方法主要圍繞著非盲目去模糊展開,如Lucy提出的一種基于貝葉斯理論且使用最頻繁、變體最多的迭代去卷積方式Lucy-Richardson圖模糊算法[1]。Wiener或Tihkonov regularization范數最小化誤差去卷積正則法也是最常用于獲得IS估計的兩種方法[2]。但在實際中很難找到適合模糊圖像的濾波系數,因為每一個模糊圖像的像素模糊都存在不確定性,無法預先設定好系數使其完美濾波。自從生成對抗模型被提出以來,GAN已經擴展到各種應用程序[3]。針對高速運動模糊的運用場景,本文對于模糊圖像的處理采用生成對抗網絡(GAN)。相較于傳統處理模糊圖像的方法,GAN網絡的效率更高,對于圖像的重建效果更好。本文采用的GAN網絡主要為DeblurGAN[4],是基于條件對抗式生成網絡和內容損失的端對端學習網絡。深度檢測算法可以分為“one-stage”和“two-stage”兩類;“two-stage”檢測算法將檢測問題劃分為兩個階段,首先產生候選區域(region proposals),然后對候選區域進行識別位置調整與目標分類,這類算法的典型代表是基于region proposal的R-CNN系算法[5],如R-CNN[6]、SPPNet[7]、Faster R-CNN[8]、FPN[9]、R-FCN系列算法[10]。“one-stage”檢測算法由于不需要region proposal這個過程,直接產生物體的類別概率和位置坐標值,經過單次檢測即可得到最終的檢測結果,因此有著更快的檢測速度,如YOLO、SSD[11]、Retina-Net[12]。為了更好地處理動態場景中的去模糊與目標檢測所具有實時性與高準確性的要求,本文在YOLOv3[13]的網絡基礎上根據目標尺度進行網絡裁剪壓縮,與預處理網絡相結合,形成深度融合的快速防碰撞交通檢測模型。
生成對抗網絡(GAN)[14]是非監督式學習的一種方法,該方法由Goodfellow等在2014年首次提出。該網絡主要由一個生成網絡與一個判別網絡構成,兩個網絡相互具有競爭性。生成模型G的目標旨在生成與真實圖像相似的圖像。判別模型鑒別器D的目標旨在將來自發生器的偽圖像與真實樣本盡可能分辨出來。兩個網絡模型都是基于深度神經網絡構建的,因此,GAN網絡構建了一種反饋循環結構,其中生成模型G幫助改進鑒別器D,與此同時鑒別器D幫助改善發生器G的生成質量,這兩個網絡模型相互反饋,針對目標任務相互優化,其原理與損失函數如圖1所示。

(1)
式中:B來源于模糊圖像數據源;S來源于真實圖像數據源;psharp表示真實圖像集中的圖像S所對應的分布情況;pblurry表示模糊圖像集中的模糊圖像B經生成器G所產生的輸出分布;E表示期望;D表示判別器對輸入圖像為真的概率;G表示生成器對圖像的生成結果。
DeblurGAN的網絡結構主要由模糊生成器、去模糊處理和比較器三個模塊組成,網絡結構中包含兩個1/2間隔的卷積單元、9個residual單元和兩個反卷積單元。每個ResBlock由一個卷積層、一個實例歸一化層和一個ReLU激活函數組成,這樣可以模擬更逼真和復雜的模糊像素。該算法遵循Boracchi等[15]描述的隨機軌跡生成的想法,通過將子像素內插于軌跡向量來生成圖像。每個軌跡是復值向量,其對應于在值與連續域中跟隨2D隨機運動的對象的離散位置。軌跡生成是通過馬爾可夫過程完成的,軌跡的下一個點的位置是基于先前的點速度和位置、高斯擾動、脈沖擾動和確定性慣性分量隨機生成的。DeblurGAN的原理如圖2所示。

圖2 DeblurGAN原理
隨后對抗過程是使用兩個卷積進行兩倍下采樣,同時將網絡的通道數由原來的64增加至256。之后經由9個residual殘差模塊進行去模糊處理,最后由兩個反卷積模塊對圖像的上采樣還原圖像最初的輸入尺寸。DeblurGAN網絡結構如圖3所示。

圖3 DeblurGAN網絡結構
YOLO是一種一階段目標檢測算法,是端到端目標檢測算法,它可以直接預測目標的類別和位置,因此具有高效的檢測速度與精確度[16]。YOLOv3新提出了一種名為Darknet-53的深度特征提取網絡架構,它包含53個卷積層,每個卷積后面都有標準池化層和Leaky ReLU激活層,并使用步長為2的卷積層來對特征圖進行下采樣。
YOLOv3將待檢測圖像劃分為N×N個網格,如果待檢測目標的中心位置落入網格中,網格則發起檢測,預測出邊界框的分布及其置信度得分,同時得到待檢測目標分類的概率。邊界框的組成包含五個數據值,即x、y、w、h和置信度,其中:x和y表示當前網格預測的對象邊界框中心位置的坐標;w和h是邊界框的寬度和高度。置信度的定義如下:
(2)
式中:pr(·)表示目標是否存在,當待檢測目標落入網格中時pr(Object)=1,其他情況pr(Object)=0;IoU用于表示所預測的邊框與實際邊框的重合率大小,當多個邊界框檢測到同一目標時,則使用非最大值抑制(NMS)[17]用于選擇最佳邊界框。盡管YOLO的檢測速度比R-CNN系列檢測速度更快,但它具有較高的檢測誤差。為了解決這個問題,YOLOv3提出的第一項改進是使用多標簽分類,使用多標簽分類的Logistic分類器,對于重疊的標簽,可以更好地模擬數據。以前的YOLO版本使用Softmax函數用于分類,而YOLOv3中的分類損失函數對每個標簽使用二進制交叉熵損失判別,從而代替先前版本中使用的一般均方誤差。第二項改進是使用不同的邊界框預測方法,先前版本使用passthrough layer層,其作用是將前一層的feature map進行特征重排,然后與后一層的全連接層進行連接,感受野范圍的縮小有利于提升對小目標檢測的精確度,這個思想在YOLOv3版本中得到了更進一步提升。同時使用批量標準化BN(Batch Normalization)技術,它通過歸一化的預處理達到調整和縮放激活輸入圖層,在所有卷積層上添加BN層后,YOLOv3的mAP提高了2%。此外,伴隨著BN與Dropout技術的使用,使得模型過擬合的情況得到抑制。YOLOv3采用了3個不同尺度的特征圖進行檢測,經過32倍的下采樣得到13×13的特征圖,這里特征圖感受野比較大,適合中大尺寸對象檢測,第79層進行上采樣與第61層進行特征融合得到較細粒度的特征圖,具有中等尺度的感受野,適合中等目標檢測。最后,第91層特征圖再次上采樣,并與第36層特征圖融合,最后得到相對輸入圖像8倍下采樣的特征圖。它的感受野最小,適合檢測小尺寸的對象[18]。YOLOv3不僅為大特征映射提供了更精細的目標信息,也為小特征映射提供了更深層的語義信息,通過上采樣調整特征圖的深度,通過串聯與深層的特征圖融合,使其具有良好的檢測性能。
通常模糊圖像可以使用式(3)進行建模。
F(x)=h(x)*f(x)+n
(3)
式中:F表示模糊圖像;f表示清晰原圖;h表示模糊點擴散函數PSF(Point Spread Function);*表示卷積運算符;n表示附加噪聲,通常情況n是高斯噪聲白噪聲。
運動模糊是在曝光期間內,由待檢測目標與物理鏡頭之間的相對線性運動所引起的,且與水平軸成θ角,運動模糊的點擴散函數表達公式如下:
(4)
式中:L是模糊長度;θ是模糊角度;x與y為真實像素點坐標。運動模糊處理效果如圖4所示。

(a) 清晰原圖

(b) 運動模糊處理圖4 運動模糊處理效果
為了實現檢測模糊圖像功能,本文在YOLO網絡的預處理功能中加入DeblurGAN網絡,YOLO除了對輸入的圖片進行尺寸自適應外,同時也能夠增強圖像清晰度,并將模型應用于防碰撞預警檢測任務,具體流程如圖5所示。在新的網絡結構中,去除了DeblurGAN網絡的模糊生成器和比較器,只保留其去模糊處理,盡量減少GAN網絡的加入對YOLO原網絡的影響。當YOLO網絡接收到輸入的圖片經過自適應處理生成416×416尺寸的幀圖片后,由DeburlurGAN網絡中的去模糊處理模塊對其進行去模糊操作,DeburlurGAN在完成去模處理后經由反卷積網絡層將圖片大小重新恢復成416×416尺寸。去模糊完成后經由YOLO特征提取網絡resnet網絡進行特征的提取。在這一部分本文分析檢測對象,行人、汽車、交通標志,三者有明顯的剛性結構特征且不易混淆,先由YOLOv3-tiny網絡進行訓練測試,達到了mAP 54.23%的檢測結果。考慮到將DebulurGAN加入到YOLOv3網絡中勢必會增加網絡整體的計算量,大大降低其檢測速度。基于在YOLOv3-tiny中測試得到的結果,對特征提取網絡進行網絡壓縮,降低由于增加去模糊模塊所帶來的影響。分析YOLO的網絡結構,其對于目標的特征提取網絡主要由23個殘差結構組成,每個殘差結構由1×1和3×3的卷積層組成,之后分別由三個不同尺度的YOLO層完成對目標的檢測。本次實驗中采用的壓縮方法主要為剪裁網絡層和對網絡通道進行降維。對YOLOv3網絡層的參數結構進行分析,對于尺度為13和26的特征圖所使用的卷積層通道數較多,其中含有較多的無效連接,因此對于這兩個尺度的特征提取模塊,本文均對其卷積層進行降維操作。分析整體應用場景,本文實驗去除一半52尺度的特征提取通道檢測,最終訓練得出的mAP也能達到76.48%,相較于網絡修改前所測得的mAP 79.14%,只下降了2.66百分點,即說明了52尺度的細粒度場景檢測對于本次實驗中的檢測對象無太大檢測增強作用。在網絡結構中,本文將60至80層的卷積殘差模塊特征提取通道降為原來的一半。BL-YOLOv3檢測流程如圖6所示。

圖5 防碰撞預警檢測流程
由于車輛日常使用環境的多變性,本實驗通過行車記錄儀截取了在不同天氣情況(雷雨、陰天)下以及早中晚不同陽光強度下的行駛視頻幀,并充分涵蓋了上坡、快速、街道、下坡、急轉彎等復雜路段。本文檢測對象分別是行人(person)、車輛(Car)、交通標志(Traffic Sign),選取多個不同環境下且具有良好目標特征的視頻幀后,利用LabelImg標工具對目標進行標示,最后將標簽數據文件.xml轉化為YOLO訓練所需要的的TXT文本。數據集如表1所示。
YOLOv3中的默認anchor尺度是由作者通過聚類VOC數據集得到的,20類目標中大到bicycle、bus,小到bird、cat,這樣的anchor參數并不適合本場景的待檢測目標對象,本文利用標簽中的先驗信息進行聚類計算anchor,提高bounding box的檢出率。同時批次樣本數(Batch)設置為64,為了進一步提升訓練效率,將Subdivsion Size提高到16,將圖像輸入的默認resize尺寸由416提升到608以達到提升圖像識別精度,迭代次數設置為83 000次,采用小批量SDG(隨機梯度下降法)進行訓練。本實驗條件如下:基于Windows 10下的Visual Studio 2015平臺,CPU為Intel I7-8700K,內存為32 GB,GPU為NVIDIA GTX-1080TI,硬件加速庫為NVIDIA CUDA10.1。
為了檢驗BL-YOLOv3的去模糊塊有效性,本文采用Lucy-Richardson算法估計點擴展函數(PSF)與維納濾波器的傳統圖模糊算法、生成對抗網絡去模糊塊(deblur)與基于深度學習的圖像超分辨率重建算法在二級運動模糊情況下進行仿真實驗。Lucy-Richardson算法是一種基于貝葉斯思想的空間域上的圖像復原方法,該算法從貝葉斯理論出發推導了圖像迭代復原的基本框架。維納濾波器則是用最小均方差濾波來去除含有噪聲的模糊圖像,其目標是找到未污染圖像的一個估計,使它們之間的均方差最小。超分辨率重建算法則是對于一個低分辨率圖像,先使用雙三次(bicubic)插值將其放大到目標大小,再通過三層卷積網絡做非線性映射,得到的結果作為高分辨率圖像輸出。本實驗采用Tenengrad梯度的算法對增強圖像質量進行評估。該方法利用Sobel算子分別計算水平和垂直方向的梯度,同一場景下梯度值越高,圖像越清晰,衡量的指標是圖像的平均灰度值,值越大,代表圖像越清晰。去模糊實驗效果如圖7所示,圖像質量評估結果如表2所示。

(a) Lucy-Richardson算法結果

(d) 超分辨率重建算法圖7 去模糊實驗效果

表2 圖像質量評估
由結果可知,在相同運動的模糊強度條件下,Lucy-Richardson與維納濾波器算法增強結果較差,當噪聲較為復雜時,傳統濾波方法難以計算出噪聲的頻域模型,不能合理地去除噪聲干擾,在這個應用場景下幾乎失去了目標檢測條件。相對于超參數處理算法,deblur的Tenengrad的Sobel結果更大,質量評估效果更好,超參數處理算法在還原清晰圖像過程中,會帶來峰值信噪比(PSNR)與結構相似性指標(SSIM)的下降從而失去一些有用的細節部分,神經網絡在淺層的特征提取只是位置信息,而加入的噪聲會導致在深層提取細節信息時造成干擾。由于YOLOv3具有良好的泛化能力,在模型計算開銷與實時性的客觀要求下,deblur去模糊算法取得了較好的效果。
由于本次檢測的目標主要為車輛,其目標體積較大易檢測。在YOLOv3結構的設計中為了增強小目標的檢測加入了52尺度的特征檢測,但根據實際應用場景中需要檢測的目標為大目標較多,故本模型對52尺度的feature map進行裁剪,減少網絡整體不必要的推算,并對裁剪前后的檢測效果進行比對。同時對網絡層的參數量進行計算,13和26尺度的feature map存在有計算量較多的層,為保證不丟失過多的目標信息,只對每個殘差塊中最后一個3×3卷積層進行通道壓縮,壓縮后的前后精度測試結果如表3所示。

表3 目標檢測模型優化對比結果
綜上,經過剪裁與壓縮后的網絡在精度上并沒有太大損失,但對于計算量的減少與計算速度的提升有一定程度的優化。
本文進行了兩組對比實驗,分別使用改進算法BL-YOLOv3和YOLOv3算法在自建數據上進行訓練測試,并計算出各自算法的AP(Average Precision),如圖8所示。

圖8 平均準確率對比
實驗結果表明,相比在相同基礎訓練集上的YOLOv3模型,BL-YOLOv3網絡在輕量化處理以后,其在準確性與精度上均達到了不錯的水平,同時也加快了模型的識別速率與訓練速度。從圖8中可以得到,本文提出的BL-YOLOv3獲得了75.48%的mAP,在此使用場景下,精度方面優于YOLOv3,在視頻檢測中,實時速率達到了42.16幀/s,滿足實時檢測的要求。可以看到,本文提出的模型對車輛、人、交通標志的檢測分類具有較好的魯棒性。
圖9(c)和圖9(d)右邊圖像為Deblur預處理過后的識別效果,對比未先預處理過的YOLOv3模型,可以看出,BL-YOLO在該應用場景下的(人、車、交通標志)的AP數據有了一定幅度的提升(約13%),取得了較好的效果。

(a) 模型視頻幀測試場景示意1

(b) 模型視頻幀數測試場景示意2
按照3.1節的實驗配置,本文將結合BL-YOLO與YOLOv3在同一超參數設置下進行訓練,并對測試結果做了橫向對比。首先是對兩個網絡進行25 000次的迭代訓練,將訓練日志保存輸出,繪制出兩個網絡的訓練損失曲線圖。曲線圖如圖10所示。
為了降低DeblurGAN網絡的加入對YOLOv3檢測速度影響,本實驗對YOLO的主干網絡進行了壓縮,減少網絡參數加快了網絡的計算。通過訓練損失曲線圖可以看出,雖然對主干網絡的壓縮操作會對特征的提取造成一定的影響,但是壓縮前后的訓練損失偏差值只在0.1~0.2的范圍區間,說明其檢測精度并未大幅度下降,滿足實際運用條件。
根據8 ∶2的訓練集與測試集比例需求,本文使用測試集對BL-YOLOv3和YOLOv3進行對比測試。測試的內容主要包括準確率、召回率、漏檢率和平均準確率,測試集為6 961幅經過運動模糊處理的樣本。測試結果如表4所示。

表4 測試結果(%)
(5)
(6)
(7)
(8)
分析表4數據,YOLOv3即使擁有良好的泛化能力,但是對于模糊圖像的檢測,其檢測精度與檢測性能都有明顯下降。但是加入去模糊處理的BL-YOLOv3對于模糊圖像的檢測,精度與性能接近于目前深度學習算法對于該類目標檢測的平均值,說明了去模糊處理的加入在很大程度上提高了檢測性能。
關于二者的性能對比,查準率結果如圖11所示,本實驗直觀地從P-R曲線圖中可以看出,對于模糊目標樣本的檢測,優化后的BL-YOLOv3要優于YOLOv3。

圖11 查準率結果
另外本實驗采集了道路實景照片,經過不同等級的運動模糊處理模仿實際情況中可能出現的模糊效果,對改進前后的YOLOv3進行對比,二者的檢測結果如圖12所示。

(b) 二級模糊圖12 運動模糊處理圖像
圖12(a)采用一級運動模糊模(一次運動模糊處理)擬車速較快時出現的模糊情況,圖12(b)采用二級運動模糊(在一次運動模糊的基礎上,保持相同參數再次模糊)模擬當車輛經過減速帶等崎嶇路面抖動造成的模糊情況。
對于一級模糊的檢測對比如圖13所示。

(a) YOLOv3

(b) BL-YOLOv3圖13 一級運動模糊檢測效果對比圖
對于二級模糊的檢測對比如圖14所示。
從圖13(a)和圖13(b)的對比結果直觀分析,在一級模糊的情況下YOLOv3的檢測只出現了小規模的漏檢情況,但在二級模糊條件下,如圖14(a)和圖14(b)所示,YOLOv3基本失去檢測能力。但是改進后的算法仍然能對目標進行有效檢測,說明了加入去模糊模塊對檢測性能的提升有很大的幫助。
本文提出一個基于生成對抗網絡去模糊網絡模塊實時檢測算法的目標檢測神經網絡BL-YOLOv3,并用于實時防碰撞預警駕駛視頻目標檢測,為汽車前向目標防碰撞測試提出了優化方案。利用DeblurGAN的快速盲去模糊預處理的方法,優化了一般檢測算法在模糊環境下的檢測精度。為了證明本文方法的有效性,將其與YOLOv3方法進行了比較。實驗結果表明,與YOLOv3模型相比,BL-YOLOv3在檢測速度與精度上有了顯著的提高。目前對灰暗環境以及處于反光條件的小目標交通標志的識別中,仍然出現空目標或者識別框不準確等問題,這是下一步需要繼續完善的地方。