深度立體匹配(deep stereo matching)演算法能夠取得較好的效能,一是來源於卷積神經網路強大的特徵提取能力,二是得益於大規模雙目模擬資料集,例如:Sceneflow [1] 是一個包含三萬多對雙目影象的帶標籤的合成數據集,Carla [2] 是一個開放的城市駕駛模擬器,可以用來生成大規模城市雙目模擬資料。這些合成數據集使得深度模型能夠得到充分地訓練。然而,由於合成數據和真實資料存在很大的領域偏差(domain gap),在合成數據上預訓練的模型在真實資料上泛化效能較差。

另一方面,真實場景下的資料往往難以獲得密集且準確的標註資訊。比如LiDAR等裝置價格高昂,體型笨重,而且只能收集稀疏的深度資訊;基於結構光的裝置在室外場景難以捕捉準確的深度資訊。近年來,更多的研究關注域自適應立體匹配(domain adaptation stereo matching)。希望在不獲取,或者少獲取真實場景標註資訊的情況下,實現深度模型從模擬場景到真實場景的自適應。

本文主要梳理了近兩年CVPR上關於域自適應立體匹配的研究工作。

1,ZOLE

從近兩年CVPR看域自適應立體匹配

論文標題:Zoom and Learn: Generalizing Deep Stereo Matching to Novel Domains(CVPR 2018)

論文連結:Zoom and Learn: Generalizing Deep Stereo Matching to Novel Domains

Motivation

這篇論文希望透過無監督域自適應,將合成數據上訓練的模型泛化到新的真實場景中,比如手機拍攝的生活環境,或者自動駕駛的城市街景。作者觀察到兩個現象:

泛化故障:合成影象上預訓練的模型在真實影象上效能不好,原因在於視差圖的邊緣很模糊,並且在病態區域的視差估計是錯誤的;

尺度多樣化:如果將一對雙目影象上取樣一定比例,再輸入到預訓練的模型中,那麼預測出來的視差具有更豐富的細節資訊,例如更銳化的目標邊緣,更高頻的場景資訊。

第一點觀察是存在的問題,作者借鑑圖論的知識,對視差圖做圖拉普拉斯正則化約束,採用迭代最佳化的策略在真實場景上進行自適應。而第二點是優勢,這種精細化的視差圖可以作為原尺度輸入影象的視差標籤,從而實現自監督學習。這實際上一種

放大學習

(zoom and learn),因此本文的方法被稱為ZOLE。

Method

給定一個由深度網路預測的視差圖D,圖拉普拉斯正則化定義為:令視差圖上的影象塊(patch)為

\bm{s} \in R^m

s

相對於一個具有m個頂點的圖 G 是光滑的,設

L \in R^{m \times m}

為圖 G 的拉普拉斯矩陣,那麼圖拉普帕斯正則化就是

s^TLs

的值。這個得到的值經過求和,成為圖拉普拉斯正則化損失函式來訓練深度模型。

那麼如何從視差圖上構造出這個圖G呢?作者將視差圖劃分為M個正方形小塊,並將其切片,這樣每個小塊

s

對應一個長度為m的向量。連線畫素

i

和畫素

j

的邊權重

w_{ij}

定義為:

w_{i j}=\left\{\begin{array}{ll} \exp \left(-d_{i j}^{2}\right) & \text { if }\left|d_{i j}\right| \leq \epsilon \\ 0 & \text { otherwise } \end{array}\right.

其中

\epsilon

是一個閾值,

d_{ij}^{2}

是畫素

i

和畫素

j

的距離度量。因此,構造的圖G是一個

\epsilon

-鄰接圖。距離度量函式定義如下:

d_{i j}^{2}=\sum_{k=1}^{K}\left(\mathbf{f}_{k}(i)-\mathbf{f}_{k}(j)\right)^{2}+\alpha \cdot l_{i j}^{2}

其中

\mathbf{f}_{k}(i)

\mathbf{f}_{k}(j)

分別是

{f}_{k}

的第

i

項和第

j

項,

{f}_{k}

實際上是所有影象塊的集合 。距離度量的前一項是K維空間的距離,而後一項是畫素空間的距離,

\alpha

取0。2。

假設共有N對雙目影象,即

P_i = (L_i, R_i), 1 \leq i \leq N

。前

N_{dom}

對是真實影象,後面

N_{syn} = N - N_{dom}

是合成影象。那麼對於深度立體匹配模型

S\left(\cdot;\Theta\right)

,令

D_i

是視差標籤 ,其迭代最佳化的目標為:

\begin{array}{l} \Theta^{(k+1)}=\underset{\Theta}{\arg \min } \sum_{i=1}^{N_{\text {dom }}}\left\|S\left(P_{i} ; \Theta\right)-D_{i}\right\|_{1}+ \\ \tau \cdot \sum_{i=N_{\text {dom }}+1}^{N}\left\|S\left(P_{i} ; \Theta\right)-D_{i}\right\|_{1}+\lambda \cdot \sum_{i=1}^{N_{\text {dom }}} \sum_{j=1}^{M} \mathbf{s}_{i j}^{\mathrm{T}} \mathbf{L}_{i j}^{(k)} \mathbf{s}_{i j} \end{array}

目標函式的前兩項可看作資料項,第三項是圖拉普拉斯正則化損失,可看作平滑項。其中第一項對應真實資料,

D_i

是原始影象上取樣後經過模型預測,再縮放回原尺度的偽標籤;第二項對應合成數據,

D_i

是合成數據的視差標籤。作者認為在真實場景下能夠估計視差的模型,應該在模擬場景下仍然具有視差估計的能力,因此合成數據和真實資料是混合訓練的,

\tau

\lambda

是各個損失函式的權重。

自適應迭代最佳化的演算法如下,是對上述目標函式的具體化闡述。

從近兩年CVPR看域自適應立體匹配

Experiments

作者首先在智慧手機拍攝的日常生活場景下進行實驗。由下圖可以看出,ZOLE模型在真實場景下的視差圖更加平滑,但是能夠保持銳化的邊緣細節。

從近兩年CVPR看域自適應立體匹配

作者也在自動駕駛的城市街景場景下進行了實驗,即KITTI資料集。由下圖可以看出,ZOLE模型同樣可以產生準確且精細化的視差圖,這得益於圖拉普拉斯正則化的約束。

從近兩年CVPR看域自適應立體匹配

2,L2A

從近兩年CVPR看域自適應立體匹配

論文標題:Learning to Adapt for Stereo(CVPR 2019)

論文連結:Learning to Adapt for Stereo

開原始碼:CVLAB-Unibo/Learning2AdaptForStereo

Motivation

無監督域自適應演算法的一種簡單實現是先在合成數據上採用有監督的預訓練,這可以看作是一種更好的引數初始化,之後在真實資料上採用無監督損失函式進行微調。這種自適應方法簡單粗暴,微調時容易崩潰,並且準確率不高。

這篇論文從元學習的方法出發,將自適應的過程納入到學習的目標中,由此可以得到一組更適合自適應學習的引數。模型不可知元學習(Model Agnostic Meta Learning,MAML)[3] 是few-shot learning中一種常用的元學習演算法。給定一個訓練集

\mathcal{T}

,令和任務相關的訓練集和驗證集分別是

\mathcal{D}_{\tau}^{\text {train}}

\mathcal{D}_{\tau}^{\text {val}}

,其中

\tau \in \mathcal{T}

。假設內迴圈只有一次梯度下降,則整個MAML的目標可以寫為:

\min _{\theta} \sum_{\tau \in \mathcal{T}} \mathcal{L}\left(\theta-\alpha \nabla_{\theta} \mathcal{L}\left(\theta, \mathcal{D}_{\tau}^{\text {train}}\right), \mathcal{D}_{\tau}^{\text {val}}\right)

其中

\alpha > 0

是自適應的學習率。這個目標函式表明,在每次迭代最佳化中,內迴圈從公共基本模型

\theta

開始對每個任務執行梯度下降更新(適應步驟);之後,外迴圈對公共基本模型執行一次梯度更新,更新的梯度是內迴圈中特定任務的梯度的總和。作者將MAML的自適應思想應用到立體匹配中。

Method

從近兩年CVPR看域自適應立體匹配

上圖是論文的訓練框架圖,作者採用合成影象的影片幀進行線上自適應學習,因此這裡可以使用有監督損失

L_s

進行評估。在真實場景中適應時,只有無監督損失

L_u

可以用。因此,

這是一個將自適應過程加入到學習環節的學習自適應(learn-to-adapt,L2A)方法

具體來說,對於每一個batch,含有

b

個影片序列。由於影片序列較長,並且有很多冗餘部分,因此僅隨機取樣

k

幀影片。圖中藍色箭頭代表的是模擬自適應階段,對應MAML中的內迴圈。對於第一個取樣幀

s_i

,先使用無監督損失函式

L_u

對當前影片序列的模型進行梯度更新,這是模擬在真實場景下的無監督學習。之後每次不僅採用無監督損失更新,還採用有監督損失

L_s

評估當前模型的準確率。當取樣的影片幀透過之後,將每個影片序列的有監督評估損失求和,作為整個立體匹配模型的梯度進行更新。這對應圖中的橙色箭頭,即MAML中的外迴圈梯度更新。

為了更清晰地理解自適應的過程,可以看下面的演算法流程:

從近兩年CVPR看域自適應立體匹配

演算法的核心是第9步採用無監督損失對當前任務的模型

\theta^\tau

進行梯度更新,模擬真實場景下的自適應;第10步採用有監督損失進行評估,並進行梯度累加;第11步採用累加的梯度對整體模型

\theta

進行梯度更新。

除此之外,為了減少無監督損失中錯誤的視差估計對訓練的影響,作者還設計了一個置信度函式,用來作為無監督損失函式中每個畫素點貢獻的權重。由於這種置信度是沒有顯式的監督資訊的,因此直接讓置信度網路自動地估計噪聲點所在的位置。這種置信度可看作是無監督損失的加權,具體的結構如下圖所示:

從近兩年CVPR看域自適應立體匹配

Experiments

作者主要比較了有監督訓練和無監督域自適應,以及是否採用置信度函式的效能。

從近兩年CVPR看域自適應立體匹配

從上圖可以看出,比較直接的域自適應是先監督預訓練,再無監督finetune,即SL+Ad;而採用L2A+WAd(即L2A自適應+置信度函式)的效能要優於這種簡單的自適應方法,並且幾乎和理想的有監督finetune效能相匹配。

3,MADNet

從近兩年CVPR看域自適應立體匹配

論文標題:Real-time self-adaptive deep stereo(CVPR 2019 Oral)

論文地址:Real-time self-adaptive deep stereo

開原始碼:CVLAB-Unibo/Real-time-self-adaptive-deep-stereo

Motivation

ZOLE和L2A這兩種方法都是從自適應的準確率上來考慮的,並沒有關注模型的速度。然而,在實際的自動駕駛場景中,我們需要的是實時的深度估計模型,因此作者在這篇論文中

提出了第一個實時域自適應立體匹配網路MADNet(Modularly ADaptive Network)

前面介紹過,一種簡單的完全自適應(full adaptation)方法是採用無監督損失進行finetune,但是這種訓練方法在每次反向傳播時需要貫穿整個網路。儘管將網路設計的更輕便簡單可以提升一些速度,但是反向傳播仍然需要較大的計算量,這樣使得達到實時的速度變得很困難。

作者認為自適應的時候可以只針對某些特定的模組進行反向傳播,而不需要對整個網路進行一遍,這樣既可以保證網路具有一定的體量來滿足準確性的要求,又能在自適應的階段進行線上學習,提升速度。網路自始至終都是處於訓練的狀態,只要真實場景的影片足夠長,那麼網路就能適應的越來越好。

Method

從近兩年CVPR看域自適應立體匹配

上圖是MADNet的整體結構。作者設計了一個輕量級的encoder-decoder結構,編碼和解碼部分都是一個金字塔結構。編碼部分的 F1 到 F6 分別是1/2到1/64的解析度,解碼部分的 D2 到 D6 是對應於 F2 到 F6 解析度的視差估計模組,每個D模組都輸出該解析度大小的預測視差圖。編碼和解碼中間的圓圈代表經過warp操作構造cost volume(如上圖c)。

上圖中(a)表示的是完全自適應的方法,採用無監督損失,對整個網路進行反向傳播,這種方法計算量比較大。圖中(b)是作者提出的調製自適應演算法(Modular ADaptation,MAD),將相同解析度的編碼和解碼模組看做是一個合併的調製模組M。比如F3和D3組成M3調製模組,在每次計算完損失之後,只選擇一個模組進行反向傳播,這樣就可以大大提升線上自適應的速度。

那麼在計算完損失之後,如何選擇需要進行反向傳播的模組呢?是按順序選擇還是隨機選擇?作者提出了一個啟發式的獎勵-懲罰機制來動態地選擇每次更新的模組。下面是該演算法的流程:

從近兩年CVPR看域自適應立體匹配

演算法中H是一個包含了p個bins的直方圖,每一個bin對應於一個調製模組M。第7行,每次從直方圖H的softmax分佈中取樣機率最高的模組M,在第9行進行梯度更新。接下來是一種啟發式的獎勵-懲罰機制,用來調整直方圖中每個bin的大小。第13行的

L_{exp}

是一種帶有噪聲的損失。第14行的

\gamma

可以看做是用來衡量模組有效性的度量。如果某個模組有效,那麼當前的

L_t

就會比較低,使得

\gamma > 0

,那麼在第16行更新直方圖時機率就會增大。反之,模組效率比較低,

L_t

就會大,使得

\gamma < 0

,在更新時就是負權重。

Experiments

作者採用的KITTI raw資料集,它包含Campus,City,Residential,Road四種類型的影片幀。

從近兩年CVPR看域自適應立體匹配

上表是MADNet在四種類型的資料集上先後自適應的實驗結果,可以看到如果不加自適應,可以達到接近40FPS的速度。如果採用無監督完全自適應,可以達到15FPS;而採用了MAD調製模組後,速度可以提升到25FPS,精度降低也不多,這是因為當適應到足夠多的影片幀時,MAD可以具有與完全自適應同等的效能。

從近兩年CVPR看域自適應立體匹配

上表比較了不同自適應方法的效能和速度。可以看到,不採用自適應時速度最快,但是精度最低。只調整最後一層,Refinement層或者D2+Refinement,速度會有所降低,EPE大幅降低,但是D1-all還是比較高。相比於按順序的選擇調製模組(SEQ)或者隨機選擇調製模組(RAND),採用啟發式的懲罰-獎勵機制達到的效能最高。

4,Guided Stereo Matching

從近兩年CVPR看域自適應立體匹配

論文題目:Guided Stereo Matching

論文地址:Guided Stereo Matching

開原始碼: mattpoggi/guided-stereo

Motivation

和上面介紹的三種方法不同的是,

這篇論文探討的是一種弱監督的引導域自適應立體匹配

。儘管現有裝置很難獲取密集而準確的深度資訊,但是隻獲取十分稀疏的深度資訊是比較容易辦到的。如何只根據這些稀疏的標籤就能完成從合成數據到真實資料的自適應呢?作者在這篇論文中假設只採用5%真實資料標籤,提出一種引導匹配的域自適應機制。

Method

在深度立體匹配網路中,用來計算匹配代價的是cost volume,根據計算方式不同有兩種形式,一是基於相關性的,其cost volume的大小是 H×W×(2D+1);另一種是基於3D卷積的,其cost volume的大小是 H×W×D×2F。這裡H和W是影象的高和寬,D是特徵通道數,F是考慮的最大視差值。

作者希望透過真實資料的稀疏標籤來增強其第k個通道的輸出。具體來說,引入了兩個大小均是H×W的輸入:係數矩陣G和二進位制掩碼V,V中每個量表示G中元素是否有效。對於座標是(i, j)的畫素,如果

v_{ij} = 1

,那麼就根據真實視差

g_{ij}

來改變其特徵。之後再利用深度神經網路自身的能力來應用這些真實的稀疏標籤。

之前的一些方法是採用置信圖來改變cost volume,比如當預測的視差

d \neq g_{ij}

,就將其置為0。但是考慮到真實影象的標籤是十分稀疏的(5%),因此這樣做就會使得特徵圖變成一個大部分是零的特徵圖,只有零星的非零值,這是不利於深度網路學習的。因此,一種替代的方式是採用以

g_{ij}

為中心的高斯分佈,其表示式如下:

k \cdot e^{-\frac{\left(d-g_{i j}\right)^{2}}{2 c^{2}}}

其中c代表高斯分佈的寬度,k代表峰值的最大值,應當大於等於1。因此,根據有效性V,可以將高斯分佈與整個cost volume

\mathcal{F}

相乘來得到新的特徵

\mathcal{G}

\mathcal{G}=\left(1-v_{i j}+v_{i j} \cdot k \cdot e^{-\frac{\left(d-g_{i j}\right)^{2}}{2 c^{2}}}\right) \cdot \mathcal{F}

以上就是引導立體匹配的核心公式。

Experiments

作者分別採用兩種不同代表的深度立體匹配網路來進行實驗,iResNet [4]和PSMNet [5],並且在三種公開資料集(KITTI,Middlebury,ETH3D)上取得了更加優越的效能。甚至對於傳統的SGM演算法也有效。

從近兩年CVPR看域自適應立體匹配

上圖是在KITTI 2015資料集上的效能比較。可以看到,無論iResNet還是PSMNet,只在合成數據上預訓練再在真實資料上測試都會有很大的效能丟失。而加入稀疏標籤的引導後,僅僅測試就能降低錯誤率。如果在訓練時也加入引導,則更能進一步降低錯誤率。在其他幾個資料集上的結果也有類似的結論,大家可以下載論文看更詳細的結果。

總結

從近兩年CVPR的域自適應立體匹配的發展來看,有以下幾個特點:

研究關注點從離線自適應轉向線上自適應,後者更加貼近實際應用場景;

從努力提升演算法精度,到開始關注模型效率,推理速度,邁向實時的域自適應演算法;

在合成數據和真實資料不變的情況下,探索更有效的訓練演算法是實現域自適應的突破口,可以從其他領域的進展來借鑑;

僅有稀疏的真實標籤就能夠大幅提升域自適應的效能。

參考文獻

[1] Mayer, N。, Ilg, E。, Hausser, P。, Fischer, P。, Cremers, D。, Dosovitskiy, A。, Brox, T。: A large dataset to train convolutional networks for disparity, optical flow, and scene flow estimation。 In: CVPR 2016。

[2] Alexey Dosovitskiy, German Ros, Felipe Codevilla, Antonio Lopez, and Vladlen Koltun。 Carla: An open urban driving simulator。 arXiv preprint arXiv:1711。03938, 2017。

[3] Chelsea Finn, Pieter Abbeel, and Sergey Levine。 Model agnostic meta-learning for fast adaptation of deep networks。 In PMLR 2017。

[4] Zhengfa Liang, Yiliu Feng, Yulan Guo, Hengzhu Liu, Wei Chen, Linbo Qiao, Li Zhou, and Jianfeng Zhang。 Learning for disparity estimation through feature constancy。 In CVPR 2017。

[5] Jia-Ren Chang and Yong-Sheng Chen。 Pyramid stereo matching network。 In CVPR 2018。