張浩東,宋嘉菲,張廣慧
1.中國科學院 上海微系統與信息技術研究所 仿生視覺系統實驗室,上海 200050
2.中國科學院大學,北京 100049
3.上海科技大學,上海 201210
高精度的深度估計是許多計算機視覺相關應用,如自動駕駛、三維立體建模、機器人導航等的關鍵。通過對雙目立體相機拍攝得到的兩個圖像進行立體匹配,計算參考圖像(Reference image)的稠密視差圖,是獲取深度的重要途徑之一。傳統立體匹配方法主要包含4 個步驟:計算兩幅圖像的像素級相似度作為匹配代價、對生成的代價體進行聚合以整合鄰域匹配代價、根據聚合后的代價體估計每個像素的視差、對輸出的視差圖進行優化,但人工設計的像素相似度計算方法及聚合等方法效果較差,使得視差估計的精度無法令人滿意。
近年來,隨著深度學習的飛速發展,越來越多的人采用卷積神經網絡(convolutional neural network,CNN)對立體匹配、邊緣感知任務進行建模[1-3],LeCun等[4]嘗試利用CNN 為傳統的立體匹配方法學習更好的匹配代價,設計了一個權值共享的特征提取網絡,后利用全連接層進行像素級相似性度量生成匹配代價。與傳統方法中的特征描述(如Census[5])相比,這一方法提高了特征描述子的穩健性,在精度上取得了一定的進步,但由于整體結構屬于利用CNN進行匹配代價計算和傳統方法的后續流程拼接,所需的計算量依舊較大。為了對立體匹配框架的各個部分進行聯合優化,Mayer 等[6]設計了DispNetC,將立體匹配通過端到端的有監督深度學習方式實現,借鑒FlowNet[7]中提出的相關性(correlation)方法計算像素級相似度并生成匹配代價,采用編碼-解碼(encoder-decoder)的結構回歸視差。同時還制作了合成數據集(SceneFlow),解決了真實場景數據集過少的問題。
Chang等[8]借鑒SPPNet[9]、ResNet[10]、PSPNet[11]的思想設計了空間金字塔池化(spatial pyramid pooling,SPP)特征提取結構,通過融合多個感受野的特征合并全局背景信息到提取的特征中,并引入了堆疊沙漏結構的三維卷積拓展代價體中局部信息的聚合區域。但對多感受野的簡單級聯使得匹配代價對不同感受野的注意力相同,未能根據特定位置采用不同感受野的特征;且在代價聚合過程中未對匹配代價進行篩選,使得一些困難位置的錯誤匹配代價向周邊鄰域傳播,降低了模型的收斂速度以及整體預測的精度。
Song 等[12]、Yang 等[13]分別結合邊緣、語義信息設計多任務網絡,將邊緣、語義特征嵌入常規特征中生成混合特征用于代價體編碼,從而進一步提高視差精度。此外,EdgeStereo[12]還設計了邊緣抑制的視差平滑損失用于改善輸出視差圖的局部平滑性。但邊緣、語義信息的引入提高了對數據集的要求,對子網絡的訓練提高了立體匹配任務對數據的額外標簽的依賴性。
針對上述現有問題,根據數據集的視差真值生成視差邊緣(不需要額外的人工標注)以作為邊緣提取模塊的監督信號,并提出了一種邊緣引導的立體匹配算法,主要貢獻點如下:(1)設計了邊緣引導特征體加權模塊,對體現紋理信息的淺層特征邊緣區域與描述語義信息的深層特征非邊緣區域予以更大的權重。(2)設計了邊緣抑制的代價聚合模塊,減少不可靠信息的傳播,以提高整體預測精度。(3)本文的方法在SceneFlow 數據集上將PSMNet[8](pyramid stereo matching network)的誤差降低了35.2%,將GwcNet[14](group-wise correlation stereo network)的誤差降低了14.3%。
本文整體網絡結構如圖1,包括邊緣提取(edge extraction)、特征提取(feature extraction)、構建代價體(cost volume construction)、代價聚合(cost aggregation)及視差估計(disparity prediction)五部分。
邊緣和特征提取將分別在1.1節、1.2節介紹。由于無法簡單構建左右特征體之間的聯系,立體匹配網絡構建代價體常采用級聯特征體的方式:對右圖特征體基于所有待定視差值在水平方向進行平移,將平移后的右圖特征體與左圖特征體在特征通道維度進行級聯,最后將所有級聯的特征體在待定視差維度級聯以生成代價體。代價聚合將在1.3 節介紹。對于視差估計,本文采用GC-Net[15]中提出的soft argmin方法,即
式中,d~ 為預測視差值,d為待選視差值,Dmax為最大待選視差值,σ為softmax 函數,cd為聚合后的匹配代價。網絡損失函數的設計將在1.4節介紹。
本文借鑒HED[16](holistically-nested edge dectection)的思想及PSMNet[8]中的SPP 特征提取層設計了視差邊緣提取子模塊。該模塊的輸入是單幅圖像,輸出為邊緣圖(edge map),采用基于視差真值求解的邊緣圖作為監督信號。雖然與EdgeStereo[12]中使用的圖像的常規邊緣具有相似的提取思路,但不需要數據集提供常規邊緣真值,更便于只有視差真值的數據集,相較于多任務網絡更有利于訓練,同時使用的視差邊緣更適配立體匹配網絡。
視差邊緣提取子模塊結構如圖2,先對輸入圖像進行常規卷積,調整步長使得特征尺寸降為原圖的1/4,后對該特征體分別進行多個尺度的池化以豐富感受野,將各個池化后的特征體進行卷積局部整合后上采樣到初始特征體尺寸進行級聯,使得混合后的特征體具有不同尺度的特征,最后將混合的特征體卷積得到單通道的邊緣特征,經過Sigmoid回歸為視差邊緣圖,將其記作E,后續將用于1.3節和1.4節。
對于邊緣真值的獲取,與現有多任務立體匹配網絡[12-13]不同,本方法并不需要數據集具有邊緣標簽。為了更適配于立體匹配網絡,本方法將所用的邊緣定義為視差真值變化較大的區域(多分布于前景區域),可由視差真值梯度求解生成。
重復紋理和無紋理區域是立體匹配任務中較難處理的部分,由于常規的特征提取器對該區域和其他特征明顯且不重復區域在訓練階段的單位像素關注度相同,使得最終訓練得到的模型會因兩種區域在圖像中的占比而決定特征提取器對其中之一的偏向程度,無論最終對其中哪一種區域的整體關注度高都不利于提出更好的整體預測效果,因而提出了對以上不同區域靈活選用不同提取器的方法。
僅考慮本部分關注的難點區域:重復紋理區域和無紋理區域,小尺度的特征提取器感受野較小,無法描繪出錯誤匹配點與參考圖像中的目標點的差別,因而考慮擴張圖像的感受野生成大尺度的特征提取器,將較難處理部分的周邊區域引入特征提取器,進而使得錯誤匹配點與目標點具有差異更大的特征表述。
針對本文基準方法中空間金字塔池化模塊(SPP)在級聯多尺度特征時,忽略了不同位置應側重不同尺度特征的問題,提出了邊緣引導的空間金字塔池化(EGSPP,edge-guided-SPP)模塊。由1.1 節得到邊緣圖E為Sigmoid輸出,其值介于0~1之間,且多集中于0和1附近。本文將預測值在0 附近的像素點定義為非邊緣像素點(non-edge pixels),預測值在1 附近的像素點定義為邊緣像素點(edge pixels)。如圖3 所示,以單像素為例,特征由進入空間金字塔之前的淺層特征和經過空間多尺度池化卷積增大感受野后的深層大感受野特征級聯得到。針對不同位置側重不同尺度的特征體,對于視差邊緣處增強淺層特征,使得混合特征更注重圖像的低級紋理信息,同時保留弱化后的高級語義特征;對于非視差邊緣處增強深層大感受野特征,使得混合特征更注重圖像的高級語義信息,同時保留弱化后的低層紋理特征,即:
式中,Fhybrid為混合特征,Fshallow為低級紋理特征(淺層特征),Fdeep為高級語義特征(深層大感受野特征),E為邊緣圖(其值介于0~1 之間,越高表示是邊緣的概率越大),⊕為特征級聯。
鑒于上文提到代價體由特征體按待定視差值平移后并級聯而成,相較于特征體增加了待定視差維度,二維卷積無法對該高維向量進行處理,常用的方法是引入三維卷積,故代價聚合主體沿用基準方法PSMNet的三維卷積結構。
遮擋問題同樣是立體匹配任務較難處理的一點,由于目標圖中沒有真正的匹配點,對視差的估計僅能利用其周邊鄰域信息進行整合預測。但一般網絡結構不會對這一區域進行額外處理,而是將遮擋區域與其他區域采取相同方式進行處理。鑒于遮擋區域的匹配代價置信度并不高,代價聚合階段會將每個像素點的匹配代價向其周圍鄰域傳遞,如果仍完全沿用基準方法,會使其周邊區域受到不可靠信息的影響,削弱其他區域的預測能力。
經分析,物體的遮擋區域均出現于物體邊緣處,且占比較大。同時經觀察發現,現階段模型預測誤差較大的區域多出現于物體的邊緣處,因而可通過提高非邊緣處的匹配代價的方法來抑制邊緣處不可靠信息的傳播,由此,提出了邊緣引導代價聚合模塊,增加非邊緣區域的可靠信息在代價聚合時的權重,使邊緣區域在聚合階段更大程度地獲取來自非邊緣區域的匹配代價,從而提高整體預測精度。
如圖4,本文采用堆疊沙漏(stacked hourglass)結構的三維卷積[8],并在其中加入了邊緣引導(公式(3)),提出了邊緣引導的堆疊沙漏(EG stacked hourglass)結構。式中,C為代價體,C^ 為邊緣抑制后的代價體,E為邊緣圖(其值介于0~1之間,越高表示是邊緣的概率越大)。
本文采用類平衡交叉熵損失函數[17]來訓練邊緣分支,由于邊緣區域與非邊緣區域所占面積不均衡,計算損失函數時需對兩部分予以不同權重:
本文采用smooth L1損失函數來訓練視差分支,與L2損失相比,smooth L1損失具有魯棒性和對異常值的低敏感性。smooth L1定義如下:
其中,Ldisp為視差損失函數,Ledge為邊緣損失函數,d為視差真值,d~ 為預測視差值,e為邊緣判定值,e~ 為預測邊緣值,β為邊緣損失函數權重。
將所提的方法在兩個數據集中進行評估:Scene-Flow[6]和KITTI 2015[18]。
SceneFlow:一個大規模的合成數據集,包括35 454組訓練圖片以及4 370 組測試圖片,分辨率為540×960像素,且提供了稠密的視差圖作為真值。該數據集采用端點誤差(EPE,end-point-error)作為評價指標,即預測視差圖與實際視差圖的平均絕對誤差。
KITTI 2015:記錄不同天氣條件下的真實場景,包括200 組訓練圖片以及200 組測試圖片,分辨率為1 240×376 像素,視差真值為由LIDAR 獲取的稀疏點。該數據集采用3 像素誤差(3PE,3-pixel-error)作為評價指標,即誤差值大于3像素的點所占比例。
本文用于訓練以及測試的GPU顯卡為1塊NVIDIA Quadro P5000,實驗環境為Ubuntu 18.04,采用的深度學習框架為pytorch 1.4.0,批量大小固定為4,采用Adam優化器,其參數設定為β1=0.9,β2=0.99,最大待選視差值Dmax設置為192。
對于SceneFlow 數據集,由于其已劃分訓練集和測試集,可不做數據劃分處理,本文選用與基準方法一致的初始學習率用以訓練:初始學習率設定為0.001,10輪后將學習率降為0.000 3,40輪后結束訓練。
對于KITTI 2015數據集,鑒于其訓練數據過少,本文采取與基準方法PSMNet 相同的訓練策略,即對在SceneFlow數據集上預訓練后得到的權重在該數據集上微調。同樣地,本文采用與基準方法一致的參數微調:初始學習率為0.000 3,對其訓練600輪,在第300、500輪時分別將學習率降為0.000 1和0.000 03。
本文方法與其他有監督深度學習方法的立體匹配算法[4,6,8,15]進行比較,其中MC-CNN[4]是引入深度學習方法的經典立體匹配框架,GC-Net[15]、DispNetC[6]、PSMNet[8]是引入三維卷積且具有代表性的立體匹配算法。在SceneFlow 數據集中的量化誤差指標比較如表1 所示,可見本文方法將PSMNet[8]的誤差降低了35.2%,且誤差低于其他方法。

