王金鶴,蘇翠麗,孟凡云,車志龍,譚 浩,張 楠
(青島理工大學 信息與控制工程學院,山東 青島 266000)
三維場景信息重建是計算機視覺應用的關鍵,如車輛自動駕駛和醫學內窺鏡成像技術的應用,都是基于該技術對目標場景或物體的深度信息進行計算。深度信息計算目的是獲取雙目圖像中像素點的視差值,而視差值取決于空間景物在左右視圖中的對應關系,這種尋找左右圖像平面之間對應點的過程稱為立體匹配[1]。
傳統立體匹配方法通常包含4個步驟,即匹配代價計算、匹配代價聚合、視差計算和視差細化。早期的立體匹配算法分為全局匹配、局部匹配以及兩者結合的半全局匹配算法。但是這些方法均通過人工設計代價函數學習圖像特征之間的線性關系,不僅計算代價昂貴,而且在遮擋、重復紋理、弱紋理等區域達不到理想的匹配效果。
深度學習技術的發展使計算機視覺研究得到重大突破。卷積神經網絡(Convolutional Neural Network,CNN)能夠進行復雜的非線性表示,具有強大的表征能力,近年來被廣泛用于圖像識別及立體匹配的應用。進而,基于卷積神經網絡的立體匹配方法相繼被提出。但現有方法多采用深而復雜的3D卷積網絡架構進行端到端的視差圖學習。盡管這些立體匹配方法在網絡框架和訓練方式上存在巨大差異,但是通常都采用Siamese網絡作為立體圖像對的特征提取器,由此可見Siamese網絡結構在立體匹配中起到基礎性作用。
目前有些研究避免使用復雜的端到端CNN框架,而是針對Siamese網絡結構進行改進。受此啟發,本文改進基礎的Siamese特征提取網絡,引入空間金字塔池化(Spatial Pyramid Pooling,SPP)思想優化池化方式,以充分利用圖像信息。通過構建非對稱空間金字塔池化(Asymmectric SPP,ASPP)模型,在特征提取階段對圖像塊進行多尺度特征提取,以期獲得更準確的視差估計結果,提高匹配精度。
基于卷積神經網絡的立體匹配方法主要包括基于CNN的匹配代價學習、基于CNN的視差回歸和基于CNN的端到端視差圖獲取三類。
1)基于CNN的匹配代價學習方法主要以圖像塊之間的相似性作為匹配代價。文獻[2]成功地將CNN應用到匹配代價計算中,通過深層Siamese網絡來預測圖像塊之間的相似性得分,以此獲取圖像塊的匹配代價。文獻[3]在此基礎上提出一種縮小型立體匹配網絡,較好地解決了原模型處理過程中耗時多的問題。文獻[4]研究了一系列用于圖像塊匹配的二分類網絡,并且建立雙通道網絡架構進行視差估計。此后,文獻[5]提出使用內積層計算圖像塊對應像素的相似性,該方法可實現一秒內計算準確結果,并且將匹配任務轉化為多分類問題,類別是所有可能的視差。文獻[6]結合殘差網絡[7](ResNet)提出一種高速網絡來計算匹配代價,并且設計一個全局視差網絡預測視差置信度得分,進一步優化了視差圖。
2)基于CNN的視差回歸方法把視差圖獲取作為立體匹配的核心任務,其質量的優劣對三維信息重建有直接影響,因此,目前存在較多側重于視差圖后處理方法的研究[8-9]。文獻[10]提出經典的Displets網絡,使用3D卷積并通過物體識別和語義分割處理圖像對間的對應關系,大幅提高了匹配精度。文獻[11]提出檢測-替換-優化(Detect-Replace-Refine,DRR)結構進行視差估計,通過標簽檢測、錯誤標簽替換、新標簽優化來改善分類效果。文獻[12]提出半全局匹配網絡SGM-Net,通過訓練網絡學習預測SGM的懲罰項,以取代人工調整方法。
3)基于CNN的端到端視差圖獲取方法不對端到端網絡進行復雜后處理,而是輸入左右圖像對網絡直接學習輸出視差圖。文獻[13]提出端到端DispNet網絡結構結合光流估計進行立體匹配任務學習的方法,并且合成一個大型立體圖像數據集SceneFlow用于網絡訓練。此后,文獻[14]在DispNet的基礎上提出了級聯殘差學習(CRL)網絡。該網絡分為DispFullNet和DispResNet兩部分,前者輸出初始視差圖,后者通過計算多尺度殘差優化初始視差圖,最后將兩部分網絡的輸出結合構成最終的視差圖。文獻[15]提出了效果較好的GC-Net結構,其利用3D卷積獲得更多的上下文信息,實現了亞像素級別的視差估計。為獲得圖像更多的關鍵信息,有學者采用深度特征融合和多尺度提取圖形信息的卷積神經網絡[16-17]。文獻[18]利用圖像語義分割思想,同時結合全局環境信息提出了PSMNet結構,其主要由兩個模塊組成:金字塔池化和3D卷積神經網絡。金字塔池化模塊通過空間金字塔池化[19]和空洞卷積[20]聚合不同尺度和位置的環境信息構建匹配代價卷。3D卷積神經網絡模塊通過將多個堆疊的沙漏網絡與中間監督相結合來調整匹配代價卷,同時提高對全局信息的利用率。
上述方法都是利用深而復雜的3D卷積網絡架構進行端到端的視差圖學習,通常都采用Siamese網絡作為立體圖像對的特征提取器。由此可見,立體匹配本質上依賴于使用Siamese網絡來提取左右圖像特征信息。文獻[21]回避了復雜的端到端CNN框架,而是對基礎的Siamese網絡結構進行改進,其在文獻[5]網絡中引入普通池化和反卷積操作,利用池化操作擴大了網絡的感受野,為后續匹配提供了更多的視覺線索,并使用反卷積操作恢復圖像分辨率。
本文改進基礎Siamese特征提取網絡,通過引入空間金字塔池化(SPP)思想優化文獻[5]方法原有的池化方式,構建非對稱金字塔池化模型,在特征提取階段對圖像塊進行多尺度特征提取,進而提高匹配精度。
如前所述,本文所提出的網絡架構仍采用圖像塊作為輸入,左右圖像塊的像素大小遵循先前工作,輸出為圖像塊的相似性。本節首先介紹空間金字塔池化模型,在此基礎上改進池化方式,提出非對稱空間金字塔池化模型,最后詳述整個網絡架構及其他改進細節。
空間金字塔池化[19](SPP)對前一卷積層輸出的特征圖進行不同尺寸池化操作,得到不同分辨率的特征信息,從而有效提高網絡對特征的識別精度。文獻[19]給出了詳細的池化過程:首先使用3種不同刻度的窗口對特征圖像進行劃分,每一種刻度代表金字塔的一層,劃分后的每一個圖像塊大小為window_size;然后對每一個圖像塊都采取最大池化操作,提取出更高級的圖像特征信息。圖像劃分計算公式如下:
win_size=「a/n?
(1)
str_size=?a/n」
(2)
其中,win_size和str_size分別表示池化窗口和池化步幅的大小,a表示金字塔池化層輸入的特征圖尺寸為a×a,n表示金字塔池化層輸出的特征圖尺寸為n×n,「·?表示向上取整,?·」表示向下取整。
如圖1所示,對左輸入圖像進行金字塔池化操作:若前一卷積層輸出為13×13大小的特征圖,池化之后的特征圖尺寸為2×2,則win_size=「13/2?,str_size=?13/2」,結果分別為7、6,即采用窗口為7、步幅為6池化操作即可得到2×2尺寸的特征圖。

