王道累,肖佳威,李建康,朱 瑞
上海電力大學 能源與機械工程學院,上海 200090
從RGB圖像中估算深度是計算機視覺、圖形和機器學習領域一直在探索的問題之一[1],其關鍵在于找到空間像素對應點,然后通過三角剖分實現深度恢復,通常稱為視差估計或立體匹配。視差是指左右圖像中同物體在水平位置的差異[2],即在左圖中位置(x,y)的物體與其相對的右圖中的位置(x-d,y)。當物體的視差d已知時,可用公式z=fB/d計算它的深度:其中f是相機的焦距,B是相機中心之間的距離。在給定相機在不同水平位置拍攝的兩幅圖像,將其校正后,可以計算出左側圖像中每個像素的差值[3]。雙目視差估計利用左右視圖之間的交叉參考的優勢,獲得場景中物體的深度信息,在幾何信息推斷方面表現出強的性能和魯棒性,廣泛應用于自動駕駛[4]、機器人定位[5]、醫療診斷[6]和三維場景重構[7]等領域。典型的立體匹配算法包括四個步驟:匹配代價計算、代價聚合、視差優化、視差后處理[8]。它們可以大致分為全局方法和局部方法,全局方法通常通過最小化包含數據和平滑項的全局目標函數來解決優化問題[9],而局部方法只考慮鄰域信息[10]。
盡管傳統視差估計方法已取得巨大進展,針對無紋理區域、重復圖案和薄結構等問題[11],仍難以解決。近年來,深度學習發展迅速,表現出較強的圖像理解能力[12]。為了更好地估計立體圖像對中的視差,卷積神經網絡被應用在雙目視差估計中。深度學習模型可通過一個卷積神經網絡[13](convolutional neural networks,CNN)將匹配代價計算、代價聚合、視差優化集合起來,并取得完整且稠密的視差圖。
非端到端的視差估計方法模仿了傳統視差估計方法,將其中的一部分或者多個部分通過CNN來代替。MC-CNN[14]最先提出使用卷積神經網絡學習小圖像塊的相似性度量來計算匹配代價,通過構建一個包含相似和不相似補丁塊的二元分類數據集進行訓練,在當時的KITTI數據集和Mddlebury數據集上優于其他方法,有力地證明了CNN提取特征優于手工提取特征。盡管具有良好的精度,但MC-CNN具有計算消耗較大、計算速度較慢的問題。Shaked等[15]提出了一種新的多級加權殘差路徑高速網絡來計算匹配代價,使用支持圖像塊多級比較的混合損失進行訓練。Chen等[16]通過深度嵌入模型來利用外觀數據來學習相應圖像塊之間的視覺相似性關系,并將強度值顯示映射到嵌入特征空間以測量像素的不相似性。這些方法并不能直接得到良好的視差圖,通常需要初始代價通過非學習的后處理函數進行優化,包括交叉代價聚合[17]、亞像素增強[18]、左右一致性檢測和濾波等操作[19]。
傳統方法中除匹配代價以外的部分也可由神經網絡來計算,SGM-Net[20]設計了一種使用半全局匹配預測高精度稠密視差圖的神經網絡。它是一種基于學習懲罰估計的方法,將一個小的圖像塊及其位置輸入到帶有半全局匹配的網絡中,預測3D結構對象的懲罰,引入一種新的損失函數,能使用稀疏注釋的視差圖。因其半全局匹配懲罰代價標簽獲取繁瑣,其訓練耗時耗力。
視差后處理的過程也可以在神經網絡中進行,并取得良好的效果。Gidaris和Komodakis[21]通過訓練一個深度神經網絡,將輸出標簽和輸入圖像的初始估計作為輸入,預測標簽的新的精確估計。它將標簽改進分為三個步驟:(1)檢測不正確的初始標簽估計;(2)用新標簽替代不正確標簽;(3)預測剩余標簽來細化更新的標簽。這一過程雖然能提升一定精度,但需要消耗巨大計算資源。
非端到端的視差估計方法相對于傳統方法精度方面有巨大提升,但是其需要消耗巨大的計算資源,預測一張圖片的時間較長。而且視差估計過程中感受野有限,缺乏上下文信息,仍然無法避免視差后處理,正逐漸被端到端的視差估計方法所取代。
端到端的視差估計方法將視差估計的所有步驟集成到一個網絡中去,極大地提高了匹配精度和速度,被廣泛地應用于機器人導航[22]、增強現實[23]和虛擬現實[24]。PSMNet(pyramid stereo matching network)[25]提出了一種端到端的金字塔視差估計網絡,設計了一種空間金字塔池化模塊(spatial pyramid pooling,SPP)用于增加感受野,將不同規模和位置的上下文信息利用起來,形成代價體;設計了堆疊沙漏3D卷積神經網絡(stacked hourglass 3D CNN),結合中間監督,并拓展代價體中區域上下文支持。為了減少人類在神經網絡設計上的精力,LEAStereo(hierarchical neural architecture search for deep stereo matching)[26]提出一種將人類特定任務知識整合到神經架構搜索(neural architecture search,NAS)框架中,從端到端分層NAS架構來進行深度立體匹配,利用體積立體匹配管道,允許網絡自動選擇最優結構的特征網和匹配網。
雖然上述的網絡能夠很好地學習圖像的全局上下文信息,能夠對圖像對進行高精度的雙目視差估計,但是在訓練和使用的過程中計算的參數量過大,需要占用巨大的GPU(graphics processing unit)資源[27]。在實際應用過程中,人們更加傾向于使用更加輕量化的模型,在保持一定精度的基礎上取得良好的視差估計效果[28]。GA-Net(guided aggregation net)[29]提出了半全局聚合層(semi-global aggregation layer,SGA)和局部引導聚合層(local guided aggregation layer,LGA),盡可能少地使用3D卷積,計算成本和內存占用得到極大減少。SGA層實現了半全局匹配(semi-global matching,SGM)的近似可微分,使匹配代價在全圖的不同方向聚合,而LGA層遵循傳統的代價濾波策略,被用來處理細結構和邊緣對象。為了顯著加快當前最先進的視差估計算法的運行速度,以實現實時推理,DeepPruner(learning efficient stereo matching via differentiable patchmatch)[30]設計了一個可微分的PatchMatch模塊,在不評估所有代價體的情況下去除大部分差異,得到稀疏表示的代價體,減少計算量和內存。BGNet(bilateral grid learning networks)[31]設計了一種基于深度學習的雙邊網絡的新型保邊上采樣模塊,通過切片操作從低分辨率代價體中有效地獲得高分辨率代價體進行視差估計,許多現有的網絡都可以加入此模塊,并有相當的精度,如GC-Net(geometry and context network)[32]、PSMNet[25]和GA-Net[29]等,并可以加速4~29倍。
端到端的視差估計方法在生成精確的幾何信息方面有廣泛的前景和魯棒性,使用大規模的數據集對深度學習模型進行訓練,能夠使其在許多立體視覺任務中都表現出良好的性能,相比于傳統的視差估計方法取得了顯著的提升,成為現階段研究的熱點之一[33]。然而,端到端的視差估計方法訓練過程緩慢,需要消耗巨大的計算資源,其使用的立體數據集需要包含高質量的曲面法線和真實視差圖,高質量數據集制作費時費力。
高精度的數據集對網絡訓練的好壞具有重要的作用,但是帶有真實視差圖的高精度數據集制作較為昂貴。一些不具有真實視差圖的數據集獲取較為簡單,為此一些無監督視差估計方法被提出[34]。無監督的方法以無監督的方式驅動網絡,依賴于最小光度扭曲誤差。近年來,基于空間變換和視圖合成的無監督學習方法被提出,并取得了不錯的精度。
DeepStereo[35]提出一種新的深度學習架構,對大量位姿圖像集進行訓練,直接從像素中合成新的視圖。深度回歸網絡直接回歸到給定輸入圖像的像素顏色輸出,對傳統方法的故障模式也有用,能夠在寬基線分隔的視圖之間進行插值。Deep3D[36]設計了一個深度神經網絡,通過最小像素級重建損失,將左視圖作為輸入,內部估計一個軟概率視差圖,然后渲染出一個新的右圖像,直接從一個視圖預測另一個視圖。這些視圖合成網絡為無監督視差估計提供了強大的支持。
圖像損失函數在無監督的視差估計中也有使用,Garg等[37]提出了第一個利用圖像重建損失進行單視圖深度預測的深度卷積神經網絡,通過類似于自動編解碼器的方式訓練網絡。為此,其使用預測的深度和已知的視點間位移顯式生成目標圖像的反向扭曲,以重建源圖像,重建中的光度誤差是編碼器的重建損失。該網絡雖然與單視圖深度估計的最佳監督學習方法相當,但是單個圖像整體尺度模糊,單目視差估計不僅在絕對意義上準確,而且在細節恢復上效果也不好。
單獨解決圖像重建問題會導致深度圖像質量差,Godard等[38]提出一種新的訓練損失方法,加強了左右圖像差異之間的一致性,其還充分利用了極線幾何優勢。這一致性約束極大的提高了網絡性能,這項工作標志基于最小化光度扭曲誤差的無監督視差估計方法的成熟。Flow2Stereo[39]提出了一種無監督模型,聯合學習光流和視差估計,將視差估計當做光流估計的特殊情況,利用立體視覺的三維幾何信息指導同一網絡來估計光流與視差。
無監督的視差估計方法解決了缺乏真實視差圖難以對神經網絡的訓練的問題,僅使用一些較易拍攝的左右視圖就可對網絡進行訓練,極大地減少了數據集制作的成本。但是,其在弱紋理區域,圖像重建損失函數無法得到良好的有監督信號,而且并沒有辦法得到視差圖的真實尺度,重建出來的效果一般,在實際應用中受到一定限制。
在深度學習視差估計網絡實際應用中,為了方便和易于使用,需要將視差估計的整個過程集合到同一網絡上進行。而且對重建出來的圖像質量要求也較高,使用端到端的視差估計方法是一種很好的選擇。本文選取5種深度學習視差估計方法,分別是PSMNet[25]、GA-Net[29]、LEAStereo[26]、DeepPruner[30]、BGNet[31],PSMNet和GANet是預測較慢,有不錯精度的視差估計網絡,Deep-Pruner、BGNet是能夠實時預測的最新網絡,而LEAStereo是神經架構搜索生成的網絡,對這些網絡實驗比較實時和非實時網絡之間的精度和參數量,以及神經網絡搜索產生的網絡與人工設計的網絡之間的差異。其中PSMNet的創新性在于其設計空間金字塔池化模塊和堆疊沙漏3D卷積神經網絡,充分利用全局上下文信息;GA-Net利用引導代價聚合代替廣泛使用的3D卷積,降低計算成本并獲得更好的精度;LEAStereo將神經架構搜索運用到視差估計任務中,允許網絡自動選擇最優結的特征網和匹配網;DeepPruner開發了一個可微分的PatchMatch模塊,逐步減少搜索空間,高效地計算高似然假設的成本量。BGNet設計了一種新的基于學習雙邊網格切片操作的邊緣保護代價體上采樣模塊,通過切片操作從低分辨率代價體中有效地獲得高分辨率代價體進行視差估計。
PSMNet[25]是深度學習視差估計模型中最經典的算法之一,后續很多算法將其作為參考。其創新點在于使用金字塔池化模塊和擴張卷積用于增加感受野,將特征由像素級拓展到不同感受野尺度的區域級,將全局和局部特征線索用于形成視差估計代價體。此外,還設計了一個堆疊沙漏3D卷積神經網絡結合中間監督,以規范代價體,為提高上下文信息提取率,以自上而下/自下而上的方式對代價體多次處理。
PSMNet是一種端到端的視差估計網絡,其模擬傳統的視差估計流程,將問題分解為特征提取、特征代價體的構建和稠密匹配這幾個階段,每個階段由可微塊組成,從而實現的端到端的訓練。PSMNet模型由4個步驟組成:(1)通過一系列的2D卷積提取圖像的一元特征,并將輸出的特征圖輸入SPP模塊來收集上下文信息,然后將這些特征進行融合,這些模塊本身之間權重都是共享的;(2)在每個視差級別上將左特征映射和它們對應的右特征映射連接起來,形成一個成本量,從而產生一個4D體積(H×W×D×F),其中H、W為圖像的高、寬,D為視差值,F為特征尺寸;(3)為了沿著視差維和空間維聚合特征信息,使用了堆疊沙漏(編碼器-解碼器)架構,由重復的自頂向下/自底向上處理和中間監督組成,三個主要的沙漏網絡共同組成該結構,每一個都生成一個視差圖,總損失計算為三個損失的加權和;(4)通過雙線性插值將代價體上升到H×W×D,通過回歸來計算視差,使用softmax操作σ(·)從預測成本Cd中求得每個視差概率d,預測視差d?通過每個視差d按其概率加權的和計算。PSMNet網絡結構圖如圖1所示[25]。

