基本思想

Unsupervised Learning of Depth and Ego-Motion

輸入一段影片,我們把第

t

幀作為Depth CNN的輸入,得到估計的深度影象

\hat{D}_t

。再把相鄰的幾幀

I_s

(比如

I_{t-1}

I_{t+1}

)輸入到Pose CNN中,得到估計的相機的移動軌跡

\hat{T}_{t\rightarrow s}

。假設我麼已知相機的內參

K

,那麼我們便可以做如下對映:

p_s \sim K\hat{T}_{t \rightarrow s} \hat{D}_t(p_t) K^{-1} p_t\\\tag{1}

我們從右到左來理解這個公式:

p_t

I_t

中一點的齊次形式。 左乘

\hat{D}_t(p_t)K^{-1}

,將

p_t

對映到三維空間,這裡齊次座標的座標系原點是

t

時刻的相機位置;左乘

\hat{T}_{t \rightarrow s}

,將齊次座標系的原點移至

s

時刻的相機位置;最後再左乘

K

,將三維座標對映到2D的影象上。

這樣我們就得到了

I_s

I_t

的對應關係,也就是說

I_s

p_s

位置的數值,應該跟

I_t

p_t

位置上的數值相同。

\hat{I}_s

是指

I_s

透過座標變化而生成的類似於

I_t

的影象。我們可以用最簡單的損失函式來衡量這種一致性:

L_{vs}=\sum_s \sum_p \left| {I_t(p)-\hat{I}_s(p)} \right|\\

從而進行backpropagation,最佳化Depth CNN 和 Pose CNN 中的引數。

不過這裡還有個問題:我們得到的

p_s

是連續值,我們必須把它對映到對應的畫素點上才能得到

\hat{I}_s

。於是,作者採用經典論文

spatial transformer networks

的 bilinear sampling 方法來解決這個問題。即

\hat{I}_s(p_t)

的畫素值為

I_s(p_s)

周圍四個點的雙線性插值的結果。

Unsupervised Learning of Depth and Ego-Motion

對移動物體的處理

以上方法成立有一下三個前提/問題:

場景必須是靜止的。如果從

I_t

I_s

的過程中,場景發生了變化,那麼(1)將不再成立。而在實際應用場景中,特別是自動駕駛過程中,場景必然會有運動物體,比如迎面而來的汽車。

I_t

I_s

中的每個畫素點都要一一對應。這在現實中顯然也是不可能的,因為隨著相機的運動,必然有一部分畫素點被遮住,而且會有新的畫素點移動到視野之外。

場景中的平面是滿足 Lambertian Assumption的,只有這樣,photo-consistency才有意義。

為了解決上述三個問題,作者提出了一個explainability prediction network。這個網路的輸入為

I_s

I_t

,輸出為一個遮罩層

\hat{E}

。這樣,我們的Loss function就變成了:

L_{vs}=\sum_s \sum_p \hat{E}_s(p)\left| {I_t(p)-\hat{I}_s(p)} \right|\\

\hat{E}

相當於賦予了網路對誤差“視而不見”的能力。如果按這個loss function 訓練,網路很自然地會把

\hat{E}

的每一個值都賦值為0,這樣loss也為0。當然這麼做是沒有意義的,我們必須限制

\hat{E}

理想情況下,

I_t

I_s

中的每個畫素點都一一對應,此時遮罩層不需要起作用,也就是

\hat{E}

的每一個值都是1。我們希望網路儘可能地接近這種情況,也就是說希望

\hat{E}

的每個元素儘可能接近1。為了到達這個目的,我們用

\hat{E}

和1之間的cross entropy來衡量誤差,希望cross entropy 越小越好。

大位移情況

網路是透過對 loss function 求導來實現最佳化的。可是當估計的

p_s

處的紋理單一,或者距離真實的

p_s

比較大的時候,求導會產生問題。這是以為雙線性插值之和

p_s

周圍4個點的畫素值有關。

為了解決這個問題,作者引入了multi-scale 和 smoothness loss。multi-scale 是指先把

I_t

I_s

的尺寸都壓縮,然後在計算

L_{vs}

。這樣儘管 bilinear 還是從周圍4個畫素取樣,但是這4個畫素卻對應著原圖較大的一片區域。Smoothness Loss 則用來抑制 Depth 的突變:

L_{smooth}=\sum_p \left| \triangledown^2 D(p) \right|\\

總的Loss function:

L_{final}=\sum_l L_{vs}^l+\lambda_s L_{smooth}^l+\lambda_e \sum_s L_{reg}(\hat{E}_s^l)\\

這裡的

l

是代表不同的圖片尺度。