圖1 原金字塔池化過程
如果對右輸入圖像采用相同刻度的池化操作,SPP模型也會將右圖按照刻度劃分,最終輸出與左圖相同尺寸的特征圖像。但實際右輸入圖像塊尺寸遠大于左圖像塊,這表示右圖像塊包含更多的特征信息,若采用相同尺度的池化方式,將直接導致右原始圖像丟失大部分特征信息,最終降低網絡視差估計的精度,影響網絡的匹配效果。
針對上述SPP模型存在的圖像特征信息缺失問題,本文改變對右圖像塊的劃分方式,重新定義金字塔池化公式,如式(3)~式(5)所示:
k=「|l-a|/n?
(3)

(4)

(5)其中,a、l表示金字塔池化層的輸入特征圖尺寸,n表示金字塔池化層輸出的特征圖尺寸,win_h和win_w表示池化窗口高度和寬度,str_h和str_w表示兩個維度上池化步幅的大小。
改進后的金字塔池化過程如下:首先按照金字塔池化原理對右圖多于左圖的部分進行初步劃分,得到初始劃分圖像塊大小k;然后以整幅圖像為池化層的輸入,在圖像高度的維度上仍采用原金字塔劃分刻度,大小為n,但在圖像寬度的維度上采用新的劃分刻度(n+k)。改進后的池化過程如圖2所示。

