徐 源,翟春艷,王國良
(遼寧石油化工大學信息與控制工程學院,遼寧撫順113001)
車輛檢測系統(tǒng)的目標是通過給定的圖像場景,檢測出目標車輛的平面位置與深度信息。目標車輛的平面位置可以使用目標檢測網(wǎng)絡直接實現(xiàn),如Faster RCNN[1]、YOLO v3[2-3]等;目標車輛的深度信息可以通過地圖重建的方法實現(xiàn),在檢測目標平面位置的過程中,目標檢測網(wǎng)絡需要模型對多種退化情景進行訓練。然而,退化樣本分布嚴重失衡。針對這些特殊樣本,除非有意收集,否則檢測器很難在訓練過程中有效地利用這些樣本信息。因此,通過讓檢測器學習到這類“罕見樣本”,使檢測器存儲更大規(guī)模的數(shù)據(jù)在理論上是可行的,但該方案在一定程度上會大大提升檢測成本,同時特殊樣本在實際生活中也是很難采樣的。
近年來,針對“罕見樣本”難以收集的問題,國內(nèi)外學者通過實驗研究已經(jīng)取得一定的成果,其中一種是直接生成真實圖像,但該方法也需要“罕見樣本”來對檢測器進行訓練,因此在實際應用中并不可行[4-6];另一種是生成所有帶遮擋或形變的可能樣本,并將這些樣本用于目標檢測器的訓練[7-9]。已有的研究表明,選擇一些難以被檢測器識別的困難樣本進行訓練反而可以獲得較好的效果。受該思路的啟發(fā),為目標檢測器訓練一個對抗網(wǎng)絡,該網(wǎng)絡可以在特征圖上直接模擬出遮擋與形變的效果,并且可以自動預測出哪種樣本對于檢測器是難以識別的。該方法的核心是在卷積層的特征空間中產(chǎn)生對抗樣本,而不是在像素域空間上產(chǎn)生。對于車輛檢測的另一個問題是無法估計圖像中不同車輛目標距離觀察點的距離。為了使裝有相機的智能車可以有效做出避障的動作,通過估計相機的位姿,重建3D地圖的方法來估計目標車輛與觀測點的相對距離。連續(xù)幀重建3D地圖法一直以來都受到很多學者的關(guān)注,例如SfM(Structure from Motion)技術(shù)可以成功地從寬基線圖像中重建3D稀疏地圖與相機位姿[10-11]。集束調(diào)整可以通過解優(yōu)化的方法減少重投影誤差[12-13]。多視覺立體視覺方法可以通過對圖像序列進行密集匹配,為每一個像素計算深度值[14]。傳統(tǒng)的SfM法和MVS方法可以使用寬基線圖像進行精確的3D幾何重建,但在實際應用中,用戶往往很難獲得完整的視頻序列,為了解決這個問題,F(xiàn).Yu等[15]提出了一種啟發(fā)式的估計相機軌跡的方法,該方法只需一個很短的視頻片段作為輸入即可達到目的,采用基于馬爾可夫隨機場平面掃描的方法重建密集深度圖[16]。過窄的基線會影響3D重建的準確度,S.Im等[17]在文獻[15]的基礎上進行了改進,以追蹤到的3D點作為研究對象,加入了抗果凍效應算法,并取得了較好效果,得到了較為平滑的深度圖像。
通過總結(jié)已有文獻可知,針對車輛檢測系統(tǒng),其中較為困難的是樣本的取得以及確定車輛的位置和估計不同車輛間的距離。針對上述兩個問題,其各自的研究都較為充分,但將兩者相結(jié)合進而優(yōu)化車輛檢測系統(tǒng)的研究還鮮有報道,基于此將對抗樣本生成與深度圖重建相結(jié)合,通過對比單一方式下的檢測效果,優(yōu)化車輛檢測系統(tǒng)。
(1)假設已使用目標檢測網(wǎng)絡,可以成功地檢測到目標車輛;
(2)由于道路車輛的行駛速度較快,對相機的位姿變換進行一定程度的簡化處理。
車輛檢測系統(tǒng)的工作流程如圖1所示。根據(jù)采集到的單幀圖像,系統(tǒng)首先計算出每個車輛目標的平面位置,檢測結(jié)果以矩形框的形式給出;根據(jù)檢測到的車輛目標,以一小段幀速率為每秒30幀的視頻為輸入,估計出不同的目標車輛相對于鏡頭的遠近。采用Faster RCNN[20-24]作為檢測器網(wǎng)絡。該網(wǎng)絡使用一個用于圖像分類的離線訓練的卷積網(wǎng)絡提取特征,并在該特征圖上提取候選區(qū)域坐標圖。在候選區(qū)域的基礎上,該網(wǎng)絡采用了RoI池化層提取區(qū)域特征,用于計算坐標偏移和目標類別。
圖1 車輛檢測系統(tǒng)工作流程
作為車輛檢測的第一步,首先要得到一個可以對各種惡劣條件都具有魯棒性的檢測器,以便用于在圖像上標定目標的位置。通過樣本主動生成技術(shù),為目標檢測器提供難以識別的樣本。
目標檢測器原始損失函數(shù)可記為:
式中,LSoftmax(·)為 Softmax 損失函數(shù);Lbbox(·)為誤差函數(shù);F(X)為原始的目標檢測網(wǎng)絡;X為某一目標提名;Fc(·)為置信分數(shù),即某提名區(qū)域?qū)儆谡龢颖镜母怕?;Fl為預測的候選框坐標;C為置信分數(shù)真實值;L為候選框坐標真實值。
對抗網(wǎng)絡可表示為A(X),其含義為給定一個特征圖X,函數(shù)A(·)將產(chǎn)生一個新的對抗樣本,該對抗樣本將被檢測器檢測為負樣本,并通過如下的損失函數(shù)訓練對抗網(wǎng)絡:
若對抗網(wǎng)絡產(chǎn)生的特征圖可以被檢測器成功檢測,那么對抗網(wǎng)絡將產(chǎn)生較大的損失;若對抗樣本的產(chǎn)生使檢測器難以檢測,則檢測器的損失值較大而對抗網(wǎng)絡的損失值會變小[19-20]。
設計一個空間隨機失活網(wǎng)絡,用于在目標車輛所對應的深度特征圖上模擬遮擋效果(遮擋網(wǎng)絡)。對于一個給定的車輛目標,提取尺寸為d×d×c的特征圖。根據(jù)特征圖,設計的遮擋網(wǎng)絡將預測一個尺寸為d×d的掩模版。數(shù)值經(jīng)過閾值處理,只取0或1。
遮擋對抗網(wǎng)絡的結(jié)構(gòu)如圖2所示。
圖2 遮擋對抗網(wǎng)絡的結(jié)構(gòu)
利用一個大小為d3×d3的滑動窗口在特征圖上進行滑動,每一個滑動窗口都對應原圖像的某個區(qū)域,對于滑動窗口對應的區(qū)域,將其置為0,以模擬遮擋效果。對于每個被遮擋后的圖像,將其放到分類器中,得到誤差損失。利用損失函數(shù)最大的遮擋圖像重新生成特征圖,根據(jù)對應窗口,生成一個d×d的掩模版,該掩模版可以給檢測器造成較高的損失。對于n個正樣本區(qū)域,可得到n對訓練樣本
對于遮擋網(wǎng)絡和檢測網(wǎng)絡,采用聯(lián)合訓練的方式優(yōu)化參數(shù)。首先,遮擋網(wǎng)絡產(chǎn)生一個掩模版,根據(jù)掩模版在RoI池化特征圖上創(chuàng)造遮擋樣本,再使用該樣本對檢測器進行訓練,最后選擇造成檢測器損失最大的掩模版,并且運用該樣本作為對抗網(wǎng)絡的樣本進行訓練。
利用二元交叉熵函數(shù)來訓練遮擋網(wǎng)絡,其表達式為:
式中,Xijk為特征圖第k個通道上第i行j列的值;Mij為掩模版第i行j列的值,若Mij=1,則特征圖對應位置上所有通道的值都將被置為0,即Xijk=0,?k。
形變對抗網(wǎng)絡與遮擋網(wǎng)絡類似,即在目標特征圖上產(chǎn)生新的對抗樣本,使該樣本難以被檢測器正確識別。形變對抗網(wǎng)絡的結(jié)構(gòu)如圖3所示。
圖3 形變對抗網(wǎng)絡的結(jié)構(gòu)
從圖3可以看出,形變對抗網(wǎng)絡主要包括定位網(wǎng)絡、網(wǎng)格產(chǎn)生器和采樣器。假設特征圖給定,則定位網(wǎng)絡將計算出旋轉(zhuǎn)角度、平移距離和縮放因子等形變量。這些形變量將作為網(wǎng)格產(chǎn)生器與采樣器的輸入,用于輸出一張形變特征圖。在整個形變網(wǎng)絡的訓練過程中,只需要訓練定位網(wǎng)絡的參數(shù),定位網(wǎng)絡由3層全連接層構(gòu)成,前兩層參數(shù)的初始化采用ImageNet預訓練模型的fc6和fc7層,隱含層單元分別為4 096與1 024,最后一層輸出旋轉(zhuǎn)角度、平移距離和縮放因子三個變量;采用共同訓練的方式訓練檢測器與形變對抗網(wǎng)絡。形變網(wǎng)絡的訓練過程與遮擋網(wǎng)絡類似,將RoI池化層產(chǎn)生的特征圖進行形變處理,作為檢測器的輸入并輸出Softmax損失。訓練形變對抗網(wǎng)絡的目標是生成“欺騙”檢測器的對抗樣本,與訓練遮擋對抗網(wǎng)絡不同,形變過程是可微的,可以直接將分類產(chǎn)生的誤差通過反向傳播方式傳遞給形變對抗網(wǎng)絡的定位網(wǎng)絡。
當單幀圖像上檢測出目標車輛后,需要估計目標對相機(觀察者)的相對距離。通常情況下,對于同一張圖片中出現(xiàn)的車輛,可以根據(jù)尺寸大小估計遠近,但這種方法會受到車輛自身大小的影響。為了解決這一問題,使用3D場景重建和估計相機位姿的方法計算目標車輛的距離。估計目標的深度,需要較短的視頻流作為輸入,視頻流的幀速率為每秒30幀。假定在這段視頻中目標的運動與相機位姿的變化都是微小的。通過集束調(diào)整的方法來估計相機參數(shù),再根據(jù)這些參數(shù)調(diào)整圖像的扭曲,最后進行立體匹配,達到估計目標深度的效果。相異于傳統(tǒng)的SfM問題,本文所研究的視頻序列,幀與幀之間的距離是微小的,簡化了相機旋轉(zhuǎn)矩陣與3D場景點參數(shù)化的計算過程,從而降低集束調(diào)整的運算代價。此外,由于相機鏡頭存在徑向畸變,傳統(tǒng)的SfM問題需要估計畸變參數(shù)來達到重建場景的目的,而本文將相機的內(nèi)參一同作為優(yōu)化變量進行估計,這樣即便相機未經(jīng)過精確地校準,車輛檢測系統(tǒng)仍然能正常使用。
假定uij表示第i幀圖像中第j個畸變特征點,f表示相機焦距,則非畸變特征點可以通過一個徑向畸變函數(shù)F得到,表示為uijF(uijf)。其中,畸變函數(shù)可以表示為:
如果用第0幀圖像作為參考幀,ωj表示深度的倒數(shù),則特征點u0j的3D坐標xj可以表示為:
引入投射函數(shù)表示將xj映射到i幅圖像平面的過程。
式中,ri∈R3與ti∈R3為參考圖像到第i幅圖像的相對旋轉(zhuǎn)與平移;ri,1、ri,2、ri,3為向量ri的分量。
經(jīng)過矩陣化R(·)后,得到了一個小角度的旋轉(zhuǎn)矩陣形式,在無畸變圖像域上,可以將映射過來的點表示為fπ(xj,ri,ti)。用投射點與無畸變坐標之間的距離作為uij的誤差,從而集束調(diào)整的過程便可以表示成優(yōu)化該誤差的過程。對于所有非參考幀圖像的特征點,完整的誤差函數(shù)可表示為:
式中,n為圖像的數(shù)量;m為特征點的個數(shù);ρ(·)為Huber損失函數(shù);K為相機內(nèi)參數(shù)集合f,k1,k2;R和T分別為旋轉(zhuǎn)與平移的向量;W為深度倒數(shù)的集合。
為了將不同圖像幀的特征點對準,首先在參考幀圖像上用Harris corner檢測器檢測局部特征點。由于目標的位置已經(jīng)確定,因此Harris corner檢測器可以在已圈定的位置進行檢測,從而提高檢測的準確度。在其他圖像幀上,使用Kanade-Lukas-Tomashi(KLT)算法尋找對應的特征點。在集束調(diào)整開始前,將旋轉(zhuǎn)與平移向量都置為0。焦距設置為圖像寬度與高度中的最大值。兩個畸變參數(shù)設置為0,而深度的倒數(shù)值則取0.01與1.00之間的隨機值。
當計算出相機的內(nèi)參和外參后,使用基于平面掃描的立體匹配算法恢復深度圖。對于每個圖像幀上的特征點,通過逆映射計算出它的深度,但由于在不同圖像上,同一特征點可能會對應不同的深度。為了解決這個問題,需要計算出在不同圖像上深度值的聚類點。首先在深度值的波動范圍內(nèi)劃分若干個深度平面,然后估計出每張圖像上對應于同一特征點聚集的深度平面,最后根據(jù)深度平面判定特征點與相機的相對距離。
定義第k張深度平面單應性矩陣Hik∈R3×3為:
式中,{ti,1,ti,2,ti,3}為向量ti的元素;(pu,pv)為以圖像中心為原點的像素坐標。
通過矩陣Hik,可以將無畸變的圖像通過以下運算投影回參考幀圖像上。
式中,Iik為第i幅圖像在第k個深度掃描面上的投影值。
通過對n張圖片進行同樣的操作,在參考幀的每個像素u都可以對應一個關(guān)于深度倒數(shù)候選值ωk的 密 度 分 布P(u,ωk)=[I0k(u),…,I(n-1)k(u)]。 將這個密度分布當作某個像素在不同深度平面的能量分布圖。如果該像素所處的真實深度平面為ωk′,那么它在該平面k′的波動最小,或者說能量也是最集中的。運用損失函數(shù)CI來衡量像素u在候選平面ωk的能量分布:
此外,為保證區(qū)域邊緣的一致性,定義水平和豎直方向的梯度損失函數(shù)為Cδu(u,ωk)和Cδv(u,ωk),表達式為:
運用一階濾波器F=[-1 0 1]對Cδu(u,ωk)和Cδv(u,ωk)中的梯度進行計算。通過最小化C的方式,求得特征像素的深度值;綜合能量分布損失CI,為目標深度定義綜合性的匹配損失函數(shù),即:
對于車輛目標檢測的評估,使用經(jīng)過預訓練的Faster-RCNN網(wǎng)絡當作檢測器,該網(wǎng)絡參數(shù)來源于COCO數(shù)據(jù)集中車輛檢測部分。抽取COCO數(shù)據(jù)集中所有包含車輛的圖像樣本約4 000張,同時,人工采集了1 000張實時車輛的圖像樣本,由此,可得到5 000張圖像樣本。將這些樣本劃分為訓練集、驗證集與測試集三部分。訓練集包含3 000張樣本,驗證集包含500張,剩下的1 500張樣本作為測試模型性能的測試集。為了驗證模型對遮擋與形變的魯棒性,在5 000張圖像樣本中混入了500張帶有遮擋或形變效果的圖片樣本,并將其中的70%分配給了測試集。分別測試加入遮擋對抗網(wǎng)絡和形變對抗網(wǎng)絡后對模型檢測的提升效果。最后將兩種對抗網(wǎng)絡與Faster-RCNN結(jié)合起來訓練,檢驗這兩種對抗網(wǎng)絡產(chǎn)生的對抗樣本是否可以達到增強車輛檢測效果的作用??紤]到pytorch設計深度模型的方便性,用pytorch進行模型的搭建與訓練。經(jīng)過訓練后,可以得到模型的序列化文件,該文件用于保存網(wǎng)絡模型和相關(guān)參數(shù)。將該序列化文件進行模型的移植,使其在移動端中使用。采用隨機梯度下降的方式訓練模型,初始學習率設置為0.001,經(jīng)過6萬次迭代后調(diào)整為0.000 1。在訓練過程中,使用選擇性搜索的方法確定候選框。
對于目標深度的估計,使用實際拍攝的100個短視頻進行測試,直接給出深度估計的主觀效果,并將其與當前幾種流行的方法進行對比測試。實驗模型由C++語言編寫,并調(diào)用了處理矩陣和非線性優(yōu)化問題的函數(shù)庫Eigen和Ceres。
利用平均精確度(AP)來度量車輛檢測的實驗效果,AP是目標檢測領(lǐng)域中經(jīng)常用于評估模型好壞的指標,由準確率與召回率兩個指標共同決定。準確率可以衡量模型的預測的精準度,而召回率主要用于衡量模型對正樣本的檢測程度。一般情況下,召回率越高,則相應的準確率會降低,而平均精確度則是精確率相對與不同召回率情況下的期望。
采用Faster-RCNN模型作為基本對照組。為了描述簡單,將Faster-RCNN與遮擋對抗網(wǎng)絡的組合簡寫為Faster+O,與形變對抗網(wǎng)絡的組合簡寫為Faster+D,三者的共同組合簡寫為Faster+O+D。此外,為了檢測系統(tǒng)對不同尺度目標的敏感度,分別給出不同尺度車輛目標的實驗結(jié)果。目標尺度表示車輛目標在圖像中的占比,由覆蓋車輛的最小矩形框與整幅圖像的比值來確定,本文取0.35。為了驗證對抗樣本生成網(wǎng)絡對檢測效果的影響,分別使用100%、70%與50%的樣本數(shù)對網(wǎng)絡進行訓練,并驗證檢測效果,所有的實驗結(jié)果匯總于表1—3。
表1 不同模型對車輛檢測的平均精確度(100%樣本數(shù))
表2 不同模型對車輛檢測的平均精確度(70%樣本數(shù))
表3 不同模型對車輛檢測的平均精確度(50%樣本數(shù))
由表1可知,增加對抗網(wǎng)絡可以顯著地提升車輛檢測的平均精確度;Faster+O+D的結(jié)果表明,結(jié)合兩種對抗網(wǎng)絡,可以使模型的性能達到最好。對于高尺度的目標(即目標畫面占比0.35的目標),F(xiàn)aster-RCNN與添加對抗網(wǎng)絡的檢測模型均取得了較好的效果。而對于低尺度目標(即目標畫面占比小于0.15的目標),F(xiàn)aster-RCNN的效果下降比較明顯;添加了形變對抗網(wǎng)絡的檢測器可以有效地對圖像中的小目標進行檢測。而表2與表3是在減少訓練樣本情況下得到的結(jié)果,在樣本不足時,缺少對抗網(wǎng)絡的模型性能退化比較嚴重,而具備對抗網(wǎng)絡的模型盡管也存在一定程度的性能下降,但明顯比前者有所改善。
為了更直觀地展示增加對抗網(wǎng)絡后對車輛檢測器的改善效果,對帶有對抗網(wǎng)絡的車輛檢測與無對抗訓練的車輛檢測效果進行對比,結(jié)果如圖4所示。
圖4 帶有對抗網(wǎng)絡的車輛檢測與無對抗訓練的車輛檢測效果對比
不同模型檢測到的目標分別用不同顏色的矩形框標注,圖4中綠框表示Faster+O+D的檢測結(jié)果,紅框表示Faster-RCNN的檢測結(jié)果。通過主觀效果的對比可知,經(jīng)過對抗學習的車輛檢測系統(tǒng)可以很好地捕捉不完整輪廓的車輛目標。
為觀察深度估計的實驗效果,將結(jié)果用灰度圖的形式展示。選區(qū)的圖片中均帶有遮擋與形變的車輛樣本,以文獻[15]的實驗作為對照組進行對比分析,深度估計效果如圖5所示。圖5中,亮度越大的區(qū)域表示距離相機鏡頭的距離越近。從圖5可以看出,目標檢測與深度估計相結(jié)合的方法由于加入了檢測器提供的邊信息,可以更準確地預測目標相對鏡頭的遠近。
提出了一種目標檢測與深度估計相結(jié)合的精準檢測方法,經(jīng)過對照實驗得到如下結(jié)論:
(1)為了提高目標檢測精度,為檢測器設計了一個對抗網(wǎng)絡,用于生成檢測器難以識別的樣本。對抗樣本的生成解決了檢測器在訓練過程中遇到的因遮擋、形變樣本不足而無法擬合的問題。
(2)根據(jù)目標檢測的結(jié)果,設計一種動態(tài)檢測車輛目標距離的模型,該模型可以在沒有圖像深度標簽的情況下工作,根據(jù)相機在視頻幀中的位置變化估計結(jié)果重建圖像的3D坐標稀疏視圖。
(3)由于在進行深度估計之前已經(jīng)掌握了目標的位置,因此可以大大減少軟件運行時間,使得該系統(tǒng)可以靈活地移植到各種嵌入式移動設備中。
圖5 深度估計效果