圖1 PSMNet網絡結構示意圖Fig.1 Diagram of PSMNet network structure
GA-Net[29]的主要創新點是提出了SGA層和LGA層,更好地學習局部和全局代價之間的關系。相比于PSMNet使用了大量的3D卷積,通過這兩層結構替換其中的3D卷積層,提升視差估計精度,減少立方計算和內存復雜度。GA層的浮點運算方面的計算復雜度小于一個3D卷積層1/100,僅使用兩層引導聚合塊的網絡遠優于19個3D卷積層的GCNet[32],可以通過GA層構建實時的模型。
在新的神經網絡層中,第一種是SGA,它是受SGM[40]的啟發,是半全局匹配的可微近似。在SGM中有許多用戶定義的參數(P1、P2),這些參數的調優并不簡單[20]。而且其代價聚合和懲罰是固定的,這包括所有的像素、區域和圖像,對不同條件的適應性較低。難最小值選擇還會導致在視差估計過程中產生大量的前向平行曲面。Zhang等[29]提出一種新的可反向傳播的半全局代價聚合步驟,如下式所示:


圖2 GA-Net網絡結構示意圖Fig.2 Diagram of GA-Net network structure
第二種是LGA,它是受局部代價聚合(local matching cost matching)[41]的啟發,遵循傳統的代價過濾策略來細化細結構和邊緣對象。不同于傳統的代價濾波器,使用K×K的濾波器在代價體的K×K的局部區域Np,LGA用三個K×K的濾波器在每個像素位置p進行濾波,產生視差分別為d、d-1、d+1。它表示如下:

