王金鶴,車志龍,張 楠,孟凡云,蘇翠麗,譚 浩
(青島理工大學信息與控制工程學院,山東青島 266000)
立體匹配技術通過計算立體相機拍攝的2 張圖像中每個像素的視差,確定立體圖像間的對應關系,且在機器人自主導航、自動駕駛和三維場景重建中具有廣泛的應用。傳統立體匹配方法通常采用匹配代價計算、代價聚合、視差計算和視差優化4 個步驟,但是存在匹配效率較低的問題。隨著基于深度學習的語義分割、目標檢測與識別等高層視覺技術的快速發展,神經網絡方法逐漸應用于立體匹配中。卷積神經網絡(Convolutional Neural Network,CNN)因其較強的特征提取能力而取代了傳統手工制作特征描述符的方法?;贑NN 的方法將視差估計作為學習任務,利用大量數據對模型參數進行優化,并以模型處理后的輸出圖像作為視差圖。CNN 相對傳統立體匹配中計算像素的匹配代價而言,可以更好地捕獲局部上下文信息,對遮擋、透明和非郎伯照明效果等光度差異魯棒性更強,且在匹配速度和精度方面都有顯著提升。
在早期基于CNN 的立體匹配方法中,文獻[1]采用神經網絡方法計算匹配代價,將兩個圖像之間的匹配代價看作二分類問題,且計算效果良好。文獻[2-3]通過對早期CNN 結構進一步改進而取得滿意效果。文獻[4]通過用內積層替換網絡的全連接層進行相似性度量,將代價計算看作一個多分類任務,大幅加快訓練與測試的效率。文獻[5]發布一個帶有真實視差、光流和場景流的合成數據集,并提出一個帶有編碼-解碼器結構的DispNet 模型。文獻[6]提出了MatchNet,在增加池化層且減少特征尺寸的基礎上,利用3 個全連接層進行相似性度量。文獻[7]探索并研究了多種神經網絡結構的特點,歸結出三種基本網絡結構模型。文獻[8]采用神經網絡學習有判別力的圖像塊,并用L2 范式進行相似性度量。深度學習的發展使得立體匹配的網絡結構日漸趨于成熟,也預示著未來網絡結構將會更加復雜。在近期研究中,采用神經網絡方法改進傳統立體匹配的步驟,并將不同的子結構整合到一個端到端的框架中,或是利用全局上下文信息進行優化。文獻[9]改進了MC-CNN 結構,并結合不同大小窗口進行匹配代價計算。文獻[10]利用端到端的GCNet 取代了傳統四步法,將二維卷積提取的特征與三維卷積提取的上下文信息相結合,并采用回歸模型預測視差圖。文獻[11]提出了兩個階段的級聯網絡結構,先用DispFullNet 生成具有更多細節的初始視差圖,再用DispResNet 生成不同尺度殘差信號來優化視差圖。文獻[12]通過對傳統四步法進行整合,用初始視差圖和特征連續性輸出次級網絡優化視差圖。文獻[13]提出采用具有混合損失的多級加權殘差捷徑的高速公路結構進行圖像塊的多級比較,并用深度神經網絡池化多個視差的全局信息。PSMNet[14]用空間金字塔池化(Spatial Pyramid Pooling,SPP)聚合不同尺度與不同位置的環境信息構造代價卷,三維CNN 結構中使用多個堆疊沙漏網絡和中間監督結合調整代價卷。文獻[15]結合CNN 和分割約束解決了弱紋理及遮擋區域的匹配難題。文獻[16]用雙流網絡提供全局指導,一個網絡產生聚合結果并生成提議,另一個網絡結合低層結構信息評估結果對提議進行選擇。文獻[17]提出一個由主干視差網絡和邊緣子網絡組成的端到端視差模型。文獻[18]將語義分割信息結合到視差估計流程中,把語義信息嵌入特征編碼混合表示并作為正則化項指引視差圖。與傳統匹配方法將左右一致性檢查作為孤立的后處理步驟不同,文獻[19]提出左右比較遞歸模型,能夠共同執行視差估計和左右一致性檢查過程,并采用軟關注機制學習誤差圖指導模型,能夠有效改善視差圖。
早期基于CNN 的方法網絡結構較簡單,雖然有眾多研究人員在后續工作中獲取了大量研究成果,但并未解決如遮擋、弱紋理與光度失真等不適定區域問題。針對該問題,本文在網絡前端增加一個池化金字塔層,并利用該池化金字塔層對圖像的多尺度低級結構特征進行提取,在網絡后端采用多層特征融合的方式對最后三層網絡的高級語義特征進行提取,以有效提高立體匹配精度。
立體匹配的任務是獲得給定的一組圖像對的視差圖,本文中假設圖像已被修正,即圖像極線與水平圖像軸對齊。假設yi∈γi表示第i個像素對應的視差,|γ|為候選集(大小為128 或256),立體匹配通過左圖像的每個像素計算每個可能的視差值分數來估計三維代價卷,通常利用給定像素周圍小的區域手工制作描述符實現,文獻[4,20]中也是通過設計卷積神經網絡來實現的。
如圖1 所示,文獻[4]采用與經典MC-CNN 方法類似的Siamese 網絡結構,并利用4 層網絡對輸入每個分支的左右圖像進行匹配操作。每層網絡包含一個空間卷積層(卷積核數量為32 或64,大小為5×5 或3×3)和一個ReLU 非線性函數,卷積層用來提取特征,ReLU 非線性函數是為了減少計算量并加快收斂速度,而最后一層網絡沒有使用是為了防止負值的信息編碼丟失。

