段中興,齊嘉麟
(1.西安建筑科技大學 信息與控制工程學院,西安 7100652.西部綠色建筑國家重點實驗室,西安 710065)
21世紀以來,機器人在各個行業都得到了迅速的發展,如艱難環境的探索任務、無人機自主導航和三維立體建模[1]。在建筑行業,建筑工地中鋼筋水泥的抓取與搬運,往往采用人力的搬運,但是由于受到體力和環境條件的限制,使得整個工作過程效率太低,一些惡劣天氣時更會拖延工期甚至對工人的生命安全也難以保障。機器人作為現代文明的重要產物,也越來越多的用于建筑工地中。作為移動機器人系統中最重要的一環,雙目視覺系統成為了越來越多學者研究的熱門話題。雙目立體視覺通過模仿人的雙目,經過立體匹配算法可以獲得目標的視差信息從而獲得目標的深度信息,這種方法已經應用于各種場合,如目標識別與跟蹤、自主導航等。
根據現有的研究,立體匹配算法可以分為局部算法和全局算法。在局部算法中,兩個像素之間的匹配代價是通過局部計算每個像素的一個支持窗口(例如9×9),并且通常會通過聚合基于像素的匹配代價來進行隱式平滑假設。通過聚合匹配代價來計算最優視差。傳統的局部算法包括平方差之和算法(SSD)、絕對誤差和算法(SAD)和基于灰度值的歸一化互相關算法[2](NCC)。與全局算法相比,局部算法通常速度更快,但由于局部算法的有限性,因此準確性較低。相反,全局算法做出明確的平滑假設,并通過解決基于能量的優化問題來搜索最優視差。目前常用的全局方法包括基于動態規劃[3],置信度傳播[4]和圖割[5]的全局計算方法。盡管這些全局算法取得了較好的實驗結果,但是同時也需要復雜的計算以及龐大的計算量。目前,很多學者在立體匹配算法的研究中取得了一定的成果。文獻[6-7]提出了一種基于樹形結構代價聚合的非局部立體匹配算法(Non-Local Filter,NLF),在代價聚合階段利用目標的顏色信息求解最優視差;文獻[8]提出了一種半全局立體匹配算法(Semi-Glob Matching,SGBM),SGBM也基于構造全局代價函數,但是它沿8個方向執行優化,SGBM取得了較高的準確性,而計算復雜度相比全局算法卻低得多,但是相比局部算法,在一些實時性要求較高場合仍有待提高。
由于建筑工地環境往往存在遮擋物以及室外環境受光照影響較大,現有立體匹配算法往往不能達到最佳的匹配效果,計算獲得的視差圖在光照變化大、紋理較弱以及深度不連續區域的誤匹配點較多。研究表明,卷積神經網絡(Convolutional Neural Network,CNN)憑借其可以有效獲取目標深層次特征的能力,主要應用于自然語言處理、圖像識別和視頻領域等[9-10],近年來,在立體匹配算法中也取得了實質性的發展[11]。Zbontar等人[12]立體匹配算法中,利用CNN計算圖像的匹配代價,相較傳統算法提高了視差圖精度,但是未考慮到目標圖的多尺度信息;文獻[13]提出了一種基于圖像金字塔思想的方法,將原圖經過多次降采樣后的子圖輸入網絡,提高了視差圖精度,但是計算復雜度太高。
針對以上方法存在的優缺點,本文提出了一種基于多尺度卷積神經網絡的立體匹配算法。第一步,在各個尺度上,通過不同卷積核實現圖像的特征提取,構建了一種具有多尺度的CNN模型來計算匹配代價;第二步,利用半全局立體匹配算法的思想,建立全局能量函數,利用動態規劃的思想在不同方向上執行優化搜索最佳視差;第三步,利用左右一致性檢測對得到的視差圖中的遮擋點進行處理,進行進一步優化與校正,最終生成精度較高的視差圖。
CNN結構主要有由輸入層、卷積層、池化層、全連接層和輸出層組成。卷積層實現對目標特征提取,利用多個卷積核提取多角度的空間信息。池化層在保留主要特征的同時減少參數和計算量,防止過擬合,提高模型泛化能力。全連接層出現在最后一層,主要對卷積層和池化層所提取的特征做加權。
本文基于CNN的立體匹配整體分為兩步,第一步為網絡訓練,第二步為視差計算,算法流程如圖1所示。

圖1 基于CNN的立體匹配流程
Siamese Networks[14]架構是雙目視覺中立體匹配最常用的結構之一,如圖2所示。輸入為雙目相機拍攝經坐標變換后的原始左右標準圖像塊,經過多個卷積和全連接過程后就可以得到圖像的匹配代價。由于雙目相機采集到的障礙物目標的尺度大小不一,并且多數存在光照變化大、紋理過渡區域不明顯和深度不連續的問題。本文設計了一種基于多尺度CNN網絡結構,如圖3所示。