其中,C(q,d)表示候選視差d在位置q的代價體;CA(p,d)表示候選視差d在位置p的代價體;w0、w1、w2為3個濾波器的權值矩陣。
GA-Net網絡結構如圖2所示。首先將左右視圖輸入由不同層之間緊密相連的堆疊沙漏網絡,特征提取塊由左視圖和右視圖共享,然后通過文獻[42]中的方法將提取出的左右圖像特征構建成4D代價體,最后再使用幾個SGA層模塊進行代價聚合,并在softmax層之前和之后使用LGA層進行視差回歸,得到視差圖。圖中快速引導子網絡為綠色塊,其實現類似于文獻[43],它使用參考圖像作為輸入,聚合權重w作為輸出,對于4D代價體C,四個方向聚合的H×W×D×F(K=5)權重矩陣通過引導子網絡的輸出分割、重塑并歸一化求得,對應切片d的不同視差的聚合具有相同的聚合權重。
相較于PSMNet[25]和GA-Net[29]花費大量的時間用于神經網絡的設計上,為了減少人類在神經網絡設計方面的精力,通過使用NAS(neural architecture search),使網絡能夠在一組操作中進行選擇(例如:具有不同過濾器大小的卷積),能夠找到一個更好地適應當前問題的最佳架構。由于人類設計的最先進的深度立體匹配網絡規模已經非常龐大,基于現有的計算資源,直接將NAS應用到這樣的海量結構是不可能的。LEAStereo[26]通過將特定任務的人類知識融入到NAS中,實現深度視差估計,遵循深度視差估計的常規步驟,且可以聯合優化整個網絡結構。
與文獻[44-46]中的NAS算法只有單一的編碼器/編碼器-解碼器架構不同,文中算法能夠搜索兩個網絡的結構、特征映射的大小、特征體積的大小和輸出視差的大小。與文獻[44]只搜索單元級結構不同,允許網絡搜索單元級結構和網絡級結構,綜上所述,將幾何知識與神經網絡結構搜索相結合,實現一個端到端層次NAS深度視差估計框架。LEAStereo網絡總體架構如圖3所示[26],主要部分組成:提取局部圖像特征的2D特征網、4D特征體、從連接的特征中計算和聚合匹配成本的3D匹配網,以及將計算代價體投影到視差地圖的軟argmin層。NAS只對包含可訓練參數的特征網和匹配網進行搜索,LEAStereo網絡結構如圖3所示。

