華 丹,楊 碩,2,王藝鋼
(1.沈陽化工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,遼寧 沈陽 110142;2.遼寧省化工工程工業(yè)智能化技術(shù)重點(diǎn)實(shí)驗(yàn)室,遼寧 沈陽 110142)
車輛檢測是計(jì)算機(jī)視覺中的重要任務(wù)之一,在智能交通和自動駕駛等領(lǐng)域涉及較廣泛。在霧天環(huán)境下,圖像的對比度下降、可辨識度較低,嚴(yán)重影響車輛的檢測效果,因此提高霧天車輛檢測的準(zhǔn)確性具有重要意義。
霧天環(huán)境下車輛檢測分為兩個(gè)階段:去霧階段和車輛檢測階段。針對去霧階段,文獻(xiàn)[4]提出了一種使用半全局加權(quán)最小二乘優(yōu)化局部大氣光去霧的算法,提高了去霧圖像的亮度,但該算法在去霧的效果方面仍不理想。文獻(xiàn)[5]通過級聯(lián)直方圖均衡化和NBPC+PA模型提高了去霧后圖像的能見度,但該算法魯棒性較差。文獻(xiàn)[6]提出了一種融合亮度模型和梯度域?yàn)V波的算法,一定程度上提升了去霧的效果,但該算法模型較復(fù)雜,魯棒性不夠。
在車輛檢測階段,得益于深度學(xué)習(xí)強(qiáng)大的特征檢測能力,基于深度學(xué)習(xí)的車輛檢測算法發(fā)揮著越來越重要的作用。文獻(xiàn)[8]提出了一種基于Faster RCNN和增量學(xué)習(xí)的車輛目標(biāo)檢測算法,改善了漏檢錯檢的問題,但該算法檢測精度較差。文獻(xiàn)[9]提出了一種基于改進(jìn)SSD的車輛檢測算法,該算法通過網(wǎng)絡(luò)剪枝與參數(shù)量化融合減少了模型的冗余參數(shù),提升了檢測速度,但檢測精度有所欠缺。文獻(xiàn)[10]提出了一種改進(jìn)的YOLOv3算法,該算法通過增加網(wǎng)絡(luò)輸出層數(shù)在一定程度上提高了車輛檢測的精度,但檢測性能仍有所不足。
針對上述去霧算法效果較差、檢測算法精度較低的問題,本文提出一種基于暗通道去霧算法和改進(jìn)YOLOv3模型的霧天車輛檢測算法。首先,在去霧階段通過暗通道去霧算法降低霧氣對圖像檢測的影響;其次,在車輛檢測階段使用K-means聚類算法計(jì)算出適用于車輛檢測的先驗(yàn)框。YOLOv3算法的先驗(yàn)框由COCO數(shù)據(jù)集的圖片進(jìn)行預(yù)設(shè),并不能完全適用于車輛檢測,針對霧天車輛數(shù)據(jù)集計(jì)算先驗(yàn)框可以提高算法的精確度;最后,在YOLOv3算法的特征金字塔模塊中引入注意力機(jī)制,注意力機(jī)制可以加強(qiáng)算法對特征的挖掘能力,提高算法的檢測效果。
由于大氣中的微粒會對光產(chǎn)生大量的散射,霧天圖像質(zhì)量會被不同程度地降低?;谏鲜鲈恚琋arasimhan等人提出了解釋霧天圖像成像過程的大氣散射模型,該模型的數(shù)學(xué)描述如式(1)所示。
上述模型的適用條件是場景中的霧分布均勻。式中:表示像素點(diǎn)位置;()和()分別表示待恢復(fù)的無霧圖像和原始霧圖;()為場景透射率;表示大氣光值。
暗通道先驗(yàn)理論(DCP)是對無霧圖像屬性的一種經(jīng)驗(yàn)性觀察,該理論認(rèn)為在非天空的圖像區(qū)域,總有一些像素點(diǎn)至少有一個(gè)顏色通道具有接近零的像素值。暗通道先驗(yàn)理論的數(shù)學(xué)描述如式(2)所示。
式中:()為像素點(diǎn)的鄰域;{,,}表示每個(gè)像素的三個(gè)顏色通道;是圖像的暗通道。
結(jié)合式(1)和式(2),可以得到圖像的粗估計(jì)透射率()為:
式中引入一個(gè)在[0,1]之間取值的修正參數(shù),從而保留圖像中遠(yuǎn)處的霧,使圖像更自然。仿真結(jié)果表明,取0.95時(shí)復(fù)原效果最好。
將得到的透射率和大氣光值代入大氣散射模型中獲得去霧圖像,再對該圖像做Gamma校正調(diào)整對比度,最終得到復(fù)原的去霧圖像。
暗通道去霧算法的效果如圖1所示。相較于原圖,暗通道去霧后的圖像更為清晰,車輛目標(biāo)的輪廓更明顯,對比度更強(qiáng),有利于提高檢測算法的精度。
圖1 暗通道去霧算法效果
YOLOv3算法由主干提取網(wǎng)絡(luò)、特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network, FPN)和檢測網(wǎng)絡(luò)三部分組成,網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 YOLOv3算法網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3算法以DarkNet-53為主干特征提取網(wǎng)絡(luò)。DarkNet-53通 過 3×3和 1×1的卷積層(Convolution Layers)跳躍連接,利用L2正則化、激活函數(shù)(Leaky ReLu)和批標(biāo)準(zhǔn)化(BatchNormalization, BN)提高模型泛化能力;同時(shí)引入了殘差網(wǎng)絡(luò)(Residual Network),減少了多層網(wǎng)絡(luò)的訓(xùn)練難度,提升了檢測的精度。
在特征金字塔模塊,為了獲取細(xì)粒度特征,YOLOv3對深層特征圖進(jìn)行上采樣(UpSampling),再與淺層特征圖進(jìn)行Concatenate拼接。拼接后的特征圖融合了深層和淺層的特征信息,提升了算法的檢測性能。
為了使算法針對不同尺度的目標(biāo)具有相同的檢測效果,YOLOv3算法采用多尺度檢測網(wǎng)絡(luò)。從DarkNet-53中選取3種不同尺度特征圖(13×13,26×26,52×52),對這三個(gè)特征圖分別做3×3和1×1的卷積運(yùn)算,并進(jìn)行特征整合和通道調(diào)整,計(jì)算后的結(jié)果合并轉(zhuǎn)移給損失函數(shù)。
YOLOv3算法的損失函數(shù)為回歸損失、置信度損失和分類損失的加權(quán)和。在回歸損失中采用誤差平方和,在置信度損失和分類損失中采用交叉熵?fù)p失,各損失計(jì)算的數(shù)學(xué)描述如式(4)所示。
YOLOv3算法在目標(biāo)檢測方面具有較好的性能,但在應(yīng)用于霧天車輛檢測時(shí)存在以下問題:(1)YOLOv3算法的框不能完全適用于車輛檢測;(2)多尺度檢測網(wǎng)絡(luò)雖然對特征進(jìn)行了整合,但是并沒有加強(qiáng)對特征的提取,還存在對特征挖掘不足的問題。針對以上問題,本文對YOLOv3進(jìn)行了相應(yīng)的改進(jìn)。
YOLOv3算法的先驗(yàn)框是根據(jù)COCO數(shù)據(jù)集預(yù)設(shè)的,不能很好地適用于本文的霧天車輛檢測數(shù)據(jù)集。為了使算法能夠更加準(zhǔn)確和快速地對車輛進(jìn)行檢測,通過K-means聚類算法對本文數(shù)據(jù)集中的真實(shí)框(Ground TrueBox)進(jìn)行分析。
傳統(tǒng)的K-means聚類算法多以歐氏距離來計(jì)算對象間的距離,但是對先驗(yàn)框使用歐氏距離計(jì)算時(shí),大先驗(yàn)框的誤差更大,因此使用改進(jìn)的交并比(IOU)公式進(jìn)行計(jì)算,如式(5)所示。
式中,IOU表示聚類中心與真實(shí)框的重合程度,其數(shù)學(xué)描述如式(6)所示。
CA(Coordinate Attention)模塊是一種融合位置信息和通道信息的注意力機(jī)制,在空間和通道維度上加強(qiáng)了特征挖掘能力,其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 注意力機(jī)制網(wǎng)絡(luò)結(jié)構(gòu)
全局池化可以在通道注意力中采集空間信息,但是難以保留位置信息。為了將位置信息嵌入到空間信息中,將全局池化分解為兩組一維的池化。對尺寸為××的輸入,分別使用尺寸為(,1)和(1,)的池化核沿著水平和豎直方向?qū)γ總€(gè)通道進(jìn)行編碼。高度為和寬度為的第個(gè)通道的輸出分別為:
將這一對輸出的池化結(jié)果進(jìn)行Concatenate級聯(lián),然后使用一個(gè)共享的1×1卷積對其做變換,如式(9)所示。
其中,表示下采樣比例。沿著空間維度將劃分為兩個(gè)單獨(dú)的張量f∈ R和f∈ R。使用兩個(gè) 1×1 卷積F和F將特征圖f和f變換到與輸入同樣的通道數(shù),如式(10)和式(11)所示。
對p和p進(jìn)行拓展,作為注意力權(quán)重,添加到輸入中。CA模塊的最終輸出如式(12)所示。
最終通過CA模塊,對輸入完成了水平和豎直方向的特征挖掘。
本文實(shí)驗(yàn)環(huán)境為:11th GenIntel Corei5-1135G7@2.4 GHz,8 GB內(nèi)存,NVIDIA Geforce MX450 2 GB,64位Windows10操作系統(tǒng)。編程語言為Python,框架為Pytorch1.8.1,GPU加速庫為CUDA11.1和cuDNN7.65。
在本文的實(shí)驗(yàn)中,將數(shù)據(jù)集圖片的尺寸統(tǒng)一縮放到416×416,設(shè)置參數(shù)Batchsize為4,學(xué)習(xí)率為0.001,使用Adam優(yōu)化器調(diào)整網(wǎng)絡(luò)的學(xué)習(xí)率。實(shí)驗(yàn)的訓(xùn)練周期為100個(gè)Epoch,直到Loss不再變化,自動終止訓(xùn)練。
本文使用的數(shù)據(jù)集為自制的霧天車輛檢測數(shù)據(jù)集,包含13 526張圖片,按照7∶2∶1的比例劃分為訓(xùn)練集、驗(yàn)證集和測試集。由于自制的數(shù)據(jù)集圖片數(shù)量有限,為了讓模型更好地學(xué)習(xí)到目標(biāo)特征和提高魯棒性,需要對數(shù)據(jù)做數(shù)據(jù)增強(qiáng)。
本文采用Mosaic數(shù)據(jù)增強(qiáng)算法。Mosaic算法的流程有三步:(1)在數(shù)據(jù)集中隨機(jī)選取四張圖片;(2)對這些圖片進(jìn)行縮放、剪切和水平變換,裁剪的過程中保留含有待檢測目標(biāo)的區(qū)域;(3)將這四張圖片合并處理為一張。通過Mosaic算法的數(shù)據(jù)增強(qiáng),豐富了數(shù)據(jù)集的檢測背景,提高了模型訓(xùn)練后的泛化能力。本文霧天車輛數(shù)據(jù)集的Mosaic數(shù)據(jù)增強(qiáng)效果如圖4所示。
圖4 Mosaic數(shù)據(jù)增強(qiáng)效果
對訓(xùn)練后模型的檢測平均精度(mean Average Precision,mAP)進(jìn)行對比。mAP的計(jì)算如式(13)~(16)所示。
式中:TP為真正例;FP為假正例;FN為負(fù)正例;為種類數(shù)。
對霧天車輛檢測數(shù)據(jù)集進(jìn)行K-means聚類分析后,得到9種先驗(yàn)框的尺寸。K-means聚類計(jì)算先驗(yàn)框的結(jié)果對比見表1所列。
表1 K-means聚類計(jì)算先驗(yàn)框結(jié)果對比
在尺寸為13×13的特征圖中具有最大的感受野,采用70×135、46×72、31×48這三種尺寸的先驗(yàn)框檢測最大的車輛。相較于原先驗(yàn)框的平均寬高比1.04,改進(jìn)后的先驗(yàn)框尺寸更小,平均寬高比為0.61,更適用于本文數(shù)據(jù)集。在尺寸為26×26的特征圖中,采用23×35、19×10、18×27這三種先驗(yàn)框檢測圖像中尺寸較大的車輛。在尺寸為52×52的特征圖中具有最小的感受野,采用14×22、11×19、9×13這三種尺寸的先驗(yàn)框檢測小目標(biāo)車輛。綜上所述,改進(jìn)后的先驗(yàn)框尺寸更小,平均寬高比更適用于本文數(shù)據(jù)集,有利于提升小目標(biāo)車輛的檢測精度。
為了驗(yàn)證本文算法對霧天車輛的檢測性能,將本文算法與目標(biāo)檢測算法效果良好的SSD、Faster RCNN、YOLOv2和YOLOv3在霧天車輛數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)對比。5種算法的實(shí)驗(yàn)結(jié)果對比見表2所列。
表2 5種算法的實(shí)驗(yàn)結(jié)果對比
從表2中可以看出,本文算法比SSD算法的mAP提升了11.8%。SSD的卷積層較少,特征提取不夠充分,導(dǎo)致檢測效果欠佳。相較于Faster RCNN,本文算法的mAP提高了5.9%。Faster RCNN 使 用 RPN(Region Proposal Networks)推薦候選區(qū)域,針對多尺度的目標(biāo)不能保證較好的檢測效果。與YOLO系列的算法相比,本文算法比YOLOv2的mAP提升了14.9%,比YOLOv3提升了4.1%。本文算法基于YOLOv3進(jìn)行了相應(yīng)的改進(jìn)和拓展,提升了對霧天車輛的檢測性能。對比本文算法和YOLOv3算法對霧天車輛檢測的效果,如圖5所示。
圖5 霧天車輛檢測效果對比
為了驗(yàn)證本文改進(jìn)方法的有效性,以及不同改進(jìn)策略對檢測效果的影響,以YOLOv3算法為基礎(chǔ)作消融實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表3所列。
表3 消融實(shí)驗(yàn)結(jié)果對比
由表3可知,單獨(dú)引入去霧算法時(shí),算法的mAP提了0.8%;單獨(dú)使用K-means聚類計(jì)算先驗(yàn)框時(shí),mAP提升了1.2%;單獨(dú)向模型中加入注意力機(jī)制時(shí),mAP提升了0.5%。組合使用去霧算法和聚類先驗(yàn)框使算法的mAP提升了3.2%,利用去霧算法和注意力機(jī)制使算法的mAP提升了2.3%,引入聚類計(jì)算先驗(yàn)框和注意力機(jī)制使算法的mAP提升了3%。最后將三種改進(jìn)策略添加到模型中,得到的本文算法將mAP提升了4.1%,因此本文提出的改進(jìn)策略對提升霧天車輛檢測效果具有有效性。
本文針對霧天車輛檢測準(zhǔn)確率較低的問題,提出了一種基于暗通道去霧和改進(jìn)YOLOv3的檢測算法。首先利用暗通道方法對圖像進(jìn)行去霧,然后通過K-means聚類計(jì)算適用于車輛檢測的先驗(yàn)框,最后引入注意力機(jī)制,加強(qiáng)了算法對特征圖的特征挖掘能力。通過以上改進(jìn),本文算法對霧天車輛檢測具有良好的性能。
與主流的目標(biāo)檢測算法相比,在霧天車輛檢測數(shù)據(jù)集上,本文算法具有更好的檢測精度,mAP達(dá)到了97.5%。下一步將在引入去霧算法和網(wǎng)絡(luò)模型的基礎(chǔ)上,針對算法的復(fù)雜度進(jìn)行研究,以提高算法的檢測速度。