圖2 Siamese Networks的一般結構

圖3 本文的網絡結構
在該網絡結構中,利用多尺度卷積神經網絡(Multi-Scale Convolutional Neural Network,MSCNN)的思想,采用多尺度卷積塊(Multi-Scale Block,MSB),從圖像中學習與尺度相關的特征,實現對同一障礙物對象提取不同尺度上的特征信息,其具體結構如圖4所示。

圖4 多尺度卷積塊
在多尺度卷積神經網絡中,多尺度卷積塊利用4個并列不同大小的卷積核來獲取目標的尺度信息,本文經過實驗發現,采用1×1、3×3、5×5和7×7的卷積核可以更好的從局部特征獲得上下文語義信息并減少參數數量。
L是雙目立體匹配算法中Siamese結構常用的損失函數,和其他模型不同,它的輸出代表兩個向量的相似程度,如式(1)所示:
L=(1-y)·γ(p,q)+y·max{0,m-γ(p,q)}
(1)
式中,p和q分別代表左圖和右圖中的某一像素點;γ(p,q)為神經網絡的輸出,代表分別以p和q為中心的圖像塊的相似程度;y為訓練時的標簽值,當左右圖中的圖像塊匹配正確,即為正例時,取1,反之,為反例時取0;m代表邊界值。然而,在訓練時,該式對每個樣本都進行反向傳播調整參數,導致訓練過程繁瑣增加了訓練時間。本文在此基礎上進行了改進,給出了一種新的損失函數,使模型在訓練時的收斂速度加快。式(2)為本文所用的損失函數:
L=max{0,m-γ+(p,q)+γ-(p,q)}
(2)
式中,γ+(p,q) 代表左右兩圖中的圖像塊匹配正確(正例)時的輸出,γ-(p,q) 代表左右兩圖中的圖像塊匹配錯誤(負例)時的輸出。該損失函數在訓練時由一正一負兩個樣本同時進行訓練,加快模型收斂速度,并且去掉原有損失函數中的標簽值,樣本不再擁有確切的標簽,提高模型的魯棒性和拓展性。根據實驗,本文將邊界值m設為1。該損失函數可以提高匹配正確圖像的相似度,并降低匹配錯誤圖像的相似度。
采用監督學習的方法在本文所設計的網絡結構上對標準立體匹配圖像進行訓練,訓練好的模型用于計算匹配代價。同時,對訓練使用的圖像進行翻轉、裁剪等操作,加入訓練樣本中,使模型訓練更加充分。
由于立體匹配算法所使用的均為經過相機標定后的標準雙目圖像,所以圖像中對應的像素點均位于同一水平線上。在左圖中提取以像素點p為中心的一個圖像塊,同時提取以右圖中對應視差為d的像素點p-d為中心的圖像塊,利用訓練好的網絡,計算輸出結果。計算得到的匹配代價如式(3):
(3)

由多尺度卷積模型計算得到的匹配代價計算只考慮到了圖像的局部關聯,視差圖含有的噪聲較多,無法直接用來獲取目標的最優視差值,所以代價聚合就顯得尤為重要。
為了提高立體匹配的精度,本文構造了一個全局能量函數,將式(3)獲得的初始匹配代價作為數據項;其次,構造正則化約束,也稱平滑項[16]:若相鄰兩像素點的視差值相差1,給定懲罰因子P1;若大于1,給定P2。本文構造的能量函數如公式(4)所示:
(4)
式中,p為圖中任一像素點,q為其相鄰像素點;T為截斷函數,當括號中函數值為真時,取1;反之,取0。
由于目標圖像是二維的,采用動態規劃在目標視差圖中求解最優視差值是一個NP難的問題。本文將二維圖像上的最優問題分解為4個方向上的一維問題,利用動態規劃的方法求解每個一維問題上的最優解,如式(5)所示:
Lr(p,d)=
(5)
式中,r表示指向像素點p的方向;p-r表示在r方向上p的上一個像素點;Lr(p,d)表示像素點p在方向r上視差為d的匹配代價。同時,為了防止匹配代價溢出,像素點p的匹配代價需減去像素點p-r取不同視差值的最小代價值。
經過匹配代價和代價聚合獲得精度較高的視差圖之后,采用左右一致性檢測[17],對遮擋點進行處理,進一步提高視差圖精度。具體方法為:對左圖中像素點p,令代價聚合計算后的最優視差為d1,其右圖中對應像素點p-d1的視差記為d2,如果|d1-d2|>δ,δ為閾值,則標記像素點p為擋點。對于遮擋像素點p,分別在其左右找到第一個非遮擋點pl和pr,將pl和pr中視差較小的值賦予遮擋像素點p,即d(p)=min{d(pl),d(pr)}。
實驗平臺為配置Linux系統的臺式電腦,內存搭配2個12G的GPU和1個24G的CPU。在Middlebury數據集進行了實驗與結果分析。對比方法采用引言部分所介紹的CNN[12]、NLF[6-7]和以及SGBM算法[8]。
由于文獻[12]和文獻[6-8]均使用誤匹配率和算法運行時間對算法性能進行評價,本文與對比算法保持一致,采用算法誤匹配率和算法運行時間作為評價指標。分別在光照變化大、紋理較弱區域、深度不連續區域和全部區域,計算生成視差圖中像素點的誤匹配率。
誤匹配率反映了立體匹配算法的準確度,誤匹配率越小說明該區域的匹配精度越高,誤匹配率的定義如式(6)所示:
(6)
式中,N表示圖像像素點的總個數;P表示所有像素點的集合;Dz表示圖像的真實視差,D表示本文計算得到的視差;其中,閾值θ≥1。
選用Middlebury數據集[18]進行測試實驗。Middlebury數據集包括Venus、Tsukuba、Cones和Teddy四組標準立體匹配測試圖像對,四幅圖像都具有部分光照變化明顯、紋理較弱以及深度不連續的特點。四幅測試圖像實驗結果的視差圖如圖5所示。