圖2 改進的金字塔池化過程
改進后的池化模型對左右特征圖像采用不同刻度的劃分方式,針對右圖實現了兩個維度上不同尺寸的池化,右圖被劃分為更均勻的圖像塊,進行后續最大池化操作時能夠得到更詳細的特征信息。由于從整個池化結構上看,左右分支呈現非對稱性,因此將本文改進后的池化操作稱為非對稱空間金字塔池化(ASPP)。
如圖3所示,ASPP網絡的左右分支分別以不同尺寸的圖像塊作為輸入,左、右輸入分別為10×10、10×(10+maxDisp)的圖像塊(maxDisp表示最大視差值)。輸入圖像經卷積層輸出通道數為64的特征圖像,圖像尺寸不變。然后經過非對稱金字塔池化,池化尺寸分別為4×4、2×2、1×1,對應生成3種不同尺度和精度的特征圖像,通道數均為64。之后,通過上采樣將3種特征圖恢復為原始圖像尺寸,最后采用級聯操作將其連接得到通道數為192(64×3)的特征圖像。本文將池化及后續上采樣、級聯步驟歸一化稱為非對稱池化模塊。此外,整個網絡模型左右分支共享權值。

圖3 非對稱空間金字塔池化模型
為充分利用圖像特征信息,本文在LuoNet網絡基礎上引入金字塔池化層,擴大目標像素位置的感受野,獲取更多的圖像信息,LuoNet網絡結構如圖4(a)所示。由于原有的金字塔池化操作會造成部分圖像信息缺失問題,因此本文改進了網絡結構,如圖4(b)所示,使ASPP模型可以提取到更多的特征信息,達到更精確的匹配效果。