表1 SceneFlow測試結果Table 1 Results on SceneFlow
本文方法與其他有監督深度學習方法的立體匹配算法在KITTI 2015數據集中的量化誤差指標比較如表2 所示,其中根據是否為遮擋區域可分為All 和Noc,其中All 表示全圖區域,Noc 表示非遮擋區域。根據其為前背景可分為D1-bg、D1-fg 和D1-all,其中D1-bg 表示背景區域,D1-fg 表示前景區域,D1-all 表示全圖區域。可見本方法對視差邊緣豐富的前景物體的預測誤差更小,在背景區域也取得了與基準方法相當的效果,整體上將PSMNet的誤差降低了2.2%。

表2 KITTI 2015測試結果Table 2 Results on KITTI 2015
圖5為KITTI 2015測試集中的可視化結果,可見本方法能較好地處理一些前后區分度不高的區域,如路牌、欄桿等。
本文在SceneFlow 數據集中進行以下兩個模塊的消融實驗:EGSPP、EG stacked hourglass。
表3為所提兩個模塊在SceneFlow數據集上的定量分析。當只采用EGSPP模塊時,端點誤差降低了30.3%;當只采用EG stacked hourglass 模塊時,端點誤差降低了28.4%;當同時采用提出的這兩個改進模塊時,端點誤差實現了35.2%的下降,且所用時間與基準方法相近。以上數據驗證了本文所提兩個改進模塊的有效性。

