張亞茹 孔雅婷 劉 彬
計算兩個輸入圖像上對應像素的相對水平立體匹配對于理解或重建3D 場景至關重要,廣泛應用于自動駕駛[1]、無人機[2]、醫學成像和機器人智能控制等領域.通常,給定一對校正后的圖像,立體匹配的目標是位移,即視差.
近年來,基于深度學習的立體匹配算法研究已取得重大進展,相比傳統方法[3?4],可從原始數據理解語義信息,在精度和速度方面有著顯著優勢.早期基于深度學習的方法[5?6]是經卷積神經網絡(Convolutional neural network,CNN)獲得一維特征相關性度量之后,采用一系列傳統的后處理操作預測最終視差,無法端到端網絡訓練.隨著全卷積神經網絡(Fully convolutional networks,FCN)的發展[7],研究者們提出了將端到端網絡整合到立體匹配模型中[8?16].對于全卷積深度學習立體匹配網絡,PSMNet[17]提出一種空間金字塔池化模塊,擴大深層特征感受野,提取不同尺度和位置的上下文信息.CFPNet[18]在金字塔模塊基礎上引入擴張卷積和全局平均池化擴大感受野,使其更有效地感知全局上下文信息.MSFNet[19]利用多尺度特征模塊,通過級聯融合不同層級的特征捕獲細節和語義特征.除了以上對特征提取網絡的研究之外,在代價聚合中,第一個端到端視差估計網絡DispNet[20]提出沿視差方向計算一維相關性的匹配代價計算方法.由于僅沿著一個維度計算相關性,損失了其余多個維度的有效信息,因此為了更好地利用多維度的上下文語義特征,Kendall 等[21]提出了GC-Net,通過采用3D 編解碼結構在三個維度上理解全局語義信息.受GC-Net啟發,眾多學者提出了多種變體來正則化代價體,建模匹配過程,例如,結合2D 和3D 卷積運算的多維聚合子網絡[22]、多尺度殘差3D 卷積模塊[23]、堆疊3D 沙漏結構[17,24]等.盡管上述方法在視差估計中已取得長足進步,但在網絡學習推理過程中,圖像特征和代價體特征的多層級多模塊交互利用仍存在不足,缺乏全局網絡信息的長距離依賴,導致網絡不具有敏銳的鑒別性能,準確估計視差依然極具挑戰性.
隨著注意力機制在多種研究任務,如語義分割[25]、自然語言處理[26]、超分辨率[27]等方面的廣泛應用,注意力機制在立體匹配網絡中引起了關注[28?30].其中,基于SE-Net[31]的擴張空間金字塔注意力模塊[28]雖然采用降維減小了計算成本,但是降維的同時導致特征通道與其權重之間的對應是間接的,降低了通道注意力的學習能力.MRDA-Net[30]只在2D 特征提取網絡末端和3D 編解碼網絡末端引入單一池化3D 注意力模塊來整合全局信息,無法做到多模塊信息交互,導致網絡獲取顯著信息不充分.綜上,由于2D 圖像特征為3D 張量,3D 代價體特征為四維張量,兩者之間的維度差異使常規注意力方法無法同時應用于特征提取與代價聚合這兩個子模塊中,注意力機制在立體匹配網絡中應用較少、方式單一,從而整個立體匹配網絡缺乏有效協同的注意力機制,對長距離上下文信息無法做到多模塊多層級關注.
考慮上述問題,本文在Gwc-Net[24]的基礎上提出一種多維注意力特征聚合立體匹配算法,通過對特征提取和代價聚合兩個子模塊設計不同的注意力方法,從多模塊多層級的角度去理解關注整個網絡傳輸過程中的上下文信息.設計2D 注意力殘差模塊,使用無降維自適應2D 通道注意力,逐像素提取和融合更全面有效的信息特征,學習局部跨通道間的相關性,自適應關注通道間的區別信息.提出3D注意力沙漏聚合模塊,利用3D 平均池化和3D最大池化構建3D 通道注意力,將其嵌入多個子編解碼塊的末端,重新校準來自不同模塊的多個代價體,整合多模塊輸出單元計算匹配代價.
所提算法主要包括2D 注意力殘差模塊,聯合代價體,3D 注意力沙漏聚合模塊.算法網絡結構如圖1 所示.2D 注意力殘差模塊對輸入左圖像Il和右圖像Ir進行特征提取,將提取的特征用于構建聯合代價體,采用3D 注意力沙漏聚合模塊計算匹配代價,最終通過視差回歸函數輸出預測視差.
為保留網絡的低級結構特征以提取左右圖像的細節信息,首先構建3 個卷積核尺寸為3×3 的濾波器獲取淺層特征,輸出特征圖尺寸為1/2H ×1/2W×32.然后,采用基本殘差塊conv1_x,conv2_x,conv3_x 和conv4_x 逐像素提取深層語義信息.其中,conv1_x,conv2_x,conv3_x 和conv4_x 包含的基本殘差單元個數分別為3,16,3 和3.每個殘差塊由兩個卷積核尺寸為3 × 3 的2D 卷積、批歸一化(Batch normalization,BN) 層和線性整流(Rectified linear unit,ReLU)激活層組成[17].級聯conv2_x,conv3_x 和conv4_x,融合低級結構信息和高級語義信息,構建尺寸為1/4H ×1/4W ×320的特征表示.該模塊共53 層,輸出左特征圖Fl和右特征圖Fr的尺寸均為 1/4H ×1/4W ×320,具體參數設置如表1 所示.