圖4 改進前后網絡結構對比
本文網絡結構設計流程如下:
1)圖像先經過4個卷積層(Conv)、批標準化和線性整流函數(ReLU)。
2)非對稱池化模塊(ASPP)對特征圖像進行不同刻度的池化操作。
3)再次經過兩層卷積操作(Conv)融合特征信息。
4)Inner Product層利用內積計算每個視差下左右特征的相似性得分。
5)Softmax函數計算每個視差的概率值,形成多分類網絡模型。數字3和1分別代表卷積核的大小為3×3、1×1,64、128、192代表卷積核通道數。
此外說明,本文網絡結構中所有卷積層和池化層中的步長均為1。
本文主要有兩處結構上的改進:基于改進的金字塔池化模型提出非對稱金字塔網絡結構,網絡通過多尺度提取圖像特征信息改善了匹配效果;將網絡深度由4層加深至7層,提升了網絡匹配精度,并且額外的卷積層使用較的小卷積核,減少了特征維度,加快了網絡收斂速度。
網絡將不同尺寸的左右圖像塊作為輸入,首先利用4層卷積神經網絡層進行特征提取,每個卷積層對圖像做卷積核為3×3、通道數均為64的空間卷積;然后經過空間批標準化和ReLU層;之后非對稱池化模塊將特征圖像壓縮到3個不同尺度中,得到多尺度特征圖像;最后通過雙線性插值將特征圖像上采樣至原始圖像分辨率,并利用級聯操作進行連接輸出通道數為192的特征圖。由于經過非對稱金字塔池化后的特征圖像含有不同精度的特征信息,因此本文疊加了兩層額外的卷積層進行特征信息融合。為加快網絡的收斂速度,額外的兩個卷積層的卷積核尺寸分別設置為3×3和1×1,其通道數分別為128和64。為保留以負值編碼的特征信息,同樣刪除了最后卷積層的ReLU線性激活函數。內積層以一種簡單的方式計算特征之間的內積,并將其作為不同像素間的匹配代價。最后通過Softmax函數進行視差分類預測,類別是所有可能的視差值。本文網絡結構中所有卷積層和池化層中的步長均為1。
在本文實驗中,所有模型的訓練、驗證及預測均采用Tensorflow深度學習框架,操作系統為ubuntu18.04,網絡訓練及性能測試的GPU服務器為NVIDIA GeForce GTX 1060Ti。實驗使用KITTI 2012[22]、KITTI 2015[23]數據集及Middlebury測試集上進行模型訓練和視差評估。
KITTI2012數據集包含194對帶有視差真值的左右圖像,隨機選取160對圖像作為模型訓練集,剩余34對圖像作為模型驗證集。KITTI2015數據集包含200對左右圖像,同樣從中隨機選取160對圖像訓練模型,剩余40對圖像用于模型驗證。每對圖像大小為375像素×1 241像素。使用Middlebury測試集提供的Cones測試圖像對、Teddy測試圖像對和Tsukuba測試圖像對來評估視差圖,每對圖像都含有視差真值,大小為375像素×450像素。在模型訓練之前,對所有立體圖像均進行預處理操作,分別通過減去平均值、除以像素強度標準差的方式將圖像歸一化為零均值和單位標準差的圖像。
實驗步驟與文獻[5]中一致,首先從左右立體圖像數據集中隨機提取圖像塊,將提取出的右圖像塊以最大視差值進行拓展。如前所述,分別使用尺寸為4×4、2×2、1×1的池化操作。網絡訓練時圖像塊尺寸設置為10×10,最大視差值設置為128,驗證時KITTI數據集上的圖像塊均隨機截取275像素×640像素,Middlebury測試集的圖像對大小仍為375像素×450像素。
網絡所有參數使用He初始值[24]隨機初始化,后續采用隨機梯度下降(SGD)算法進行參數更新,網絡損失函數采用softmax交叉熵損失函數,并采用AdamOptimizer算法[25]優化損失函數。本文以初始學習率1e-3進行網絡訓練,每迭代400次對學習率進行一次更新,逐步減小學習率直至模型訓練穩定。本文設計批處理尺寸為128,網絡總迭代次數為40k次,學習率由1e-3降至1e-4。
對算法性能產生影響的超參數分析實驗,第1組是對2.1節中的k值進行影響分析,第2組是額外卷積層參數對比分析,參數為卷積核的尺寸。兩組實驗均使用KITTI2015數據集。
1)k值影響分析
本文通過引入k值對文獻[19]金字塔池化方式進行改進,因此,對于k值的分析以文獻[19]為基準算法進行直接對比。當網絡池化刻度為{4,2,1}時,由式(1)、式(2)計算出經金字塔池化后的輸出尺寸分別為{(4×4),(2×2),(1×1)};采用非對稱金字塔池化,則由式(3)~式(5)進行相關計算,首先是對應參數k為{32,64,128},其對應輸出的特征圖尺寸分別為{(4×46),(2×28),(1×14)},無疑包含更多的圖像信息。
本文實驗采用圖4(a)所示的網絡結構(在最初的兩個卷積層之后引入不同的池化結構),兩組實驗不同之處僅在于池化方式不同,驗證數據均使用KITTI2012驗證集。以網絡匹配率為衡量標準,比較結果如表1所示。表中數據指標為視差值與基準視差差距分別大于2個、3個和5個像素的像素點比例,其中加粗數據表示最優數據。實驗結果表明,在同等網絡結構設置下,本文方法較對比方法在精度上均有提升,并且取得了最低誤匹配率,這證明了改進網絡的匹配效果優于其他模型。

