本文是对文章《UnsupervisedLearningofDepthandEgo-MotionfromVideo》的解读。
Figure1.深度图和Ground-Truth[1]
Figure2.AbsoluteTrajectoryError(ATE)onKITTIdataset[1]
1.概述
1.1为什么要讲这篇文章?
在无人驾驶、3D重建和AR三个领域中,对于周围环境物体的深度(Depth)和对自身位置的估计(StateEstimation)一直是一个非常棘手而复杂的问题。
过去常用的方法,传统的SLAM,通常用非常繁琐的数学公式和基于特征点/直接法的方法来进行轨迹估算,而深度通常用单目视觉(多态几何),双目视觉,激光雷达来进行估计。
但传统方法通常只能进行稀疏的特征点(Features),进行深度估计和自身姿态估计,而不能利用所有pixel,而这对于自动驾驶领域中
重建高精地图
和AR领域中的
室内环境感知
来说就会导致信息的缺失。
1.2这篇文章提出了什么新方法?
这篇文章主要提出了一种基于无监督深度学习的单目视觉的深度和自身运动轨迹估计的深度神经模型。
它的新颖之处在于:
提出了一种堪称经典的:depthnetwork和ego-motionnetwork共同训练的架构模式。(因此这篇文章可以说是最2年基于深度学习的depthestimation的祖师爷,Google和Toyota的最新论文都借鉴了它的训练模式)
,不丢失任何场景信息。
深度估计比肩传统SLAM,自身轨迹估计优于传统SLAM。
它在工程之中的应用价值:
高境地图重建(自动驾驶车,移动机器人)
3D视觉效果重建
AR/VR定位
2.文章核心
简单来说,这篇文章的核心就是下图中的两CNN,DepthCNN和PoseCNN绑定在一起通过ViewSynthesis进行训练。
具体来说,通过把TargetImage(
I
t)中每一个pixel都按下图的公式给warp到SourceImage(It−1或It+1)中,计算Pixel-Wise的intensityerror:
Figure3.Depth/PosenNtwork共同训练的模式[1]
大师兄:看到这里,俺老孙就想到了当年GAN,也是两个Network捆绑在一起进行训练。
师傅:是的徒儿,这篇文章就是把Depth和Pose的Output合并在一起计算Loss。具体细节请听为师娓娓道来~
2.1ViewSynthesis与误差函数的构建
众所周知,深度学习模型的关键就是Lossfunction,它类似于传统SLAM中的最小二乘法问题,都是要寻找到一个全局最小残差,从而使得模型最能够接近于最优解。
本文的Lossfunction用到了一个很强的假设:
假设:
已有ttttargetimage和每个像素对应的深度,以及targetimage相对上一(t−1)(t-1)(t−1)source帧相机位置的T。(transfomrationmatrix)
结论:
若D,T均是正确完美的数值,则必定可以准确地将targeimage每一个像素点pt对应warp到上一帧sourceimage中的ps位置。
这么说可能有些抽象,打个比方:“ttt塔的尖尖,经过Depth和T的warp变换后,我们可以得到上一(t−1)(t-1)(t−1)艾菲尔铁塔的尖尖的pixel位置,那么它们两个点图像的亮度(intensity)应该是一样的”。
有了这个假设以后,我们的Loss就可以设为pixelintensity(III)的差值之和:
Figure4.Warping[1]
2.2Warping的数学模型
在上一节中使用的warping公式,具体含义如下:
ps:pixelinsourceimage
pt:pixelintargetimage
K:cameraintrinsicsmatrix
D^t:Depthofapoint,attimettt
T^t−s:Transformationmatrixfromtargetimagetosourceimage
除此以外,为了让该公式,求出D和T,我们必须让它可求导(differentiable)。
本文的做法是采用SpatialTransformerNetworks[2]文章中的双线性插值法(bilinerinterpoltion),具体原理如下:
Figure5.bilinearinterpoltion[2]
2.3ExplainabilityMask&Regularization
2.1节中的监督模型有一个很强的假设,但现实世界;总是不尽如人意的,有以下三种特殊情况会打破之前的假设:
场景中有移动物体
前后两帧之家出现不连续性,如有物体被遮挡
Surface不符合Lambertian规律(不是理想散射)
因此,本文引入了一个ExplainabilityMaskNetwork(E^s(⋅))来“马赛克”移动物体,遮挡物体和不符合理想散射的平面。
Figure6.ExplainabilityMaskNetwork[1]
除此以外,由于low-textureregion和farfromcurrentestimation的缘故,我们gradientlocality(梯度局部性),简单来说就是“训练不动了”。加入regularization因子可以有效地解决这点,最终我们可以得到一个lossfunction:
2.4NetworkArchitecture
Figure7.NetworkArchitecture[1]
注:本文采用了multi-scalesidepredictions,在四个layer的位置,生成了四张不同清晰度的predictions,具体效果估计是让Loss更robust,对不同大小和清晰度的图像都能兼容吧(个人观点~)
3.Conclusion
总的来说,本文使用UnsupervisedLearning获得的Depth和Trajectory的效果均获得了不逊色于传统SLAM和基于Supervised-Learning的DepthEstimation的结果。并且,本文对于Trajectory估计的效果还要更胜一筹。
在实际工程中,基于深度学习得到的Depth和Ego-Motion可直接用于vSLAM或者3Dreconstruction,并且可以实现
全像素
的追踪,这一点和基于几十几百个稀疏的featurepixels的传统SLAM是一个巨大的优势。
因为它可以获得更加稳定的Depth/MotionEstimation,并且可以拓展到鱼眼摄像头、全景摄像头等不规则相机的SLAM。
(因为目前自动驾驶通常会使用鱼眼相机来保证360度的周围环境感知和深度测量,能够通过文章[3][4]来拓展本文的pin-hole方法,到Fisheye)
3.1基于本文的拓展:GoogleAI2019论文
在本文所介绍的[1]中,训练集是一个非常头疼的问题。海量的数据就是模型准确度提升的关键,WildVideos连相机模型都不一定有,更不用说内参了。
Google2019年的这篇论文[4]名为Depthfromvideosinthewild,顾名思义,它基于[1]所作出的改进就是在不需要已知CameraInstrinsics的情况下,Depth和Intrinsics。
3.2基于本文的拓展:Toyota2020论文
在本文所介绍的[1]中,只有针孔相机模型的intrinsicsmatrix是可以估计的,而其他Fisheye或者catadioptric相机由于intrinsicsmatrix的模型都不一样。
(有各种radialdistortion模型,所需的参数数量都不一样)。
Toyota2020的这篇论文[2]就在上两篇论文的基础上,记入了对所有相机类型的支持。
它不使用任何analytical(解析)模型,而是用network直接自己学习2Dpixel到3Dpoint的projection公式,因而不需要一个预设的,要估计的内参模型。
Figure8.Toyota的最新论文基于本文的方法拓展到了所有异型相机的DepthEstimation[3]
4.Appendix
4.1ExperimentonCityscapesandKITTI
Figure9.DepthPredictionResults[1]
4.2ExperimentonNYUdepthandKITTI
Figure10.DepthPredictionResults[1]
4.3ExperimentonKITTIforTrajectory
Figure11.Ego-MotionPredictionResults[1]
Reference:
[1]
T.Zhou,M.Brown,N.SnavelyandD.G.Lowe,“UnsupervisedLearningofDepthandEgo-MotionfromVideo,”2017IEEEConferenceonComputerVisionandPatternRecognition(CVPR),Honolulu,HI,USA,2017,pp.6612-6619,doi:10.1109/
[2]
M.Jaderberg,K.Simonyan,A.Zisserman,etal.Spatialtransformernetworks.InAdvancesinNeuralInformationProcessingSystems,pages2017–2025,2015.
[3]
Vasiljevic,Igor&Guizilini,Vitor&Ambrus,Rares&Pillai,Sudeep&Burgard,Wolfram&Shakhnarovich,Greg&Gaidon,Adrien.(2020).NeuralRaySurfacesforSelf-SupervisedLearningofDepthandEgo-motion.1-11.10.1109/3
[4]
A.Gordon,H.Li,R.JonschkowskiandA.Angelova,“DepthFromVideosintheWild:UnsupervisedMonocularDepthLearningFromUnknownCameras,”2019IEEE/CVFInternationalConferenceonComputerVision(ICCV),2019,pp.8976-8985,doi:10.1109/
夏唯桁,柏林工业大学硕士研究生,主要研究方向为自动驾驶和移动机器人的SLAM及运动规划。目前在法国雷诺集团担任自动驾驶SLAM算法实习生。