表3 SceneFlow消融實驗Table 3 Ablation study on SceneFlow
圖6定性分析了所提的兩個模塊在SceneFlow數據集上的效果。對比第3列(PSMNet)和第4列(PSMNet+EGSPP)發現,EGSPP 模塊對低級紋理(如邊緣處)和高級語義(如前景物體)均有一定改善;對比第4 列(PSMNet+EGSPP)和第5列(PSMNet+EGSPP+EG stacked hourglass)可以發現,EG stacked hourglass 模塊通過抑制邊緣不可靠信息的傳播確實改善了邊緣處的視差預測效果。整體上,與基準方法相比,本文所提方法在一些精細結構處能更好地區分前后區域:如圖中前后車輪的輻條位置,本方法更好地描繪了精細結構,這符合人們對所提模塊的預期。
為驗證本方法在不同模型下的通用性,將邊緣提取模塊、邊緣引導特征體加權模塊以及邊緣抑制的代價聚合模塊加入GwcNet[14]中,其在SceneFlow 數據集以及KITTI 2015數據集中的結果見表4。

表4 SceneFlow,KITTI 2015實驗結果Table 4 Results on SceneFlow,KITTI 2015
加入邊緣引導之后,E-GwcNet 誤差較GwcNet 在SceneFlow 上降低了14.3%,在KITTI 2015 的非遮擋區域上降低了1%,更充分地證明了本文所提方法對于不同算法的適用性。
為進一步驗證本方法在不同場景下的泛化性,將模型用于實際場景并檢測其性能,鑒于實際場景的視差真值難于獲取,故僅將在KITTI 2015 數據集中訓練得到的權重用于實際場景進行測試,對基準方法PSMNet和所提修改方法E-PSMNet的測試結果進行定性分析。
圖7、圖8 分別為真實場景下物體內部及邊緣區域的測試結果圖,可見模型能更好地調整預測的視差,使物體內部減少錯誤的視差突變的出現,同時能更好地描繪物體邊緣處視差輪廓,使其更貼近于參考圖像,充分證明了本文所提方法的實用性。
提出了一種邊緣信息引導的立體匹配方法:利用邊緣信息分配不用尺度特征體權重,改進立體匹配的特征表示;弱化邊緣處匹配代價向周圍鄰域的傳播,提升立體匹配的代價聚合效果。在SceneFlow、KITTI 2015兩個數據集上對本方法進行了驗證,與國內外現有方法相比,本文的方法實現了更低的匹配誤差,在精度上取得了優異性能。相較于基準方法,本文方法在精細結構處得到了更精準的匹配,整體精度提升顯著,且所用時間的增加可忽略不計。但現階段在KITTI 2015數據集上對結果的提升明顯低于SceneFlow 數據集,經分析,主要原因在于KITTI 2015數據集視差真值的采集方式為雷達掃描,因而視差真值為散點圖,使得網絡無法較好地訓練視差邊緣,未來可考慮改進網絡對稀疏真值的適用性,從而提升預測效果。