表1 2D 注意力殘差單元和聯合代價體的參數設置(D 表示最大視差,默認步長為1)Table 1 Parameter setting of the 2D attention residual unit and combined cost volume (D represents the maximum disparity.The default stride is 1)
PSMNet[17]在特征提取過程中只采用單路徑卷積方式,沒有對提取的特征進一步整合和交互,缺乏信息之間的長距離依賴.為自適應地增強特征表示,在殘差塊中引入通道注意力,強調重要特征并抑制不必要特征.這種機制對每一通道賦予從0 到1 的不同權值,代表各個通道的重要程度,使得網絡可以區別不同對象的特征圖.在之前的工作中,通道注意力大多采用SE-Net,通過兩次全連接層縮放所有特征圖的通道維度.然而,縮放特征通道數量雖然在整合信息過程中大大減小了計算量,但是降維的同時導致特征通道與其權重之間的對應是間接的,降低了通道注意力的學習能力.
因此在SE-Net[31]的基礎上,設計無降維的注意力,去除縮放通道[32].鑒于無降維會增加計算復雜度,且通道特征具有一定的局部周期性,本文構造無降維局部跨通道注意力,在無降維的基礎上,通過局部約束計算通道之間的依賴關系,并將其注意力嵌入每個殘差塊.參照文獻[30],通道注意力是針對2D 圖像特征的長和寬進行的2D 卷積濾波操作,因此命名為2D 注意力.2D 注意力殘差單元結構如圖2 所示.

圖2 2D 注意力殘差單元結構圖Fig.2 2D attention residual unit architecture
設2D 注意力輸入特征圖為H∈RH×W×C,在不降低通道維數的情況下,執行全局平均池化和卷積核尺寸為 1×1×k的一維(One-dimensional,1D)卷積.其中卷積核大小為k的1D 卷積用來計算每個通道與其k個鄰域間的相互作用,k表示局部跨通道間的覆蓋范圍,即有多少鄰域參與一個通道的注意力預測.k的大小可以通過一個與特征圖通道個數C相關的函數自適應確定.為進一步降低模型復雜度,所有通道共享相同的權值,該過程通過快速的1D 卷積實現.上述過程可表述為

式中,zavg是經2D 全局平均池化生成的特征圖,zavg∈R1×1×C;f1D是卷積核尺寸為 1×1×k的1D卷積;s表示使用1D 卷積為各通道權重賦值后的張量,s∈R1×1×C;φ表示k和C之間的映射關系;|p|odd表示p的相鄰最近奇數.
將具有不同通道權重的特征張量通過sigmoid激活函數歸一化處理,并與輸入特征圖的通道對應乘積,實現對特征圖自適應地重新校準