圖3 LEAStereo網絡結構示意圖Fig.3 Diagram of LEAStereo network structure
為了在一個預定義的L層網格中找到一條最優路徑,如圖4所示。將一個標量與格子里的每個黑色箭頭關聯起來。其中用β來表示這個標量的集合。在網絡搜索空間中,將最小空間分辨率設置為1/24,在此基礎上,設計一個降采樣率為{3,2,2,2}的四級格架,在特征網的開始,有一個三層的“干”結構,它的第一層是一個3×3的卷積層,stride為3,其次是兩層3×3的卷積層,stride為1。其中選擇LF=6作為特征網,選擇LM=12作為匹配網類似于尋找節點之間的最佳操作,通過使用一組搜索參數β在網格上搜索,以找到其中的路徑,使損失最小化。網格中每一層的每個單元都可以接收到同一層的前一個單元的輸入,也可以接收到下一層和上一層(如果有后兩層)的輸入。通過此算法找到的體系結構如圖5所示。通過特征網絡手工添加了2個跳過連接,一個在節點2和節點5之間,另一個在節點5和節點9之間。

圖5 搜索架構Fig.5 Searched architecture
視差估計的搜索空間很大,而且相鄰像素通常具有相似的差異。為了解決這個問題,Duggal等[30]開發了一個可微分的PatchMatch模塊,在不評估所有代價體的情況下去除大部分差異,通過此代價體學習每個像素修剪范圍。然后再逐步減少搜索空間,有效地傳播這些信息,高效地計算高似然假設的代價體,減少所需計算的參數量和內存。最后,為進一步提升精度,使用圖像引導細化模塊。DeepPruner網絡結構如圖6所示[30]。