表1 k值對匹配誤差的影響
2)卷積層參數影響分析
在CNN中卷積核的尺寸對模型訓練至關重要,較大的卷積核通常可以帶來較大感受野,從而獲取到更多的圖像信息,但同時較大卷積核會導致昂貴的計算成本,降低模型計算性能。所以,使用更小的卷積核是當前保證模型精度的情況下,提升網絡訓練速度的一種方式。因此,實驗對于圖4(b)中額外的卷積層進行分析對比。實驗分為3組,分別將卷積核尺寸設置為{1×1,1×1}、{3×3,3×3}、{3×3,1×1},通道數不變,均在在KITTI2012訓練集上進行實驗,實驗結果包括網絡錯誤率和網絡損失函數值,如圖5和圖6所示。可以看出:卷積核{1×1,1×1}的卷積層因為含有最少的參數,其損失函數收斂速度最快,但錯誤率最高;{3×3,3×3}的卷積層在網絡訓練初期誤匹配率較低,但隨著訓練時間的增加,其誤匹配率降低緩慢,并且最終的損失函數值最高;卷積核為{3×3,1×1}的卷積層錯誤率最低,損失函數值收斂到最小,并且隨著訓練時間和迭代次數的增加,其錯誤率和損失函數值持續減小。因此,改進算法采用{3×3,1×1}的卷積核。

圖5 不同卷積核尺寸下的誤匹配率曲線

圖6 不同卷積核尺寸下的損失函數曲線
使用本文方法在KITTI2012和KITTI2015驗證集上進行視差估計,并分別與文獻[5,21]方法進行誤差對比分析,閾值依次設置為2個、3個和5個像素,實驗結果如表2和表3所示,其中加粗數據表示最優數據。可以看出,本文方法的錯誤率在各項指標上均小于對比方法,尤其是像素閾值為3、5時的網絡匹配錯誤率分別從5.84%、4.80%降低至3.88%、2.94%。雖然相比原始方法LuoNet較為耗時,但比SPPNet在時間上提升了約50%。相比于數據集KITTI2012,其在數據集KITTI2015上錯誤率略高,但是仍低于兩種對比方法。由此可以證明,本文方法在精度和速度上都具有一定優勢。

表2 在KITTI2012數據集上的測試結果對比

表3 在KITTI2015數據集上的測試結果對比
本文方法與經典MC-CNN[2]匹配方法的比較如表4所示,以2個像素的像素點比例作為閾值,表中加粗數據表示最優數據,結果表明,本文方法較MC-CNN-acrt[2]誤差降低了約14%,較MC-CNN-fast[2]方法降低了約11%,本文網絡結構在KITTI2012和KITTI2015兩個數據集上均實現了較低的錯誤率。

表4 4種方法的視差結果誤差對比
在KITTI2012和KITTI2015數據集及Middlebury測試集上進行視差圖預測,輸出結果如圖7~圖9所示。圖7和圖8中列出2組視差效果對比圖,圖9列出3組對比結果。特別說明,在本文采用的文獻[5]方法中,視差圖未經過視差后處理,本文采取同樣的處理方式,因此,輸出視差圖中含有一些噪音,但并不影響實驗結果分析。
從圖7~圖9可以看出,本文提出的非對稱金字塔池化網絡獲得的視差效果更平滑,尤其在Middlebury測試集中,所得視差圖不僅含有較少的噪聲,而且能夠預測到圖像物體及圖像邊緣的視差。例如圖7中汽車邊緣等細節區域、圖9中Cones測試圖像(左列)物體的邊緣和Tsukuba測試圖像(右列)臺燈的邊緣,本文方法輸出的視差圖效果均優于LuoNet。圖8的匹配效果雖然在某些細節方面不夠理想,目標物輪廓較為模糊,但是在沒有進行任何后處理的情況下,完整保留了目標物的整體信息,即使視差圖中有些區域含有較多的噪聲,但本文方法仍能完整地保留不同場景的目標像素信息,并且取得更好的視差效果。

圖8 KITTI2015數據集視差圖

圖9 Middlebury數據集視差圖
針對卷積神經網絡用于立體匹配時的耗時和信息損失問題,本文結合現有的卷積神經網絡架構及池化結構,對金字塔池化方法進行改進,提出非對稱金字塔池化模型,并且使用較小的卷積核增加網絡深度。實驗結果表明,與LuoNet網絡結構相比,改進后的網絡結構不僅能夠加快網絡訓練收斂速度,而且能夠進行多級特征信息提取,提升了網絡匹配精度,改善了最終視差效果。但本文設計未使用視差后處理操作,網絡處理對象仍是小尺寸圖像塊。下一步將研究如何平衡輸入圖像塊尺寸與視差效果,并利用殘差網絡多級信息融合技術對視差圖進行優化。