范林坤 陳濤 李旭川 郭叢帥
(長安大學,西安 710065)
主題詞:雙目測距 深度學習 實時性 移動終端 圓檢測 智能駕駛
基于超聲波、雷達、紅外的測距方式很早便應用在移動機器人領域,雖然可以達到不錯的測距精度,但其成本居高不下,阻礙了產品的商業化[1-2]。視覺傳感器采集到的信息豐富,不但滿足測距需求,而且可以基于視覺信息進行車輛、行人的識別。視覺方案是同時考慮成本、穩定性、精度和使用復雜度時的最佳方案。
傳統的雙目測距算法得到目標點的視差后利用三角測量原理得到目標點的距離。而計算視差的前提是兩幅圖像像素的匹配,在光照惡劣的情況下很難做到點與點間的精確匹配,并且場景中出現若干相似物體時,很容易出現誤匹配,從而造成較大誤差[3-4]。另外,這種測量方法的誤差會隨著測量距離的增加而增加。另一種思路是首先根據雙目圖像恢復場景的視差圖,在視差圖上選取目標點得到該點的視差,從而避免了雙目圖像匹配的問題,可達到更高的精度,獲得更好的魯棒性。如何基于雙目圖像得到視差圖一直是計算機視覺領域的研究熱點,近年來,很多學者將深度學習引入該領域。
Mayer 等人[5]引入神經網絡層間的關聯函數定義損失函數,通過訓練2個卷積神經網絡來預測雙目圖像間的視差,但是該網絡參數量巨大,難以部署在算力較低的移動終端上。很多工作旨在提高算法的實時性,其中多數算法是基于決策樹的[6-9],此類算法容易過擬合,從而降低模型的泛化能力。也有基于神經網絡的方法:Grubb 等人[10]利用3D 模型的重投影誤差來盡量簡化損失函數,以提高模型的運行速度,但模型精度顯著下降;Laina等人[11]基于ResNet-50創建了一個單網絡結構,可以在深度預測的同時進行語義分割;Godard等人[12]提出的AnyNet 網絡使用U-net 特征提取器得到4 個尺寸的特征圖,特征圖尺寸越小,模型的速度越快,但精度越差。現有工作雖然可以提高模型的實時性,但往往大幅降低模型的精度,如何在模型的實時性和精度間進行取舍是一個亟待解決的問題。針對這一問題,本文結合在AnyNet中使用U-net網絡進行特征提取的思想對Loop-Net[13]進行改進,提出一個新的模型,可以在保證精度的前提下提高模型的實時性。
采用編碼-解碼架構進行卷積網絡的模型搭建,受AnyNet 的啟發[13],首先將矯正后的雙目圖片送入U-Net特征提取網絡,得到2 張原圖像尺寸1∕4 大小的特征圖之后,經過3D卷積層再輸入到視差回歸網絡,以降低送入模型的數據維度。之后,在Loop-Net 網絡的基礎上進行遷移學習,刪除原網絡中的最后一個全連接層,這樣便可以去除大多數網絡參數。除此之外,為了進一步減少模型處理的數據量,應當盡量降低圖像的分辨率,但由于低分辨率特征圖包含的邊界信息較少,會使預測精度下降,因此使用擴張卷積來擴大感受野,使得最后得到的視差圖可以包含足夠多的邊界信息。同時,為了保證模型精度,選擇Chen 提出的上投影模塊作為上采樣層,以防止在訓練過程中出現過擬合,增加網絡深度,該模塊包括由1 個解池層和2 個卷積層構成的殘差單元。此外,在模型的解碼過程中同樣使用了上采樣層,以增加特征圖分辨率。整體網絡結構如圖1 所示。其中,3DConvn,s表示大小為n×n×n、步長為s的3D 卷積核,Convn,s表示大小為n×n,步長為s的2D 卷積核,Pooln,s表示k=n、步長為s的池化層,Res表示由2個大小為3×3的卷積核組成的殘差網絡,Up表示上采樣層。

圖1 網絡結構示意
U-Net網絡是一種改進的全卷積神經網絡,該網絡沒有全連接層,可以實現任意尺寸圖像的檢測,由于其可以捕捉足夠的特征信息以獲得最終的視差圖,同時相對于其他特征提取網絡具有更少的參數,因此,其運行速率相對較高,更適合應用在移動端。
U-Net網絡的網絡結構由搜索路徑和擴展路徑2個部分組成。搜索路徑主要用于捕捉圖片中的上下文信息,對輸入的影像進行卷積和池化操作,得到高維的特征金字塔。擴展路徑對圖片中所需提取的特征部分進行定位。對輸入圖片反復進行卷積和上采樣∕下采樣,最后可以得到圖片的視差特征。為了縮小視差回歸網絡處理的特征維度的尺寸,在U-Net 特征提取網絡上進行改進,使網絡最終輸出原圖像1∕4 大小的特征圖。U-Net 網絡同時應用于左、右目圖像,首先對原始輸入圖像進行卷積操作,然后通過下采樣和上采樣得到不同尺寸的特征圖,最后通過拼接融合2種不同尺寸特征圖的特征,得到2張1∕4尺寸的特征圖。U-Net網絡結構如圖2所示,圖中Max pooln,s表示最大池化采樣。

