王金鶴,車志龍,張 楠,孟凡云,蘇翠麗,譚 浩
(青島理工大學(xué)信息與控制工程學(xué)院,山東青島 266000)
立體匹配技術(shù)通過計算立體相機(jī)拍攝的2 張圖像中每個像素的視差,確定立體圖像間的對應(yīng)關(guān)系,且在機(jī)器人自主導(dǎo)航、自動駕駛和三維場景重建中具有廣泛的應(yīng)用。傳統(tǒng)立體匹配方法通常采用匹配代價計算、代價聚合、視差計算和視差優(yōu)化4 個步驟,但是存在匹配效率較低的問題。隨著基于深度學(xué)習(xí)的語義分割、目標(biāo)檢測與識別等高層視覺技術(shù)的快速發(fā)展,神經(jīng)網(wǎng)絡(luò)方法逐漸應(yīng)用于立體匹配中。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)因其較強(qiáng)的特征提取能力而取代了傳統(tǒng)手工制作特征描述符的方法。基于CNN 的方法將視差估計作為學(xué)習(xí)任務(wù),利用大量數(shù)據(jù)對模型參數(shù)進(jìn)行優(yōu)化,并以模型處理后的輸出圖像作為視差圖。CNN 相對傳統(tǒng)立體匹配中計算像素的匹配代價而言,可以更好地捕獲局部上下文信息,對遮擋、透明和非郎伯照明效果等光度差異魯棒性更強(qiáng),且在匹配速度和精度方面都有顯著提升。
在早期基于CNN 的立體匹配方法中,文獻(xiàn)[1]采用神經(jīng)網(wǎng)絡(luò)方法計算匹配代價,將兩個圖像之間的匹配代價看作二分類問題,且計算效果良好。文獻(xiàn)[2-3]通過對早期CNN 結(jié)構(gòu)進(jìn)一步改進(jìn)而取得滿意效果。文獻(xiàn)[4]通過用內(nèi)積層替換網(wǎng)絡(luò)的全連接層進(jìn)行相似性度量,將代價計算看作一個多分類任務(wù),大幅加快訓(xùn)練與測試的效率。文獻(xiàn)[5]發(fā)布一個帶有真實(shí)視差、光流和場景流的合成數(shù)據(jù)集,并提出一個帶有編碼-解碼器結(jié)構(gòu)的DispNet 模型。文獻(xiàn)[6]提出了MatchNet,在增加池化層且減少特征尺寸的基礎(chǔ)上,利用3 個全連接層進(jìn)行相似性度量。文獻(xiàn)[7]探索并研究了多種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的特點(diǎn),歸結(jié)出三種基本網(wǎng)絡(luò)結(jié)構(gòu)模型。文獻(xiàn)[8]采用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)有判別力的圖像塊,并用L2 范式進(jìn)行相似性度量。深度學(xué)習(xí)的發(fā)展使得立體匹配的網(wǎng)絡(luò)結(jié)構(gòu)日漸趨于成熟,也預(yù)示著未來網(wǎng)絡(luò)結(jié)構(gòu)將會更加復(fù)雜。在近期研究中,采用神經(jīng)網(wǎng)絡(luò)方法改進(jìn)傳統(tǒng)立體匹配的步驟,并將不同的子結(jié)構(gòu)整合到一個端到端的框架中,或是利用全局上下文信息進(jìn)行優(yōu)化。文獻(xiàn)[9]改進(jìn)了MC-CNN 結(jié)構(gòu),并結(jié)合不同大小窗口進(jìn)行匹配代價計算。文獻(xiàn)[10]利用端到端的GCNet 取代了傳統(tǒng)四步法,將二維卷積提取的特征與三維卷積提取的上下文信息相結(jié)合,并采用回歸模型預(yù)測視差圖。文獻(xiàn)[11]提出了兩個階段的級聯(lián)網(wǎng)絡(luò)結(jié)構(gòu),先用DispFullNet 生成具有更多細(xì)節(jié)的初始視差圖,再用DispResNet 生成不同尺度殘差信號來優(yōu)化視差圖。文獻(xiàn)[12]通過對傳統(tǒng)四步法進(jìn)行整合,用初始視差圖和特征連續(xù)性輸出次級網(wǎng)絡(luò)優(yōu)化視差圖。文獻(xiàn)[13]提出采用具有混合損失的多級加權(quán)殘差捷徑的高速公路結(jié)構(gòu)進(jìn)行圖像塊的多級比較,并用深度神經(jīng)網(wǎng)絡(luò)池化多個視差的全局信息。PSMNet[14]用空間金字塔池化(Spatial Pyramid Pooling,SPP)聚合不同尺度與不同位置的環(huán)境信息構(gòu)造代價卷,三維CNN 結(jié)構(gòu)中使用多個堆疊沙漏網(wǎng)絡(luò)和中間監(jiān)督結(jié)合調(diào)整代價卷。文獻(xiàn)[15]結(jié)合CNN 和分割約束解決了弱紋理及遮擋區(qū)域的匹配難題。文獻(xiàn)[16]用雙流網(wǎng)絡(luò)提供全局指導(dǎo),一個網(wǎng)絡(luò)產(chǎn)生聚合結(jié)果并生成提議,另一個網(wǎng)絡(luò)結(jié)合低層結(jié)構(gòu)信息評估結(jié)果對提議進(jìn)行選擇。文獻(xiàn)[17]提出一個由主干視差網(wǎng)絡(luò)和邊緣子網(wǎng)絡(luò)組成的端到端視差模型。文獻(xiàn)[18]將語義分割信息結(jié)合到視差估計流程中,把語義信息嵌入特征編碼混合表示并作為正則化項(xiàng)指引視差圖。與傳統(tǒng)匹配方法將左右一致性檢查作為孤立的后處理步驟不同,文獻(xiàn)[19]提出左右比較遞歸模型,能夠共同執(zhí)行視差估計和左右一致性檢查過程,并采用軟關(guān)注機(jī)制學(xué)習(xí)誤差圖指導(dǎo)模型,能夠有效改善視差圖。
早期基于CNN 的方法網(wǎng)絡(luò)結(jié)構(gòu)較簡單,雖然有眾多研究人員在后續(xù)工作中獲取了大量研究成果,但并未解決如遮擋、弱紋理與光度失真等不適定區(qū)域問題。針對該問題,本文在網(wǎng)絡(luò)前端增加一個池化金字塔層,并利用該池化金字塔層對圖像的多尺度低級結(jié)構(gòu)特征進(jìn)行提取,在網(wǎng)絡(luò)后端采用多層特征融合的方式對最后三層網(wǎng)絡(luò)的高級語義特征進(jìn)行提取,以有效提高立體匹配精度。
立體匹配的任務(wù)是獲得給定的一組圖像對的視差圖,本文中假設(shè)圖像已被修正,即圖像極線與水平圖像軸對齊。假設(shè)yi∈γi表示第i個像素對應(yīng)的視差,|γ|為候選集(大小為128 或256),立體匹配通過左圖像的每個像素計算每個可能的視差值分?jǐn)?shù)來估計三維代價卷,通常利用給定像素周圍小的區(qū)域手工制作描述符實(shí)現(xiàn),文獻(xiàn)[4,20]中也是通過設(shè)計卷積神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)的。
如圖1 所示,文獻(xiàn)[4]采用與經(jīng)典MC-CNN 方法類似的Siamese 網(wǎng)絡(luò)結(jié)構(gòu),并利用4 層網(wǎng)絡(luò)對輸入每個分支的左右圖像進(jìn)行匹配操作。每層網(wǎng)絡(luò)包含一個空間卷積層(卷積核數(shù)量為32 或64,大小為5×5 或3×3)和一個ReLU 非線性函數(shù),卷積層用來提取特征,ReLU 非線性函數(shù)是為了減少計算量并加快收斂速度,而最后一層網(wǎng)絡(luò)沒有使用是為了防止負(fù)值的信息編碼丟失。
圖1 4 層雙塔網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of four-layer double tower network
通常立體匹配流程是利用Siamese 網(wǎng)絡(luò)提取左右圖像特征圖后再進(jìn)行相似性度量,常用的做法是使用L2 范式對網(wǎng)絡(luò)結(jié)構(gòu)添加幾個全連接層。文獻(xiàn)[4]方法使用了簡單的內(nèi)積運(yùn)算,允許聯(lián)合估計不同視差的相似性,從而有利于最小化網(wǎng)絡(luò)參數(shù)的交叉熵?fù)p失:
由于極線約束將搜索空間限制在水平線上,左右圖像塊高度相等,右圖像塊比左圖像塊寬Max Disp 個像素。在進(jìn)行內(nèi)積運(yùn)算時,可以把內(nèi)積運(yùn)算看作左圖像塊在右圖像塊上進(jìn)行逐行掃描,以計算每個像素位置的相似性,顯著加快計算速度。
如圖2 所示,文獻(xiàn)[20]中Anita 用7 層網(wǎng)絡(luò)代替了文獻(xiàn)[4]的4 層網(wǎng)絡(luò),且每層有64 個卷積核,表示其擁有更好的特征提取能力。網(wǎng)絡(luò)層數(shù)的增加可使獲取的感受域更大,用來計算的信息更加豐富,增強(qiáng)網(wǎng)絡(luò)的非線性表達(dá)能力,對圖像特征有更強(qiáng)的表示能力,從而顯著提高計算精度。Anita 在第二層和第四層后面各添加一個池化層對前面的特征圖進(jìn)行壓縮,提取主要特征并簡化網(wǎng)絡(luò)計算復(fù)雜度。經(jīng)過一系列卷積與池化操作提取到圖像的特征后,將特征圖反卷積至原圖像大小以獲得更密集的視差預(yù)測。接下來用一個內(nèi)積層進(jìn)行相似性度量并用Softmax函數(shù)回歸得到視差圖。
圖2 改進(jìn)的Anita 網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Improved Anita network structure
用卷積網(wǎng)絡(luò)處理圖像信息時,高層特征包含更多的語義信息,而低層特征包含更多的結(jié)構(gòu)與細(xì)節(jié)信息。由于文獻(xiàn)[4,20]方法沒有對這些信息進(jìn)行處理,造成其提取特征能力有限,在不適定區(qū)域表現(xiàn)不足,因此在Anita 網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,本文將網(wǎng)絡(luò)前端的第2 層、3 層替換為池化金字塔層,用不同大小的池化窗口提取圖像的多尺度低級結(jié)構(gòu)特征。而在網(wǎng)絡(luò)后端,本文用多層特征融合的方式連接最后三層的高級語義特征,具體如圖2 所示。
1.2.1 多尺度特征提取
文獻(xiàn)[4,20]方法通過堆疊一系列卷積層模塊來提取目標(biāo)周圍的信息,但僅從一個尺度提取信息可能是不足的,感受域過小導(dǎo)致信息不足,感受域過大導(dǎo)致計算量增加或引入如遮擋和深度不連續(xù)等干擾信息。因此,多尺度提取圖像特征的方法被廣泛應(yīng)用于語義分割和目標(biāo)檢測等各種計算機(jī)視覺任務(wù)中,且在近期立體匹配框架中也存在廣泛應(yīng)用。本文通過在網(wǎng)絡(luò)第二層添加一個池化金字塔層的方式來融合4 個尺度提取圖像信息,定義如下:
其中,C和P分別表示卷積和池化運(yùn)算,P(F,S1)表示對特征圖F進(jìn)行步長為1 的池化操作,“+”表示沿特征圖通道的連接運(yùn)算,F(xiàn)concat為在4 個尺度下對特征圖F池化卷積運(yùn)算后沿特征通道連接起來的最終特征圖。
如圖3 所示,多尺度特征提取的過程可歸結(jié)為以下4 步:1)輸入前一層的特征圖;2)在4 個不同尺度下提取特征圖;3)融合提取的4 個特征圖;4)輸出融合后的特征圖。圖3 中的左側(cè)為前一層的待處理特征圖,右側(cè)為融合后特征圖,可以直觀看到前后增加的尺度信息。
圖3 多尺度特征提取示意圖Fig.3 Schematic diagram of multi-scale feature extraction
多尺度特征提取的詳細(xì)信息如圖4 所示,且圖中的4 個分支并行,不同大小的池化窗口分別提取不同尺度的特征信息。待處理特征圖先進(jìn)行4 個窗口大小固定為1×1、2×2、4×4、8×8 的池化操作,在提取到4 個尺度的特征圖后將其大小減小至一半,再各自通過一個3×3 的卷積層。經(jīng)過上述操作提取的特征圖信息豐富且精度較高。接下來,將特征圖連接起來并通過一個1×1 的卷積層,從而達(dá)到特征融合的目的。
圖4 多尺度網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.4 Schematic diagram of multi-scale network structure
1.2.2 多層特征融合
為充分利用網(wǎng)絡(luò)后端豐富的語義信息,本文直接將第5 層、第6 層、第7 層最后三層的特征圖沿特征通道連接起來,且定義如下:
通過一系列卷積池化操作提取圖像的高維特征后,特征圖大小縮小了1/4。為充分利用這些高維特征來加強(qiáng)圖像特征的提取效果,需要盡可能減少圖像在卷積和池化操作中降維丟失的信息。如圖5 所示,訓(xùn)練時三個特征圖通道大小分別為7×7×64,深色特征圖代表更高維的圖像信息,連接后特征圖大小為7×7×192,并結(jié)合了3 個特征圖的共同信息。這類似于之前多尺度的連接方式,使特征圖包含的信息更加豐富,不同的是該方式不會添加額外的網(wǎng)絡(luò)層,因此可以在運(yùn)算量不額外增加的情況下融合更多特征信息。此外,本文也嘗試過在不同高低層特征之間引入跳躍連接,然而并未取得顯著的改善效果。為了補(bǔ)償池化運(yùn)算丟失的細(xì)節(jié)信息并獲得更密集的視差預(yù)測,將特征圖用轉(zhuǎn)置卷積方式恢復(fù)至圖像的原始大小以進(jìn)行相似性度量。
圖5 多層特征融合示意圖Fig.5 Schematic diagram of multi-level feature fusion
實(shí)驗(yàn)在KITTI 2015 數(shù)據(jù)集上進(jìn)行效果驗(yàn)證并與其他幾種方法進(jìn)行對比分析。KITTI 2015 數(shù)據(jù)集包含200 對圖像,主要描繪街道和城市場景,且矯正和裁剪后的圖像大小約為376 像素×1 244 像素。本文借鑒常用數(shù)據(jù)集分類方法,隨機(jī)抽取40 對圖像作為測試集,剩余160 對作為訓(xùn)練集,訓(xùn)練前所有圖像均進(jìn)行了標(biāo)準(zhǔn)化預(yù)處理操作。
對模型進(jìn)行訓(xùn)練時,本文使用隨機(jī)選取圖像塊策略打亂160 對訓(xùn)練集圖片順序,隨機(jī)選取大小為28 像素×28 像素的圖像塊進(jìn)行訓(xùn)練。采用Adam 訓(xùn)練方法,學(xué)習(xí)率太大容易導(dǎo)致代價函數(shù)震蕩,太小又會收斂緩慢,因此本文采用指數(shù)下降法訓(xùn)練模型,前期可以加快模型學(xué)習(xí)速度,后期使訓(xùn)練更加穩(wěn)定。批量大小設(shè)置為20,初始學(xué)習(xí)率設(shè)為0.001,初始全局步驟為0,衰減速度為400,每隔400 步更新一次學(xué)習(xí)速率,每學(xué)習(xí)一次衰減為原來0.994,使用交叉熵?fù)p失作為損失函數(shù)。為了減少訓(xùn)練時間,本文迭代12 000 次進(jìn)行模型結(jié)構(gòu)對比,并與部分同類方法進(jìn)行比較。訓(xùn)練完成后,本文把圖像塊恢復(fù)至圖像原始大小進(jìn)行測試,測試集圖像為40 對,統(tǒng)計預(yù)測圖像視差與真實(shí)視差進(jìn)行比較并計算誤差平均值。本文的實(shí)驗(yàn)平臺為NVIDIA GeForce GTX 1060,所用框架為Tensorflow。
為了驗(yàn)證本文所提方法的有效性,實(shí)驗(yàn)對不同模型結(jié)構(gòu)的性能進(jìn)行對比,結(jié)果如表1 所示。其中,“√”表示選擇的模塊,“×”表示未選擇的模塊。表中的M1 為Anita 網(wǎng)絡(luò)結(jié)構(gòu),M2 和M3 分別添加了不同數(shù)量和大小池化窗口進(jìn)行比較,結(jié)果顯示池化金字塔層的有效性和窗口數(shù)量及大小對精度影響不大。M3 和M4 比較展現(xiàn)了特征融合層使用大小為3×3 的卷積核要優(yōu)于大小為1×1 的卷積核。M4 和M5 說明了對最后三層特征圖融合的有效性。M6 改變了M5的池化窗口數(shù)量和大小,結(jié)合M2 與M3 的對比,結(jié)果顯示了池化窗口差異對不同網(wǎng)絡(luò)結(jié)構(gòu)性能表現(xiàn)的不確定性,也展現(xiàn)出了神經(jīng)網(wǎng)絡(luò)訓(xùn)練的隨機(jī)性。
表1 6 種不同模型結(jié)構(gòu)的性能對比Table 1 Performance comparison of six different model structures
表2 給出了本文方法與其他方法的誤差精度對比。目前KITTI 2015 數(shù)據(jù)集最高排名誤差精度為174%,本文中的立體匹配方法僅關(guān)注特征提取部分,不包括常規(guī)的后處理過程,因此無法與加入平滑技術(shù)或進(jìn)行聯(lián)合優(yōu)化的方法相比較,只能與類似方法進(jìn)行比較。實(shí)驗(yàn)對在訓(xùn)練時各迭代了12 000 次的LUO[4]方法、Anita 方法和所提方法的誤差精度進(jìn)行對比,最后一項(xiàng)是把本文的訓(xùn)練模型迭代了30 000次。本文精度指標(biāo)(誤差精度)采用誤匹配點(diǎn)比例法,即方法預(yù)測值與真實(shí)值之間誤差值大于等于2,3,4,5的像素點(diǎn)所占全部像素點(diǎn)的比例,統(tǒng)計數(shù)據(jù)為n(n=40)張訓(xùn)練集圖像,如式(4)所示:
從表2 可以看出,本文方法相比其他方法在誤差精度上有一定的提升,在運(yùn)行時間方面,除了MC-CNN-fast 方法,其他方法預(yù)測視差的運(yùn)行時間基本穩(wěn)定在21 s 左右。
表2 本文方法與其他方法的誤差精度對比Table 2 Comparison of error precision between the proposed method and other methods
本文方法與其他方法的視差圖對比效果如圖6所示。從直觀角度分析,本文方法可以得到保留樹干、車窗等細(xì)節(jié)信息的稠密視差圖,且相比LUO 方法和Anita 方法可得到更加平滑的視差圖并提升了匹配精度。這是因?yàn)楸疚姆椒ㄖ刑砑恿硕喑叨忍卣鳎栽诓糠秩跫y理等不適定區(qū)域的匹配效果表現(xiàn)更加魯棒。
圖6 本文方法與其他方法的視差圖對比Fig.6 Comparison of disparity map between the proposed method and other methods
本文基于多尺度和多層級特征融合的卷積神經(jīng)網(wǎng)絡(luò),提出一種立體匹配方法。該方法利用不同尺度和不同層級的特征圖信息,在雙塔結(jié)構(gòu)卷積神經(jīng)網(wǎng)絡(luò)模型的前端設(shè)計一個池化金字塔層,以提取圖像的多尺度低層結(jié)構(gòu)特征。在網(wǎng)絡(luò)模型的后端融合最后三層網(wǎng)絡(luò)的高級語義特征來提取左右圖像特征,對圖像特征進(jìn)行相似性度量并輸出視差圖。實(shí)驗(yàn)結(jié)果表明,該方法能夠得到細(xì)節(jié)信息更好的視差圖,且可有效降低像素的誤差精度,從而提高立體匹配精度。下一步將在本文網(wǎng)絡(luò)模型基礎(chǔ)上引入非光滑優(yōu)化方法,以提高其整體運(yùn)算效率。