式中,σ表示sigmoid 激活函數;H? 表示2D 注意力的輸出特征圖,∈RH×W×C.
代價計算通常是計算1D 相似性或者通過移位級聯構建代價體,前者損耗信息多,后者計算成本高.因此,構建聯合代價體Fcom,由分組關聯代價體分量Fgc和降維級聯代價體分量Fcat構成,其中Fgc和Fcat分別提供一維相似性度量和豐富的空間語義信息.聯合代價體結構如圖3 所示.首先,將包含320 個通道的左特征圖Fl和右特征圖Fr沿特征維度等分為n組,即每個特征組有 320/n個通道.根據Gwc-Net[24]表明網絡的性能隨著組數的增加而增加,且考慮到內存使用量和計算成本,故設置為n40.

圖3 聯合代價體結構圖Fig.3 Combined cost volume architecture

式中,〈·,·〉表示點積運算;和分別表示第i組的左特征圖和右特征圖.
針對代價體相比圖像特征具有更多維度這一屬性,對提取的左右特征圖降維以減少內存占用.分別對輸出尺寸均為 1/4H ×1/4W ×320 的左特征圖Fl和右特征圖Fr依次執行卷積核尺寸為3×3 和1×1 的2D 卷積操作,得到具有12 個特征維度的左特征圖和右特征圖進而級聯獲得降維級聯代價體分量,其通道維度為24.

式中,{·,·} 表示級聯操作.
最后,將Fgc和Fcat沿著通道維度堆疊形成尺寸為 1/4D×1/4H ×1/4W ×64的Fcom.聯合代價體的參數設置如表1 所示.
堆疊3D 沙漏模塊與Gwc-Net[24]相同,包含1個預處理結構和3 個3D 注意力沙漏結構,以捕獲不同尺度的上下文信息.3D 注意力沙漏聚合模塊結構如圖4 所示.其中,預處理結構由4 個卷積核為3×3×3 的3D 卷積層組成用于提取低級特征,并為最終視差預測提供細節信息,作為視差圖的幾何約束.對于沙漏結構,在編碼部分執行4 次卷積核為3×3×3 的3D 卷積,在每一個步長為1 的3D 卷積層后緊接一個步長為2 的3D 卷積層進行下采樣操作,降低特征圖分辨率的同時將通道數翻倍.由于編碼部分共兩次下采樣,在解碼部分相應執行兩次上采樣即兩次卷積核為3×3×3 的3D 反卷積操作以恢復分辨率,同時特征通道數減半,并將第2個反卷積層的輸出與編碼器中同分辨率的特征級聯.此外,使用卷積核為1×1×1 的3D 卷積將預處理結構和沙漏結構直連,減少網絡計算參數.網絡包括Output0,Output1,Output2 和Output3 共4 個輸出單元,每一個輸出單元執行兩次卷積核為3×3×3 的3D 卷積,并應用三線性插值恢復與輸入圖像大小相同的分辨率H ×W ×D.

圖4 3D 注意力沙漏聚合模塊結構圖Fig.4 3D attention hourglass aggregation module architecture
以往基于CNN 的代價聚合算法[17,24]并未對代價體的通道信息進行多模塊多層級關注,無法有效利用和整合傳輸信息中的有效特征,導致網絡缺乏選擇性鑒別信息特征和關注顯著特征的能力.此外,代價聚合與特征提取中的特征維度存在差異,使用特征提取模塊中的無降維注意力增大代價體聚合的計算成本.因此,我們針對代價體特征的屬性,擴展通道注意力機制,在堆疊3D 沙漏結構[24]的基礎上,對3D 代價體特征的長、寬和深度共3 個維度進行3D 卷積濾波,計算不同通道之間的相互依賴性.為了區分特征提取模塊中的2D 注意力,我們命名為3D 注意力.3D 注意力沙漏單元結構如圖5 所示,沿著通道維度推斷3D 注意力特征圖,與輸入代價體相乘,細化代價體特征.