圖1 4 層雙塔網絡結構Fig.1 Structure of four-layer double tower network
通常立體匹配流程是利用Siamese 網絡提取左右圖像特征圖后再進行相似性度量,常用的做法是使用L2 范式對網絡結構添加幾個全連接層。文獻[4]方法使用了簡單的內積運算,允許聯合估計不同視差的相似性,從而有利于最小化網絡參數的交叉熵損失:

由于極線約束將搜索空間限制在水平線上,左右圖像塊高度相等,右圖像塊比左圖像塊寬Max Disp 個像素。在進行內積運算時,可以把內積運算看作左圖像塊在右圖像塊上進行逐行掃描,以計算每個像素位置的相似性,顯著加快計算速度。
如圖2 所示,文獻[20]中Anita 用7 層網絡代替了文獻[4]的4 層網絡,且每層有64 個卷積核,表示其擁有更好的特征提取能力。網絡層數的增加可使獲取的感受域更大,用來計算的信息更加豐富,增強網絡的非線性表達能力,對圖像特征有更強的表示能力,從而顯著提高計算精度。Anita 在第二層和第四層后面各添加一個池化層對前面的特征圖進行壓縮,提取主要特征并簡化網絡計算復雜度。經過一系列卷積與池化操作提取到圖像的特征后,將特征圖反卷積至原圖像大小以獲得更密集的視差預測。接下來用一個內積層進行相似性度量并用Softmax函數回歸得到視差圖。

圖2 改進的Anita 網絡結構Fig.2 Improved Anita network structure
用卷積網絡處理圖像信息時,高層特征包含更多的語義信息,而低層特征包含更多的結構與細節信息。由于文獻[4,20]方法沒有對這些信息進行處理,造成其提取特征能力有限,在不適定區域表現不足,因此在Anita 網絡結構的基礎上,本文將網絡前端的第2 層、3 層替換為池化金字塔層,用不同大小的池化窗口提取圖像的多尺度低級結構特征。而在網絡后端,本文用多層特征融合的方式連接最后三層的高級語義特征,具體如圖2 所示。
1.2.1 多尺度特征提取
文獻[4,20]方法通過堆疊一系列卷積層模塊來提取目標周圍的信息,但僅從一個尺度提取信息可能是不足的,感受域過小導致信息不足,感受域過大導致計算量增加或引入如遮擋和深度不連續等干擾信息。因此,多尺度提取圖像特征的方法被廣泛應用于語義分割和目標檢測等各種計算機視覺任務中,且在近期立體匹配框架中也存在廣泛應用。本文通過在網絡第二層添加一個池化金字塔層的方式來融合4 個尺度提取圖像信息,定義如下:

其中,C和P分別表示卷積和池化運算,P(F,S1)表示對特征圖F進行步長為1 的池化操作,“+”表示沿特征圖通道的連接運算,Fconcat為在4 個尺度下對特征圖F池化卷積運算后沿特征通道連接起來的最終特征圖。
如圖3 所示,多尺度特征提取的過程可歸結為以下4 步:1)輸入前一層的特征圖;2)在4 個不同尺度下提取特征圖;3)融合提取的4 個特征圖;4)輸出融合后的特征圖。圖3 中的左側為前一層的待處理特征圖,右側為融合后特征圖,可以直觀看到前后增加的尺度信息。

圖3 多尺度特征提取示意圖Fig.3 Schematic diagram of multi-scale feature extraction
多尺度特征提取的詳細信息如圖4 所示,且圖中的4 個分支并行,不同大小的池化窗口分別提取不同尺度的特征信息。待處理特征圖先進行4 個窗口大小固定為1×1、2×2、4×4、8×8 的池化操作,在提取到4 個尺度的特征圖后將其大小減小至一半,再各自通過一個3×3 的卷積層。經過上述操作提取的特征圖信息豐富且精度較高。接下來,將特征圖連接起來并通過一個1×1 的卷積層,從而達到特征融合的目的。

圖4 多尺度網絡結構示意圖Fig.4 Schematic diagram of multi-scale network structure
1.2.2 多層特征融合
為充分利用網絡后端豐富的語義信息,本文直接將第5 層、第6 層、第7 層最后三層的特征圖沿特征通道連接起來,且定義如下:

通過一系列卷積池化操作提取圖像的高維特征后,特征圖大小縮小了1/4。為充分利用這些高維特征來加強圖像特征的提取效果,需要盡可能減少圖像在卷積和池化操作中降維丟失的信息。如圖5 所示,訓練時三個特征圖通道大小分別為7×7×64,深色特征圖代表更高維的圖像信息,連接后特征圖大小為7×7×192,并結合了3 個特征圖的共同信息。這類似于之前多尺度的連接方式,使特征圖包含的信息更加豐富,不同的是該方式不會添加額外的網絡層,因此可以在運算量不額外增加的情況下融合更多特征信息。此外,本文也嘗試過在不同高低層特征之間引入跳躍連接,然而并未取得顯著的改善效果。為了補償池化運算丟失的細節信息并獲得更密集的視差預測,將特征圖用轉置卷積方式恢復至圖像的原始大小以進行相似性度量。

圖5 多層特征融合示意圖Fig.5 Schematic diagram of multi-level feature fusion
實驗在KITTI 2015 數據集上進行效果驗證并與其他幾種方法進行對比分析。KITTI 2015 數據集包含200 對圖像,主要描繪街道和城市場景,且矯正和裁剪后的圖像大小約為376 像素×1 244 像素。本文借鑒常用數據集分類方法,隨機抽取40 對圖像作為測試集,剩余160 對作為訓練集,訓練前所有圖像均進行了標準化預處理操作。
對模型進行訓練時,本文使用隨機選取圖像塊策略打亂160 對訓練集圖片順序,隨機選取大小為28 像素×28 像素的圖像塊進行訓練。采用Adam 訓練方法,學習率太大容易導致代價函數震蕩,太小又會收斂緩慢,因此本文采用指數下降法訓練模型,前期可以加快模型學習速度,后期使訓練更加穩定。批量大小設置為20,初始學習率設為0.001,初始全局步驟為0,衰減速度為400,每隔400 步更新一次學習速率,每學習一次衰減為原來0.994,使用交叉熵損失作為損失函數。為了減少訓練時間,本文迭代12 000 次進行模型結構對比,并與部分同類方法進行比較。訓練完成后,本文把圖像塊恢復至圖像原始大小進行測試,測試集圖像為40 對,統計預測圖像視差與真實視差進行比較并計算誤差平均值。本文的實驗平臺為NVIDIA GeForce GTX 1060,所用框架為Tensorflow。
為了驗證本文所提方法的有效性,實驗對不同模型結構的性能進行對比,結果如表1 所示。其中,“√”表示選擇的模塊,“×”表示未選擇的模塊。表中的M1 為Anita 網絡結構,M2 和M3 分別添加了不同數量和大小池化窗口進行比較,結果顯示池化金字塔層的有效性和窗口數量及大小對精度影響不大。M3 和M4 比較展現了特征融合層使用大小為3×3 的卷積核要優于大小為1×1 的卷積核。M4 和M5 說明了對最后三層特征圖融合的有效性。M6 改變了M5的池化窗口數量和大小,結合M2 與M3 的對比,結果顯示了池化窗口差異對不同網絡結構性能表現的不確定性,也展現出了神經網絡訓練的隨機性。

表1 6 種不同模型結構的性能對比Table 1 Performance comparison of six different model structures
表2 給出了本文方法與其他方法的誤差精度對比。目前KITTI 2015 數據集最高排名誤差精度為174%,本文中的立體匹配方法僅關注特征提取部分,不包括常規的后處理過程,因此無法與加入平滑技術或進行聯合優化的方法相比較,只能與類似方法進行比較。實驗對在訓練時各迭代了12 000 次的LUO[4]方法、Anita 方法和所提方法的誤差精度進行對比,最后一項是把本文的訓練模型迭代了30 000次。本文精度指標(誤差精度)采用誤匹配點比例法,即方法預測值與真實值之間誤差值大于等于2,3,4,5的像素點所占全部像素點的比例,統計數據為n(n=40)張訓練集圖像,如式(4)所示:

從表2 可以看出,本文方法相比其他方法在誤差精度上有一定的提升,在運行時間方面,除了MC-CNN-fast 方法,其他方法預測視差的運行時間基本穩定在21 s 左右。

表2 本文方法與其他方法的誤差精度對比Table 2 Comparison of error precision between the proposed method and other methods
本文方法與其他方法的視差圖對比效果如圖6所示。從直觀角度分析,本文方法可以得到保留樹干、車窗等細節信息的稠密視差圖,且相比LUO 方法和Anita 方法可得到更加平滑的視差圖并提升了匹配精度。這是因為本文方法中添加了多尺度特征,所以在部分弱紋理等不適定區域的匹配效果表現更加魯棒。

圖6 本文方法與其他方法的視差圖對比Fig.6 Comparison of disparity map between the proposed method and other methods
本文基于多尺度和多層級特征融合的卷積神經網絡,提出一種立體匹配方法。該方法利用不同尺度和不同層級的特征圖信息,在雙塔結構卷積神經網絡模型的前端設計一個池化金字塔層,以提取圖像的多尺度低層結構特征。在網絡模型的后端融合最后三層網絡的高級語義特征來提取左右圖像特征,對圖像特征進行相似性度量并輸出視差圖。實驗結果表明,該方法能夠得到細節信息更好的視差圖,且可有效降低像素的誤差精度,從而提高立體匹配精度。下一步將在本文網絡模型基礎上引入非光滑優化方法,以提高其整體運算效率。