圖6 DeepPruner網絡結構示意圖Fig.6 Diagram of DeepPruner network structure
DeepPruner中的剪枝模塊很大程度上受到了文獻[47]的啟發,首先循環展開加入粒子PatchMatch操作的神經網絡層,并求得預測視差置信范圍,進而求得每個像素點處近似邊緣分布。解空間通過有效采樣和傳播修剪,顯著提高推理速度。DeepPruner主要由以下四個模塊組成:特征提取、通過可微的PatchMatch進行剪枝、代價聚合、視差優化和預測。
可微的PatchMatch將廣義PatchMatch展開為一個循環神經網絡,算法迭代即為網絡展開的過程。該結構由粒子抽樣層、傳播層、評價層構成。在粒子抽樣層中,在均勻分布的預測搜索空間中,每個像素i都會隨機生成k個視差值;在傳播層中,相鄰像素粒子以預定義的熱過濾器模式的卷積傳遞(見圖7),每個像素相鄰的4個像素點也會受粒子傳播。在評價層中,每個像素的左右特征內積求得匹配分數,并且每個像素的最佳視差值會被帶入下一次迭代中。傳播層和評估層會進行遍歷,這一過程是在架構底部的粒子采樣層進行的,如圖8所示。

圖7 一個熱濾波器組位于傳播層內Fig.7 One hot filter banks within propagation layer

圖8 可微分的Patchmatch操作說明Fig.8 Illustration of differentiable patch match operations
置信區間預測網絡解決了像素差異位于狹窄區域的問題,調整每個像素的搜索空間。它由一個卷積編解碼結構組成,輸入是可微分的PatchMatch、左圖像和根據稀疏視差估計而扭曲的右圖像,輸出是每個像素i的置信范圍Ri=[li,ui]。
視差估計網絡的實時性和準確性之間的平衡仍然是一個挑戰,為了解決這個問題,Xu等[31]提出了一種基于學習后的雙邊網絡切片操作的保邊體積上采樣模塊。經典的視差估計網絡StereoNet[48]中從低分辨率聚集的4D代價體回歸的2D視差圖通過雙線性插值和分層細化進行上采樣,速度較快,但是與PSM-Net[25]相比精度較低。相反,由于切片層是無參數的,BGNet使得可以在學習后的制導地圖的引導下,從一個低分辨率的代價體中高效率地獲得一個高分辨率的代價體,在高分辨率下回歸視差圖,保持高精度和高效率。BGNet網絡結構如圖9所示[31]。