圖5 4種算法實驗結果生成的視差圖
3種對比算法與本文算法在四幅標準測試圖像中的誤匹配率和運行時間如表1~4所示。

表1 Venus圖像中的實驗結果

表2 Tsukuba圖像中的實驗結果

表3 Cones圖像中的實驗結果

表4 Teddy圖像中的實驗結果
4種算法的平均誤匹配率和運行時間如表5所示。

表5 4種算法的平均誤匹配率和運行時間
由實驗結果表明,在Middlebury數據集中,本文提出的算法相比NLF算法誤匹配率降低了10.3%,相比SGBM算法降低了31.4%,在光照變化明顯和障礙物邊界等深度不連續區域的視差圖精度也高于對比算法中的視差圖的精度,提高了移動機器人在復雜場景中對障礙物識別的準確度,有利于對障礙物的精準定位。同時,為了全面驗證本文算法性能,對算法運行時間進行比較。相比NCC和SGBM算法,本文顯著的縮短了算法運行時間,使移動機器人在障礙物檢測的過程中具有較高的實時性。由于本文屬于半全局立體匹配算法,所以時間相比文獻中的CNN算法較長,但也僅為毫秒級別的影響。
同時,為了驗證本文算法的實用性,利用雙目相機對障礙物進行實拍測試,獲取了精度較高的視差圖,如圖6所示。

圖6 自建數據的實驗結果
通過立體匹配得到的視差圖像中包含了物體在實際空間中的深度信息,為便于觀察,利用自建數據實驗得到的視差圖生成了障礙物的三維點云,如圖7所示。

圖7 視差圖的三維點云圖像
從障礙物重建結果可以看出,由于視差圖中障礙物邊界區域精度較高,所以生成的點云圖像中障礙物輪廓清晰,實現了移動機器人對障礙物的精確定位,驗證了本文算法的實用性。
綜上,本文算法有效地提高了立體匹配算法的視差圖精度,在障礙物邊界區域(深度不連續區域)和復雜區域的提升較為明顯。在建筑工地這類環境復雜,靜態障礙物較多的場合,提高了對目標障礙物深度信息獲取的精確度,對復雜場景中障礙物三維重建及定位等工作具有重要的意義。
本文提出一種基于多尺度卷積神經網絡的立體匹配計算方法,首先,利用多尺度卷積神經網絡模型對圖像的匹配代價進行初步計算,為提高模型的收斂速度以及穩定性,提出了一種新的損失函數;其次,在代價聚合階段建立一個全局能量函數,利用動態規劃的思想求解最優視差;最后,利用左右一致性檢測對所得視差圖上的遮擋點進行更正,進一步提高視差圖的精度。實驗使用Middlebury數據集中的標準立體匹配標準圖像對測試算法性能,所有圖像對均包含環境復雜光照變化大和紋理較弱區域,實驗證明本文算法在光照變化明顯、深度不連續以及紋理較弱等復雜環境下所獲視差圖精度更高,驗證了該方法的有效性,并且算法運行速度較快,滿足實時性要求。綜上,本文算法提高了障礙物檢測中立體匹配的精度和效率,在一定程度上提高了移動機器人對障礙物識別的準確度。但是真實的應用場景往往還有更加惡劣的環境以及動態的障礙物需要考慮,這也是后續需要研究的重點。