基于無監(jiān)督深度學(xué)習(xí)的單目視覺的深度和自身運動軌跡估計的深度神經(jīng)模型
本文是對文章《Unsupervised Learning of Depth and Ego-Motion from Video》的解讀。


1. 概述
1.1為什么要講這篇文章?
在無人駕駛、3D重建和AR三個領(lǐng)域中,對于周圍環(huán)境物體的深度(Depth)和對自身位置的估計(State Estimation)一直是一個非常棘手而復(fù)雜的問題。
過去常用的方法,傳統(tǒng)的SLAM,通常用非常繁瑣的數(shù)學(xué)公式和基于特征點/直接法的方法來進(jìn)行軌跡估算,而深度通常用單目視覺(多態(tài)幾何),雙目視覺,激光雷達(dá)來進(jìn)行估計。
但傳統(tǒng)方法通常只能進(jìn)行稀疏的特征點(Features),進(jìn)行深度估計和自身姿態(tài)估計,而不能利用所有pixel,而這對于自動駕駛領(lǐng)域中重建高精地圖和AR領(lǐng)域中的室內(nèi)環(huán)境感知來說就會導(dǎo)致信息的缺失。
1.2 這篇文章提出了什么新方法?
這篇文章主要提出了一種基于無監(jiān)督深度學(xué)習(xí)的單目視覺的深度和自身運動軌跡估計的深度神經(jīng)模型。
它的新穎之處在于:
提出了一種堪稱經(jīng)典的:depth network和ego-motion network共同訓(xùn)練的架構(gòu)模式。(因此這篇文章可以說是最2年基于深度學(xué)習(xí)的depth estimation的祖師爺,Google和Toyota的最新論文都借鑒了它的訓(xùn)練模式)
無監(jiān)督學(xué)習(xí):只需任意單目相機的視頻就可以學(xué)習(xí)其深度和軌跡信息。
同時追蹤所有像素點,不丟失任何場景信息。
深度估計比肩傳統(tǒng)SLAM,自身軌跡估計優(yōu)于傳統(tǒng)SLAM。
它在工程之中的應(yīng)用價值:
高境地圖重建(自動駕駛車,移動機器人)
3D視覺效果重建
AR/VR定位
2. 文章核心
簡單來說,這篇文章的核心就是下圖中的兩個深度卷積網(wǎng)絡(luò)CNN,Depth CNN和Pose CNN綁定在一起通過View Synthesis進(jìn)行訓(xùn)練。
具體來說,通過把Target Image (It?)中每一個pixel都按下圖的公式給warp到Source Image ( I t ? 1 ?或 I t + 1 )中,計算Pixel-Wise的intensity error:


大師兄:看到這里,俺老孫就想到了當(dāng)年GAN生成對抗網(wǎng)絡(luò),也是兩個Network捆綁在一起進(jìn)行訓(xùn)練。
師傅:是的徒兒,這篇文章就是把Depth和Pose的Output合并在一起計算Loss。具體細(xì)節(jié)請聽為師娓娓道來~
2.1 View Synthesis與誤差函數(shù)的構(gòu)建
眾所周知,深度學(xué)習(xí)模型的關(guān)鍵就是Loss function,它類似于傳統(tǒng)SLAM中的最小二乘法問題,都是要尋找到一個全局最小殘差,從而使得模型最能夠接近于最優(yōu)解。
本文的Loss function用到了一個很強的假設(shè):
假設(shè):已有 t t t時刻圖像target image和每個像素對應(yīng)的深度, 以及target image相對上一 ( t ? 1 ) (t-1) (t?1)時刻圖像source幀相機位置的T。(transfomration matrix)
結(jié)論:若D, T均是正確完美的數(shù)值,則必定可以準(zhǔn)確地將targe image每一個像素點 p t對應(yīng)warp到上一幀source image中的 p s 位置。
這么說可能有些抽象,打個比方: “ t t t時刻圖像有一個艾菲爾鐵塔的尖尖,經(jīng)過Depth和T的warp變換后,我們可以得到上一 ( t ? 1 ) (t-1) (t?1)時刻在另一個角度拍攝的艾菲爾鐵塔的尖尖的pixel位置,那么它們兩個點圖像的亮度 (intensity) 應(yīng)該是一樣的”。
有了這個假設(shè)以后,我們的Loss就可以設(shè)為pixel intensity ( I I I)的差值之和:


2.2 Warping的數(shù)學(xué)模型
在上一節(jié)中使用的warping公式,具體含義如下:

p s??: pixel in source image
p t?: pixel in target image
K : camera intrinsics matrix
D ^ t??: Depth of a point, at time t t t
T ^ t ? > s??: Transformation matrix from target image to source image
除此以外,為了讓該公式能夠被神經(jīng)網(wǎng)絡(luò)訓(xùn)練,求出D和T,我們必須讓它可求導(dǎo) (differentiable)。
本文的做法是采用Spatial Transformer Networks [2]文章中的雙線性插值法 (biliner interpoltion),具體原理如下:

2.3 Explainability Mask & Regularization
2.1節(jié)中的監(jiān)督模型有一個很強的假設(shè),但現(xiàn)實世界;總是不盡如人意的,有以下三種特殊情況會打破之前的假設(shè):
場景中有移動物體
前后兩幀之家出現(xiàn)不連續(xù)性,如有物體被遮擋
Surface不符合Lambertian規(guī)律(不是理想散射)
因此,本文引入了一個Explainability Mask Network ( E ^ s??(?))來“馬賽克”移動物體,遮擋物體和不符合理想散射的平面。


除此以外,由于low-texture region和far from current estimation的緣故,我們在訓(xùn)練模型時容易進(jìn)入gradient locality (梯度局部性),簡單來說就是“訓(xùn)練不動了”。加入regularization因子可以有效地解決這點,最終我們可以得到一個loss function:

2.4 Network Architecture

注:本文采用了multi-scale side predictions,在四個layer的位置,生成了四張不同清晰度的predictions,具體效果估計是讓Loss更robust,對不同大小和清晰度的圖像都能兼容吧(個人觀點~)
3. Conclusion
總的來說,本文使用Unsupervised Learning獲得的Depth和Trajectory的效果均獲得了不遜色于傳統(tǒng)SLAM和基于Supervised-Learning的Depth Estimation的結(jié)果。并且,本文對于Trajectory估計的效果還要更勝一籌。
在實際工程中,基于深度學(xué)習(xí)得到的Depth和Ego-Motion可直接用于vSLAM或者3D reconstruction,并且可以實現(xiàn)全像素的追蹤,這一點和基于幾十幾百個稀疏的feature pixels的傳統(tǒng)SLAM是一個巨大的優(yōu)勢。
因為它可以獲得更加穩(wěn)定的Depth/Motion Estimation,并且可以拓展到魚眼攝像頭、全景攝像頭等不規(guī)則相機的SLAM。
(因為目前自動駕駛通常會使用魚眼相機來保證360度的周圍環(huán)境感知和深度測量,能夠通過文章[3] [4]來拓展本文的pin-hole方法,到Fisheye)
3.1 基于本文的拓展: Google AI 2019論文
在本文所介紹的[1]中,訓(xùn)練集是一個非常頭疼的問題。海量的數(shù)據(jù)就是模型準(zhǔn)確度提升的關(guān)鍵,但是網(wǎng)上存在的很多Wild Videos連相機模型都不一定有,更不用說內(nèi)參了。
Google 2019年的這篇論文[4]名為"Depth from videos in the wild",顧名思義,它基于[1]所作出的改進(jìn)就是在不需要已知Camera Instrinsics的情況下,可以同時估計Depth和Intrinsics。
3.2 基于本文的拓展: Toyota 2020論文
在本文所介紹的[1]中,只有針孔相機模型的intrinsics matrix是可以估計的,而其他Fisheye或者catadioptric相機由于intrinsics matrix的模型都不一樣。
(有各種radial distortion模型,所需的參數(shù)數(shù)量都不一樣)。
Toyota 2020的這篇論文[2]就在上兩篇論文的基礎(chǔ)上,記入了對所有相機類型的支持。
它不使用任何analytical (解析)模型,而是用network直接自己學(xué)習(xí)2D pixel 到 3D point的projection公式,因而不需要一個預(yù)設(shè)的,要估計的內(nèi)參模型。

4. Appendix
4.1 Experiment on Cityscapes and KITTI

4.2 Experiment on NYU depth and KITTI

4.3 Experiment on KITTI for Trajectory

Reference:
[1]?T. Zhou, M. Brown, N. Snavely and D. G. Lowe, “Unsupervised Learning of Depth and Ego-Motion from Video,” 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Honolulu, HI, USA, 2017, pp. 6612-6619, doi:10.1109/CVPR.2017.700.
[2]?M. Jaderberg, K. Simonyan, A. Zisserman, et al. Spatial transformer networks. In Advances in Neural Information Processing Systems, pages 2017–2025, 2015.
[3]?Vasiljevic, Igor & Guizilini, Vitor & Ambrus, Rares & Pillai, Sudeep & Burgard, Wolfram & Shakhnarovich, Greg & Gaidon, Adrien. (2020). Neural Ray Surfaces for Self-Supervised Learning of Depth and Ego-motion. 1-11. 10.1109/3DV50981.2020.00010.
[4]?A. Gordon, H. Li, R. Jonschkowski and A. Angelova, “Depth From Videos in the Wild: Unsupervised Monocular Depth Learning From Unknown Cameras,” 2019 IEEE/CVF International Conference on Computer Vision (ICCV), 2019, pp. 8976-8985, doi: 10.1109/ICCV.2019.00907.
作者介紹:夏唯桁,柏林工業(yè)大學(xué)碩士研究生,主要研究方向為自動駕駛和移動機器人的SLAM及運動規(guī)劃。目前在法國雷諾集團(tuán)擔(dān)任自動駕駛SLAM算法實習(xí)生。