圖5 3D 注意力沙漏單元結構圖Fig.5 3D attention hourglass unit architecture
由于3D 卷積濾波器具有感受局部視野的特性,難以有效利用局部區域以外的上下文信息,因此采用3D 全局平均池化整合全局空間信息.與文獻[30]不同,本文不僅使用3D 全局平均池化,而且使用3D 最大池化編碼特征圖,通過兩種池化方式進一步區別對象的顯著特征.設3D 注意力單元輸入代價體為X∈RD×W×H×C,首先在同一層級分別執行3D 平均池化和3D 最大池化獲得兩個尺寸為D×1×1×C的代價體特征圖.其次,相比2D圖像特征對應的3D 張量,代價體為四維張量,故為了減少參數數量,降低計算負擔,采用卷積核尺寸為1×1×1 的3D 卷積來整合所有通道間的信息,壓縮特征維度為C/16,再次執行同卷積核尺寸的3D卷積,將特征維度恢復至C.上述過程可表示為

所提算法的輸出分別為Output0,Output1,Output2 和Output3,對應的損失為Loss0,Loss1,Loss2 和Loss3.在訓練階段,總損失為4 個損失的加權總和.在測試階段,最終輸出為Output3,損失為Loss3.視差估計采用GC-Net[17]提出的softargmin 方法,將每個像素i的視差值與相應的概率pi乘積求和獲得預測視差

式中,Dmax表示特征圖的最大視差值.
最終的損失函數定義為

本文在公開數據集SceneFlow[20],KITTI2015[33]和KITTI2012[34]上進行實驗分析,并使用EPE(End-point-error)和D1 等評價指標對所提算法進行評估.其中,EPE 表示估計的視差值與真實值之間的平均歐氏距離;D1 表示以左圖為參考圖像預測的視差錯誤像素百分比.
所提算法應用PyTorch 深度學習框架實現,在單個Nvidia 2080Ti GPU 上進行訓練和測試,且設置批次大小為2.采用Adam 優化器且設置β10.9,β20.999.在訓練階段,隨機將圖像大小裁剪為256×512.使用的數據集如下:
1) SceneFlow 數據集.是一個具有室內和室外場景的大型綜合數據集,包含35 454 幅訓練圖像對和4 370 幅測試圖像對.本文使用SceneFlow 數據集的子數據集Flyingthings3D,其中,訓練圖像對提供精細且密集的真值圖.圖像的分辨率為540×960,最大視差為192.使用完整的數據集從頭訓練該模型,以學習率0.001 訓練10 個周期.訓練過程大約花費56 小時,訓練的模型直接用于測試.
2) KITTI2015 數據集.是一個室外駕駛真實場景數據集.該數據集較小,包含200 幅訓練圖像對和200 幅測試圖像對.其中,訓練圖像對提供LiDAR 獲得的稀疏真值視差圖,測試圖像對不提供真值視差圖.圖像的分辨率為375×1 242 像素,最大視差為128.整個訓練圖像對被隨機分成訓練集(80%)和驗證集(20%).使用SceneFlow 數據集預訓練的模型在KITTI2015 上微調300 個周期,設置恒定學習率為 1×10?4,微調過程大約花費20 小時.
3) KITTI2012 數據集.與KITTI2015 類似,KITTI2012 數據集只具有室外駕駛場景,包含194 幅訓練圖像對和195 幅測試圖像對,提供訓練圖像對的稀疏真值視差圖.其微調過程與KITTI2015 數據集一致.
本文分別在KITTI2012 和KITTI2015 數據集上對立體匹配網絡進行消融實驗,定量評估2D 注意力殘差模塊、3D 注意力沙漏聚合模塊、聯合代價體以及損失函數權重對立體匹配性能的影響.
1)驗證2D 注意力殘差模塊的有效性本文在不含3D 注意力單元的情況下,比較4種2D 注意力的變體:無2D 注意力的殘差網絡,具有最大池化層的降維2D 注意力,具有平均池化層的降維2D 注意力[31]和無降維自適應2D 注意力.表2 給出了在KITTI2015 數據集上2D 注意力殘差模塊在不同設置下的性能評估結果,其中“>[n] px”表示EPE 大于n時的像素百分比,“ ? ”表示模塊使用該結構.由表2 可知,未添加2D 注意力時EPE 值僅為0.631,錯誤率明顯高于其他3 種方法,無降維自適應2D 注意力EPE 值可達0.615,性能優于分別具有最大池化層和平均池化層的降維2D注意力.實驗結果表明,所提出的2D 注意力殘差模塊性能最優,通過保持維度一致和局部跨通道間的信息交互,有效提高了網絡注意力,有助于立體匹配任務降低預測視差誤差.