圖2 U-Net特征提取網絡結構
通過卷積神經網絡預測圖像視差的傳統模型的損失函數使用一個固定的衰減權重代替噪聲參數σ,但這種方式并未考慮模型輸出的不確定性變化。為了更好地學習模型的不確定性,首先對RGB 圖像的輸入噪聲進行概率量化,認為不同的輸入應該對應不同的噪聲參數。不同的紋理場景會給視差估計帶來不同的不確定性,在無紋理場景中不確定性較大,而在紋理豐富的場景中不確定性較小。因此,模型的損失函數L主要包含殘差退化項和正則化項:

得到視差圖后,需要在左、右目圖像中定位被測物體的位置,常用的是基于神經網絡的方法,但該方法計算量較大,難以滿足算法實時性的需求。為了快速定位測距目標,本文提出基于圓匹配的方法,與其他形狀相比,圓形具有很好的幾何性質,對旋轉和縮放均不敏感,而且幾何描述特征簡單,可以快速地完成匹配。首先檢測左、右目圖像中的特征圓,利用式(2)給出的相似度函數對左、右目圖像中的圓進行匹配,將成功匹配的2 個圓的圓心作為目標物體在左、右目圖像中的位置:

式中,yLi、yRj分別為左目檢測的第i個圓和右目檢測的第j個圓的圓心縱坐標;rLi、rRj分別為左目檢測的第i個圓和右目檢測的第j個圓的半徑。
在進行圓檢測時,檢測閾值的選取是圓匹配策略的關鍵,如果檢測閾值設定過高,將會無法檢測到圓,而閾值過低會導致誤檢,增大測量誤差。由于背景的動態變化,背景中會出現不同數量和相似度的圓的相似物,為了在保證可以檢測到目標圓的同時盡可能降低誤檢率,檢測閾值應小于且盡量靠近目標圓得分。因此,檢測閾值的大小應為:

式中,c為目標圓得分;Δε為閾值松弛量。
ε越小,檢測條件越苛刻,則誤檢率越低,但同時可能出現無法檢測到目標圓的問題,反之,該值較大時能夠保證檢測到目標圓,但會提高誤檢率。通過試驗比較了各種閾值松弛量的效果,發現將Δε大小設定為0.05s可以達到較好的效果[14],因此本文設Δε=0.05s。閾值確定后,根據圓的相似度對檢測出的圓進行匹配,將匹配得分最高的一對圓的位置作為目標物在左、右目圖像中的位置,具體算法流程如圖3所示。

圖3 目標匹配算法流程
得到目標物在圖像中的位置和對應的視差值后,計算目標物與相機的距離dis:

式中,b為雙目相機2 個光心間的距離;f為相機焦距;d為視差值。
為驗證算法的有效性,設計試驗對比本文算法與AnyNet、PSMNet 算法的精度和實時性。模型使用Middlebury Stereo 數據集進行訓練,試驗平臺為JNIndustriPi(見圖4),采用板載ARM5708,最高主頻為1 000 MHz,內核為Coretex-A15,支持DSP 加速,其尺寸為9 cm×6 cm×2 cm,為小型移動終端。相機為CTLO200 雙目相機,單個相機分辨率為720×480。被測物體為標注有大小不同的同心圓的紙盒,便于在近場和遠場條件下檢測,如圖5所示。測量距離為同心圓圓心與2個相機光心連線的距離,如圖6所示。

圖4 JN-IndustriPi

圖5 被檢測物體

圖6 測量距離
準備好硬件環境后,在真實距離為20~150 cm 的范圍內,通過測量目標物體與相機間的距離,得到3種算法的精度和運行速度。搭建的試驗環境如圖7所示。

圖7 試驗環境
此外,為了評估被測物體出現在圖像不同位置時的精度,測試了3 種不同方位角時的測量精度,包括被測物體位于中心軸線、軸線偏15°及15°方位角。圖8展示了真實距離為50 cm 時3 種不同的測量方位角和測量結果。

圖8 試驗環境及測試結果
在真實距離為20~150 cm時不同方位角下3種算法的測距誤差如表1所示。
由表1可以看出,當被測物體出現在相機中心線上時,3種算法的測量精度為98%左右,當被測物體出現在偏離相機中心線的位置時,3 種算法的精度均有所下降。對比發現,本文算法的精度與其他2種方法的精度相當。

表1 3種算法的誤差 cm
為了驗證所提出算法的實時性,分別測試3種算法的運行幀率,結果如表2 所示。可以看出,本文模型實時性相較于其他算法提升了約15%。

表2 3種算法的實時性
針對基于深度學習的雙目測距算法的實時性問題,本文在Loop-Net的基礎上進行改進,引入U-Net特征提取網絡,設計了雙目測距模型,同時提出了基于圓檢測的物體定位算法對目標物進行定位。以移動終端JNIndustriPi 為試驗平臺對比了本文方法與AnyNet 和PSMNet的精度與實時性,結果表明,本文所提出的模型在保證測距精度的同時提高了測距的實時性。