圖9 BGNet網絡結構示意圖Fig.9 Diagram of BGNet network structure
BGNet是基于CUBG(cost volume upsampling in bilateral grid)模塊的基礎上設計出來的,其主要由四個模塊組成,即特征提取模塊、代價體聚合模塊、代價體上采樣模塊和殘余視差細化模塊。
CUBG模塊如圖10所示,低分辨率代價體CL和圖像特征圖為輸入,上采樣的高分辨率成本體積為輸出。CUBG模塊操作有雙邊網格創建和切片。

圖10 學習雙邊網絡代價體上采樣模塊Fig.10 Module of cost volume upsampling in learned bilateral grid(CUBG)
當代價體作為雙邊網格時,利用3×3的卷積將一個具有四個維度(包括寬度x、高度y、視差d和通道c)的低分辨率(例如:1/8)的聚合代價體CL轉化為雙邊網格B(x,y,d,g),其中寬度x,高度y,視差d,制導特征g。
通過雙邊網格,可以利用切片層生成3D高分辨率代價體CH(CH∈?W,H,D)。切片操作是在高分辨率的二維制導映射G的引導下,在四維雙邊網格中進行線性插值。切片操作定義為:

其中,s∈(0,1)是網格尺寸w.r.t的寬高比值,即高分辨率代價體尺寸,sG∈(0,1)是網格(lgrid)的灰度值與制導圖lgrid的灰度值的比值。制導圖G由高分辨率的特征圖通過兩次1×1卷積生成。與文獻[49]中設計的原始網格不同,文中的雙邊網格是自動從代價體中學習的。在實驗中,網格大小通常設置為H/8×W/8×Dmax/8×32,W和H分別為圖像的寬度和高度,Dmax為最大視差值。
為了評估深度學習視差估計模型在不同數據集上的表現,本文選取了三種不同的數據集進行實驗;KITTI2015是真實世界的街景數據集,Instereo2K是室內場景大型標簽數據集,Middlebury2014是靜態室內場景的高分辨率立體數據集。
KITTI數據集是一個真實世界的街景數據集,由一輛行駛的汽車在中型城市、農村地區和高速公路上采集得來,記錄平臺配備2個高分辨率立體相機系統,1個Velodyne HDL-64E激光掃描儀,最先進的OXTS RT 3003的定位系統,攝像機、激光掃描儀和定位系統經過校準和同步,可以提供準確的真實視差[50]。KITTI2015數據集是利用KITTI原始數據集,創建的一個具有獨立移動對象和逼真的真實視差的場景流數據集,共包含200張訓練圖像和200張測試場景[51],分辨率為376×1 242像素。該數據集中的真實視差圖是由激光掃描儀得到的稀疏視差圖,本文的訓練集為具有真值的160張圖片,測試集為其余的40張圖像。
Instereo2K數據集是一個室內場景視差估計的大型真實數據集,該數據集采集平臺是一個結構光系統,由2臺分辨率為960×1 280像素的彩色攝像頭和1臺分辨率為768×1 024像素的投影儀組成,相機的CCD傳感器的像素大小為3.75 μm,每個相機的鏡頭焦距為8 mm[52]。該數據集包含2 050對RGB圖像及高度精確的視差圖,其中2 000對作為訓練集,50對作為測試集,分辨率為860×1 280像素,涵蓋了不同的室內場景,包括辦公室、教室、臥室、客廳和宿舍。與KITTI2015相比,Instereo2K數據集帶標簽圖像數量增加了一個數量級,在2 000對訓練集中,本文1 600對圖像進行網絡訓練,其余的400張圖片進行精度測試。
Middlebury2014數據集是靜態室內場景的高分辨率立體數據集[53],它是在實驗室條件下拍攝而來的。它是一個結構化的照明系統采集,該系統包括高效的二維亞像素對應搜索、基于鏡頭畸變建模的攝影機和攝像機自標定的技術,結合來自多個投影儀的視差估計,在大多數觀測表面上實現0.2像素的視差精度。該數據集包含了33個新的600萬像素的數據集,其中23個數據集是包含真實視差圖的,可以用來訓練和驗證,10個數據集是不提供真實視差圖的,用于測試。每個數據集由多次曝光和多次環境光照下拍攝的輸入圖像組成,有或沒有鏡像球來捕捉照明條件,每個數據集提供“完美”和現實的“不完美”校正,并分別提供精確的1維和2維的浮點視差。本文取80%具有真值的圖像作為訓練集,通過剩余的20%測試精度。
為了評估立體影像視差估計算法的性能或改變其某些參數的影響,需要使用規定的評價指標來判斷估計出來的視差圖好壞。通常是通過計算一些地面真實數據的誤差統計來實現的。常用的評價指標有以下三種:
(1)均方根誤差(RMS error),計算的視差圖dC(x,y)和地面真值圖dT(x,y)之間的均方根,即:

其中,N是像素總和。
(2)端點誤差(EPE),計算的視差圖dC(x,y)和地面真值圖dT(x,y)之間的平均值,即:

其中,N是像素總和。
(3)誤匹配像素百分比,計算的視差圖dC(x,y)和地面真值圖dT(x,y)相差大于δd的像素的比例,即:

其中,N是像素總和,δd可以取0.5、1.0、2.0、3.0、4.0。
對于KITTI2015基準測試結果,遵循標準評估協議,綜合全圖像測試誤差,選用誤匹配像素百分比大于3個像素比例作為評價指標,即3像素誤差;鑒于與之前發表的一些研究的一致性,Instereo2K和Middlebury2014數據集選用2像素誤差作為評價指標。
為了能夠對深度學習的視差估計網絡在室內場景圖像的性能和泛化性進行全面的評估,本文設計了兩類實驗。第一類實驗將上述5種深度學習的視差估計網絡使用在KITTI2015數據集、Instereo2K數據集和Middlebury2014數據集上,測試其性能,并將它們和經典的SGM方法進行比較。第二類實驗是為了測試深度學習視差估計模型的泛化性能,使用BGNet將三種數據集的預訓練模型不加任何調整直接運用到各數據集上,測試該網絡的魯棒性。
5種深度學習視差估計網絡測試和訓練利用深度學習平臺Pytorch進行實現,在Nvidia Tesla P100顯卡上進行,顯存為16 GB。在訓練之前,對數據集進行預處理,將輸入的圖片進行隨機裁剪,PSM-Net、DeepPruner、BGNet裁剪為256×512像素,GA-Net裁剪為240×576像素,LEAstereo裁剪為192×384像素。優化器使用的是Adam(adaptive momentum)優化器(b1=0.9,b2=0.999),最大視差值和批處理大小分別設置為192和4,學習率設置為0.001。在三種數據集上,深度學習視差估計網絡和SGM方法誤差占比見表1。

表1 深度學習網絡和SGM方法在實驗中誤差占比Table 1 Percentage of deep learning networks and SGM method in experiment 單位:%
KITTI2015上能夠取得極佳的效果,在室內圖像中也能表現出不錯的效果。但由于深度學習模型對各個場景數據集學習能力不同,缺少在包含真實視差和表面法線數據集的訓練,如:PSM-Net和GA-Net,相較于傳統的SGM算法,在室內場景數據集中并沒有取得更優的效果。視差估計網絡對幾何信息的提取能力,以及數據集中圖像的質量和數量對深度學習視差估計模型的預測具有很重要的意義。通過像LEAStereo一樣充分利用左右視圖交叉參考的優勢,在表面法線等幾何信息中表現出強的性能,能夠更好地捕捉復雜場景的上下文信息,在室內圖像的重建中能遠超傳統的SGM算法。相比較而言,先進的深度學習方法能夠減少具有挑戰性復雜場景的誤匹配現象,取得比傳統方法更好的效果。
為了更全面地評估深度學習視差估計網絡的性能,將KITTI數據集中的圖片分別進行相應裁剪,輸入各網絡中,分別輸出訓練過程網絡參數總量和運行時間,單位分別是MB和ms,它們都是網絡對一幅左右視圖進行推理所得數值,結果如表2所示。隨著深度學習視差估計網絡的不斷發展,輕量級的模型能在保持良好的運行時間和少的計算資源的條件下,取得更好的重建,對其運用在室內機器人定位、導航、交互提供良好基礎。

