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