表2 2D 注意力殘差模塊在不同設置下的性能評估Table 2 Performance evaluation of 2D attention residual module with different settings
2)驗證3D 注意力沙漏聚合模塊的有效性
本文在2D 注意力殘差模塊的基礎上,比較4種3D 注意力的變體:無3D 注意力的原始沙漏聚合模塊,具有3D 最大池化層的3D 注意力,具有3D平均池化層的3D 注意力和同時使用兩種池化方式的3D 注意力.表3 給出了在KITTI2012 和KITTI2015 數據集上3D 注意力沙漏聚合模塊在不同設置下的性能評估.由表3 可知,加入3D 注意力后,算法的D1-all 和EPE 值都明顯降低,證明具有3D注意力的沙漏聚合模塊優于原始沙漏聚合模塊.具有兩種池化方式的3D 注意力沙漏聚合模塊在KITTI2012 和KITTI2015 數據集上EPE 值分別達到0.654 和0.589,其性能明顯優于僅含單一池化的3D 注意力沙漏聚合模塊.實驗結果表明,本文不能忽略3D 最大池化的重要性,其與3D 平均池化一樣有意義,將兩種池化方式結合可幫助立體匹配任務更多樣地獲取上下文信息.

表3 聯合代價體和3D 注意力沙漏聚合模塊在不同設置下的性能評估Table 3 Evaluation of 3D attention hourglass aggregation module and combined cost volume with different settings
3)驗證聯合代價體的有效性
此外,鑒于聯合代價體是特征提取與代價聚合之間的樞紐,本文將聯合代價體與PSMNet[17]的級聯代價體進行對比,表3 給出了在KITTI2012 和KITTI2015 數據集上聯合代價體在不同設置下的性能評估.從表中可以看出,聯合代價體相比PSMNet[17]的級聯代價體,增加了相關代價體分量的引導,對于多維注意力聚合特征的性能產生了積極的作用,整個網絡結構相輔相成.
4)驗證不同損失函數權重對網絡的影響
由于3D 聚合網絡有4 個輸出單元,因此損失函數權重對網絡的影響也至關重要.本文將損失權重以λ1,λ2,λ3,λ4的順序設置,如圖6 所示.當λ10.5,λ20.5,λ30.7,λ41.0時,越接近網絡末端的損失計算對網絡訓練越重要,同時網絡其余子編碼塊的輸出也對網絡的性能起著輔助訓練的作用,使整個網絡從前到后都能得到有效的誤差回傳,多個子編碼塊的輸出保證了網絡的均衡訓練.

圖6 損失函數權重對網絡的影響Fig.6 The influence of the weight of loss function on network performance
為進一步驗證算法有效性,在SceneFlow 數據集上將所提方法與其他方法進行比較,包括Gwc-Net[24],PSMNet[17],MCA-Net[29],CRL[35]和GCNet[21].定量評估結果如表4 所示,其中px 表示像素.所提算法在SceneFlow 數據集上的EPE 值均低于其他5 種算法,其中,與Gwc-Net 相比EPE 降低了0.055,與PSMNet 相比EPE 降低了0.28.此外,圖7 顯示了在SceneFlow 數據集上的視差評估結果,其中圖7(c) Gwc-Net 表示不包含多維注意力的算法.由圖7 中標注的小方框可看出,具有多維注意力的算法能更有效地提取不同對象的顯著變化特征.因此所提算法能夠為主體對象的顯著特征分配更高的響應值,提高網絡的學習推理能力,實現比未添加注意力時更精細的視差圖.

圖7 SceneFlow 視差估計結果Fig.7 Results of disparity estimation on SceneFlow dataset

