薛余坤,談文蓉,邢雪楓,陳秋實(shí)
(西南民族大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)系統(tǒng)國(guó)家民委重點(diǎn)實(shí)驗(yàn)室,四川成都 610041)
2020 年2 月24 日,國(guó)家發(fā)改委、中央網(wǎng)信辦、工業(yè)和信息化部等11 個(gè)部委提出:到2025 年,中國(guó)標(biāo)準(zhǔn)智能汽車的技術(shù)創(chuàng)新、產(chǎn)業(yè)生態(tài)、基礎(chǔ)設(shè)施、法規(guī)標(biāo)準(zhǔn)、產(chǎn)品監(jiān)管和網(wǎng)絡(luò)安全體系基本形成[1],標(biāo)志著智能汽車成為國(guó)家未來(lái)發(fā)展戰(zhàn)略的一部分,這也是世界汽車行業(yè)的發(fā)展趨勢(shì)。
對(duì)周圍車輛進(jìn)行快速準(zhǔn)確的識(shí)別是智能汽車在高級(jí)駕駛輔助(Advanced Driving Assistance System,ADAS)功能方面的重要內(nèi)容。隨著計(jì)算機(jī)視覺相關(guān)技術(shù)的快速發(fā)展,基于行車記錄儀的前方車輛檢測(cè)算法在定位準(zhǔn)確度和識(shí)別速度方面有了很大提升。基于視覺的車輛檢測(cè)算法一般使用閾值法、邊緣檢測(cè)法等對(duì)候選區(qū)域特征進(jìn)行檢測(cè)。例如,Viola 等[2]設(shè)計(jì)了基于AdaBoost的車輛檢測(cè)方法;Harzallah 等[3]提出基于SVM的目標(biāo)分類算法。近年來(lái),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法,如Faster R-CNN(Faster Region-Convolutional Neural Networks)[4]在識(shí)別準(zhǔn)確率方面表現(xiàn)優(yōu)異,但由于其采用“兩步走”的方式,識(shí)別一張圖片需要送入神經(jīng)網(wǎng)絡(luò)兩次,分別進(jìn)行目標(biāo)預(yù)測(cè)框回歸和目標(biāo)種類確定,大大影響了圖片檢測(cè)速度,在高速行車過(guò)程中將產(chǎn)生巨大安全隱患[5]。為此,黎洲等[6]、Seo[7]提出了基于YOLOv2(You Only Look Once v2)框架的車輛檢測(cè)算法,可同時(shí)進(jìn)行車輛及其視角識(shí)別。
抖動(dòng)對(duì)視頻質(zhì)量的影響較大。目前視頻防抖技術(shù)一般包含特征點(diǎn)檢測(cè)、運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)平滑和運(yùn)動(dòng)補(bǔ)償4 個(gè)過(guò)程,傳統(tǒng)的防抖方法包括基于特征匹配的視頻防抖、基于濾波的視頻防抖。例如,熊煒等[8]提出結(jié)合金字塔光流法和卡爾曼濾波的視頻穩(wěn)像算法;張培健等[9]使用級(jí)聯(lián)卷積神經(jīng)網(wǎng)絡(luò)對(duì)輕量級(jí)視頻進(jìn)行插幀,但在提高檢測(cè)精度的同時(shí)降低了計(jì)算速度。
本文采用最新的YOLOv4(You Only Look Once v4)[10]作為車輛檢測(cè)算法,極大地提高了檢測(cè)速度,但在對(duì)車載視頻進(jìn)行檢測(cè)的過(guò)程中發(fā)現(xiàn),道路顛簸、車輛自身抖動(dòng)造成的視頻幀模糊問(wèn)題對(duì)識(shí)別準(zhǔn)確率產(chǎn)生了較大影響。為解決上述問(wèn)題,本文創(chuàng)新性地提出對(duì)進(jìn)行車輛檢測(cè)視頻進(jìn)行防抖預(yù)處理的方法,由于車輛行駛過(guò)程中對(duì)防抖算法的計(jì)算速度有很高要求,故使用光流跟蹤算法[8]對(duì)行車記錄儀采集到的模糊視頻幀進(jìn)行運(yùn)動(dòng)補(bǔ)償,以提高基于車載視頻進(jìn)行車輛檢測(cè)的識(shí)別準(zhǔn)確率。
YOLO 系列算法[11]誕生于2016 年,在眾多針對(duì)目標(biāo)檢測(cè)的深度學(xué)習(xí)算法中脫穎而出,其創(chuàng)新性地采用“一步走”策略[7],將目標(biāo)檢測(cè)任務(wù)劃分為單一的回歸任務(wù),只需要將被識(shí)別圖片輸入網(wǎng)絡(luò)中一次便能輸出目標(biāo)種類和目標(biāo)框的準(zhǔn)確位置[12]。
YOLOv4 作為YOLO 系列的第4 個(gè)版本,將最新科研成果融于一體,使用Mosaic 數(shù)據(jù)增強(qiáng)方式作為輸入端數(shù)據(jù)處理方法,使用全新的CSPDarknet53 作為主干網(wǎng)絡(luò),廣泛使用深度殘差網(wǎng)絡(luò)結(jié)構(gòu),將Mish 作為全新的激活函數(shù),使其在檢測(cè)速度和目標(biāo)框的識(shí)別精度方面進(jìn)一步提升。在COCO 數(shù)據(jù)集上,YOLOv4的平均精確度(Average Precision,AP)和每秒檢測(cè)幀數(shù)(Frames Per Second,F(xiàn)PS)較上一代分別提高了10%和12%[10]。
YOLOv4 算法框架由輸入層、基于深度殘差網(wǎng)絡(luò)的卷積層、池化層、FPN(Feature Pyramid Network)層、PAN(Path Aggregation Network)層和預(yù)測(cè)層組成,具體流程如圖1 所示。
Fig.1 Flow of YOLOv4 algorithm圖1 YOLOv4 算法流程
首先,輸入的圖片進(jìn)行Mosaic 數(shù)據(jù)增強(qiáng)處理,對(duì)4 張圖片進(jìn)行隨機(jī)縮放、旋轉(zhuǎn)、裁剪等操作,最后再拼接合成為一張圖片輸入到CSPDarkNet53 主干網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。CSPDarkNet53 網(wǎng)絡(luò)采用3×3 大小的卷積核,采樣步長(zhǎng)為2,因此可以起到下采樣的效果。然后,將輸入圖片大小統(tǒng)一調(diào)整為608×608,經(jīng)過(guò)5 次下采樣操作,分別得到304×304、152×152、76×76、38×38 和19×19 大小的特征圖,并在池化層中引入Dropblock 算法,隨機(jī)刪除一部分神經(jīng)元數(shù)量,使網(wǎng)絡(luò)結(jié)構(gòu)變得更加簡(jiǎn)單,運(yùn)算速度得到明顯提升。YOLOv4 使用FPN 算法,對(duì)經(jīng)過(guò)數(shù)次下采樣運(yùn)算得到的19×19 大小的特征圖再進(jìn)行上采樣操作,與38×38 大小的特征圖進(jìn)行融合,再對(duì)得到的特征值繼續(xù)上采樣,并與76×76 大小的特征圖再次融合。最后,對(duì)FPN 層得到的3 種不同大小的特征圖再進(jìn)行下采樣,分別與上一層相同大小的特征圖進(jìn)行融合,得到分類成功的3 種不同尺度的特征圖,其中最大的特征圖為76×76,對(duì)應(yīng)最小預(yù)測(cè)框(Anchor Box);中等特征圖為38×38,對(duì)應(yīng)中等預(yù)測(cè)框;最小特征圖為19×19,對(duì)應(yīng)最大預(yù)測(cè)框。
模型訓(xùn)練采用KITTI 數(shù)據(jù)集,其是目前世界上最大的針對(duì)自動(dòng)駕駛的數(shù)據(jù)集[13]。為防止過(guò)擬合,采用Mosaic 數(shù)據(jù)增強(qiáng)的方式對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,具體如圖2 所示。
Fig.2 Schematic diagram of Mosaic data enhancement algorithm圖2 Mosaic 數(shù)據(jù)增強(qiáng)算法示意圖
將KITTI 數(shù)據(jù)集的80%作為訓(xùn)練集,20%作為測(cè)試集。由于本文只針對(duì)車輛進(jìn)行檢測(cè),故將目標(biāo)識(shí)別的種類設(shè)為1,種類名稱設(shè)為car,并設(shè)置模型訓(xùn)練的批大?。˙atchsize)為924 個(gè),迭代次數(shù)(Iteration)為32 000 次,訓(xùn)練周期(Epoch)為200 次。為保證模型對(duì)不同尺寸大小的圖片具有良好的泛化性,在訓(xùn)練過(guò)程中使用大小尺度圖片混合訓(xùn)練的方式,每隔幾個(gè)訓(xùn)練周期就隨機(jī)改變輸入圖片的尺寸大小,使模型對(duì)不同分辨率的圖片都能取得較好的檢測(cè)精度。
在車輛行駛過(guò)程中,行車記錄儀拍攝的視頻往往會(huì)由于道路顛簸、車身振動(dòng)等原因產(chǎn)生視頻幀模糊的問(wèn)題,不利于檢測(cè)算法準(zhǔn)確識(shí)別出車輛目標(biāo)。針對(duì)該問(wèn)題,首先使用SURF(Speeded Up Robust Features)進(jìn)行特征點(diǎn)檢測(cè);然后使用基于特征匹配的光流法跟蹤特征點(diǎn)位置,計(jì)算其運(yùn)動(dòng)矢量,估計(jì)相機(jī)運(yùn)動(dòng)路徑;最后使用卡爾曼濾波算法[14]對(duì)相機(jī)運(yùn)動(dòng)路徑進(jìn)行平滑操作,從而輸出相對(duì)穩(wěn)定的視頻幀序列。防抖算法的流程如圖3 所示。
Fig.3 Flow of anti-shaking algorithm圖3 防抖算法流程
SURF 算法使用矩陣的形式偵測(cè)特征點(diǎn),以Hessian 矩陣行列式值代表周圍像素點(diǎn)的變化量,然后進(jìn)行非極大值抑制。為實(shí)現(xiàn)尺度不變性,SURF 算法還使用尺度為σ的行列式值進(jìn)行特征點(diǎn)檢測(cè)。給定圖像灰度函數(shù)為I(x,y),則Hessian 矩陣H(x,σ)在x處尺度為σ的定義可表示為:
式中,Lxx(x,σ)為高斯函數(shù)(如式2 所示)的二階偏導(dǎo)數(shù),g(σ)為圖像I(x,y)在x處的卷積結(jié)果,Lxy(x,σ) 與Lyy(x,σ)的含義類似。
通過(guò)求解Hessian 矩陣行列式得到局部極值點(diǎn),每個(gè)局部極值點(diǎn)與同一層其他8 個(gè)相鄰點(diǎn),以及上下兩層的各9個(gè)點(diǎn),形成一個(gè)3×3×3的立體區(qū)域,當(dāng)局部極值點(diǎn)為這個(gè)立體區(qū)域的最大(或最小)點(diǎn)時(shí),則為候選特征點(diǎn)。
運(yùn)用光流算法追蹤SURF 算法采集到的特征點(diǎn)運(yùn)動(dòng)軌跡,不斷對(duì)目標(biāo)的主要特征進(jìn)行定位和跟蹤[15]。光流法假定同一目標(biāo)在不同幀之間運(yùn)動(dòng)時(shí)亮度值不會(huì)發(fā)生改變[16],假設(shè)某一像素在第一幀的光強(qiáng)度為f(x,y,t),其中t為時(shí)間維度,其經(jīng)歷dt時(shí)間移動(dòng)了(dx,dy)的距離,故可得:
使用泰勒展開式展開式(3)右端項(xiàng),可得到:
式中,ε表示二階無(wú)窮小項(xiàng),可忽略不計(jì)。將式(4)代入式(3)后同除以dt,可得:
使用移動(dòng)PC 平臺(tái)進(jìn)行實(shí)驗(yàn)測(cè)試,具體配置為Windows10 操作系統(tǒng)、Inter CoreI5-7500 3.0GHz CPU、16GB 內(nèi)存、NVIDIA GeForce GTX 1655 4G GPU。測(cè)試使用到的照片、視頻均為真實(shí)行車記錄儀在高速公路上采集的數(shù)據(jù)。
選取一段長(zhǎng)度為1 269 幀的真實(shí)道路拍攝視頻,經(jīng)過(guò)SURF 算法和光流法處理后,計(jì)算得到原視頻序列相機(jī)的水平方向位移、垂直方向位移和旋轉(zhuǎn)角度位移,具體如圖4所示。
經(jīng)過(guò)卡爾曼濾波算法處理后的位移結(jié)果如圖5 所示??梢钥闯?,經(jīng)過(guò)防抖算法處理后的視頻序列在水平方向、垂直方向和旋轉(zhuǎn)角度的位移頻率明顯低于未經(jīng)處理的原視頻序列,穩(wěn)定性得到了很大提高,證明本文算法能有效實(shí)現(xiàn)防抖。
Fig.4 Movement trajectory of unstabilized camera圖4 未增穩(wěn)的相機(jī)運(yùn)動(dòng)軌跡
Fig.5 Camera movement trajectory after stabilization圖5 穩(wěn)定后相機(jī)運(yùn)動(dòng)軌跡
使用KITTI 數(shù)據(jù)集對(duì)本文模型進(jìn)行訓(xùn)練與測(cè)試,最終識(shí)別準(zhǔn)確率達(dá)到96.51%。使用該訓(xùn)練權(quán)重對(duì)真實(shí)行車拍攝的視頻進(jìn)行防抖優(yōu)化前后車輛檢測(cè)的對(duì)比試驗(yàn)。對(duì)未經(jīng)處理的原行車視頻進(jìn)行逐幀提取,抽取其中由于抖動(dòng)造成圖像模糊的視頻幀,送入YOLOv4 框架進(jìn)行檢測(cè),結(jié)果如圖6 所示。再將經(jīng)過(guò)防抖處理的視頻幀送入YOLOv4 網(wǎng)絡(luò),檢測(cè)結(jié)果如圖7 所示。此外,該模型在其他模糊視頻幀上也取得了類似效果,說(shuō)明其可以提高整段視頻的穩(wěn)定性。測(cè)試結(jié)果表明,經(jīng)過(guò)本文防抖方法處理的視頻序列中的車輛識(shí)別準(zhǔn)確率明顯提高。
Fig.6 Original video detection result圖6 原視頻檢測(cè)結(jié)果
Fig.7 Video detection result after anti-shaking process圖7 防抖處理后視頻檢測(cè)結(jié)果
本文設(shè)計(jì)了基于視頻防抖的YOLOv4 車輛檢測(cè)算法,解決了由于道路顛簸、車輛自身振動(dòng)造成視頻幀模糊而影響檢測(cè)效果的問(wèn)題。實(shí)驗(yàn)結(jié)果表明,該方法可有效提高基于視頻序列的車輛檢測(cè)準(zhǔn)確度,并具有較好的實(shí)時(shí)性,在行車記錄儀中具有一定潛在應(yīng)用價(jià)值。但針對(duì)抖動(dòng)情況較為嚴(yán)重的路況,該防抖算法仍存在不足,未來(lái)將對(duì)圖像增穩(wěn)算法進(jìn)行優(yōu)化和改進(jìn)。