表2 深度學習視差估計網絡的參數量和運行時間Table 2 Parameter numbers and running time of disparity estimation networks
為了比較深度學習模型和傳統SGM方法之間的差異,通過將KITTI2015和Middlebury2014視差結果進行渲染,更加直觀地對比差異,如圖11所示。深度學習的方法所得到的視差圖更加完整,模糊的噪點更少。SGM方法會產生一些空洞區域,需要通過視差后處理消除,深度學習的方法只需將圖片輸入一個端到端的視差估計網絡中,直接得到視差圖,節約時間成本,且可以取得更好的效果。

圖11 不同深度學習模型的視差結果Fig.11 Disparity results of different deep learning models
泛化性能對于立體網絡來說是非常重要的,具有良好的泛化性能對網絡的實際工程應用具有重要的意義。遷移學習是將某個領域或任務上學習到的知識或模式應用到不同但相關的領域或問題中。為了驗證BGNet在不同場景中的泛化效果,通過使用遷移學習的方法,將在一個數據集上訓練所得的模型不經過任何調整直接應用于另一數據集上,通過在另外一個數據集上的精度結果,能夠反映出該網絡的泛化性能。表3是BGNet的預訓練模型在各數據集上的測試結果。

表3 BGNet的預訓練模型在各數據集上的測試結果Table 3 Test results of BGNet pretrained model on each dataset 單位:%
總體而言,深度學習的視差估計模型BGNet具有良好的泛化性能,在Middlebury2014和Instereo2K數據集上,使用KITTI2015數據集預訓練的模型進行測試,仍能取得不錯的效果。而Middlebury2014預訓練模型在Instereo2K數據集上能夠取得比KITTI2015更好的泛化性能,具有良好的魯棒性,這是由于KITTI2015數據集更多的包含的是室外場景的特征,對于室內場景特征包含較少。由于Middlebury2014數據集可訓練的數據量較少,Instereo2K數據集圖片質量一般,其在KITTI2015數據集上表現較差,仍需增加數據集和圖像質量。由此可以看出,在室內場景立體匹配中,深度學習視差估計模型已有一定泛化性能,但在不經任何微調的條件下,其效果并不優于傳統SGM方法,其泛化性能仍然有待提升。
本文對深度學習的視差估計方法進行概述,并將其應用在室內圖像數據集中,針對多個不同的數據集,并與SGM方法進行比較,并對其泛化性能進行分析,所得結果表明,首先,在室內圖像數據集的視差估計過程中,深度學習模型能夠取得很好的效果;其次,在深度學習模型中,以端到端的方式輸出視差圖,無需后處理,最新的深度學習方法具有比傳統SGM方法更好的效果;最后,深度學習的方法具有良好的泛化性能,將在經典的KITTI2015數據集訓練的模型,不加任何調整直接應用在室內圖像的數據集中能取得不錯的效果,但和傳統方法相比效果一般,泛化性能有待提升。
現有研究面臨難題仍有:
(1)模型泛化性能有待提升,大多深度學習視差估計模型僅在訓練的數據集上有良好的效果,用于其他不同的數據集,取得的效果一般。良好的泛化性能在實際應用中具有重要作用。
(2)實時處理能力還較弱,現在所提出的視差估計網絡多使用3D和4D代價體,代價聚合時使用2D或3D卷積,計算量較大,計算消耗較大。開發輕量級、計算量較小的網絡仍是所面臨的挑戰之一。
(3)無紋理、反射表面和遮擋區域等不適定區域,很難找到精確的對應點,將高級場景理解和低級特征學習相結合,更多地融合上下文信息,充分學習全局信息是解決途徑之一。