表4 不同算法在SceneFlow 數據集上的性能評估Table 4 Performance evaluation of different methods on the SceneFlow dataset
表5 反映了在KITTI2015 數據集上本文算法與DispNetC[20],MC-CNN-art[36],CRL[35],PDSNet[37],GC-Net[21]和PSMNet[17]的定量評估結果.其中,“All”表示所有區域像素,“Noc”表示僅非遮擋區域的像素.本文分別在背景區域(bg)、前景區域(fg)和所有區域內(all)計算評價指標D1 值.由表5 可知,所提算法在所有區域和非遮擋區域的D1-bg、D1-fg 和D1-all 值都低于其他方法.特別是在非遮擋部分,相比于PSMNet[17],前景區域D1-fg值減小了0.23,遠遠大于背景區域D1-bg 的減小值0.07,而且,所有區域D1-all 值也減小了0.08,說明所提算法對于非遮擋區域顯著對象的預測精度具有明顯提升,在整體視差預測方面具有優越的性能.圖8 顯示了在KITTI2015 數據集上視差估計結果.由圖可知,在處理重復圖案區域中(如柵欄、道路)匹配效果較好,而且保留了對象的顯著信息(如車輛、電線桿和樹干的邊緣區域).大的弱紋理區域(如天空)和被遮擋區域中由于沒有可用于正確匹配的特征,將存在很多噪聲.實驗結果表明,多維注意力通過聚集豐富的匹配信息可有效鑒別不同對象的顯著特征,提取更全面有效的特征,降低匹配誤差.

圖8 KITTI2015 視差估計結果Fig.8 Results of disparity estimation on KITTI2015 dataset

表5 不同算法在KITTI2015 上的性能評估 (%)Table 5 Performance evaluation of different methods on the KITTI2015 dataset (%)
在KITTI2012 數據集上的性能評估與KITTI2015 類似.表6 反映了在KITTI2012 數據集上本文算法與DispNetC[20]、MC-CNN-acrt[36]、GCNet[21]、SegStereo[11]和PSMNet[17]的定量評估結果.由表6 可知,本文算法與其他幾種算法相比,在無遮擋區域和所有區域中,大于3 像素和大于5 像素的誤差值均最低,其中,無遮擋區域分別為1.46 和0.81;所有區域分別為1.73 和0.90,再次證明基于多維注意力特征聚合的立體匹配網絡在無遮擋區域和所有區域中視差預測的有效性和可行性.圖9 顯示了在KITTI2012 數據集上視差估計結果,由圖中標注的方框可看出本文算法在顯著對象(如圍欄,車輛)方面視差預測結果較好,且不受光線變化的影響.此外,從圖9 第1 行最后一列的黃框可以看出,尤其是對于墻壁這類很顯著平滑的對象,雖然KITTI2012 數據集中真值視差圖的稀疏性導致訓練的網絡模型對于樹木的視差預測精度不高,但相比Gwc-Net,本文算法預測的墻壁沒有和樹木混淆,符合墻壁的屬性.實驗結果表明,本文算法具有良好的泛化性,多維注意力的引入提高了網絡的學習能力,可有效鑒別無遮擋對象的顯著特征,提高視差預測精度.

圖9 KITTI2012 視差估計結果Fig.9 Results of disparity estimation on KITTI2012 dataset

表6 不同算法在KITTI2012 上的性能評估 (%)Table 6 Performance evaluation of different methods on the KITTI2012 dataset (%)
本文提出了一種多維注意力特征聚合立體匹配算法,以多模塊及多層級的嵌入方式協同兩種不同維度的注意力單元.2D 注意力殘差模塊在原始殘差網絡基礎上引入自適應無降維2D 通道注意力,理解局部跨通道間的相互依賴性,保留顯著細節特征,為代價聚合過程提供了全面有效的相似性度量.3D 注意力沙漏聚合模塊在多個沙漏結構的基礎上嵌入雙重池化3D 注意力單元,捕獲多尺度上下文信息,有效提高了網絡的聚合能力.2D 注意力和3D注意力之間相輔相成,對整個網絡的權重修正,誤差回傳都起到了積極的作用.在3 個公開數據集上的實驗結果表明,所提算法不僅具有較高的預測精度,而且可以敏銳地鑒別推理無遮擋區域中主體對象的顯著性特性.