单目视觉深度估计测距的前生今世

作者 | 黄浴  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/56263560

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【深度估计】技术交流群

后台回复【深度估计综述】获取单目、双目深度估计等近5年内所有综述!

最近通过深度学习直接从单目摄像头的图像预测/估计深度图的方法成为一个应用的热点,惹来不少争议。

深度学习直接通过大数据的训练得到/调整一个深度NN模型的参数,在当今计算能力日新月异的平台(GPU/FPGA/ASIC/Muli-core)上实现了计算机视觉/语音识别/自然语言处理(NLP)等领域一些应用的突破。但是专家们还是对今后深度学习的发展有些期待和展望,比如

  • 非监督学习方法的引入减轻大数据标注的负担,比如GAN;

  • NN模型的压缩和精简以普及深度学习在移动终端甚至物联网终端的广泛应用;

  • 还有深度学习能够更多的引入人类知识和简单可靠的推理,以减少“暴力“学习的误差和错误,比如贝叶斯理论,知识图谱,逻辑推理,符号学习,多任务联合训练和迁移学习等等。

这里从单目深度估计在计算机视觉中的发展历程,特别是最近在采用深度学习NN模型的实验中,总结一下如何通过深度学习求解传统视觉问题,并从中发现可借鉴的地方。


深度估计问题在计算机视觉领域属于3-D重建的一部分,即Shape from X。这个X包括stereo, multiple view stereo, silhouette, motion (SfM, SLAM), focusing, hazing, shading, occlusion, texture, vanishing points, ...前面5个都是多图像的输入,从空间几何,时域变换和焦距变化的关系推导深度距离。剩下的都是单目的输入。

如果把图像模糊度建模,下图是图像边缘模糊的响应模型,那么单目图像也能估算深度,即shape from defocusing

a22427ebb94716e618fb423057770ced.png d91894ac3875a9a7914ff67a1b2dc28a.png

另外一个现象是大气散射 (Atmosphere scattering ) 造成的霾 (haze)提供了深度信息,即depth from haze,一般有天空被拍摄下来的图像,通过散射模型能够推断像素深度。这里给出的是图像亮度C和深度z之间计算的公式:C0是没有散射情况下的图像亮度值,S是天空的图像亮度值。

6f5662e9ef3c03850556098fef072b57.png 3c0477414dcb7ffce7222be4772da738.png

以上两个任务可认为是deconvolution问题,blind或者non-blind。

物体表面阴影的变化可以提供深度的信息,利用图像亮度和其中物体表面的形状之间的关系,即Shape from shading。和SFM一样,这是一个病态问题,需要附加约束条件,如物体表面的特性。SFS一般假设四种表面模型:纯Lambertian,纯镜面,混合和更复杂的模型。大部分情况下都是Lambertian,即均匀照明的表面从任何一个方向观察其亮度不变。其目标函数是一个积分,求解的算法比较复杂,类似有限元之类。

205ea557acb04318e7e0cedcd993d4f2.png 11c635d1b5d841e3d5e252e417e01ad6.png

纹理的变形提供了该纹理表面形状的线索。下图是一个示意流程图:

fc2e3b6a3e05ed01aec62f85aacf0feb.png

中间第三图是表面法向图,第四个才是深度图。纹理分割是必备的基础(估计是很难的一部分),此外求解这个shape from texture的优化问题,必须加上几个纹理元素(textels)约束条件:homogeneity,isotropy,stationary。

遮挡(occlusion)也是深度的一个线索,曲率(curvature)是其中的一个体现,即shape from curvature。isophote这个词指一种封闭的物体外轮廓,一般通过对图像灰度设门限可以得到,而它的曲率用来推导对应该门限的深度,见下图所示。门限在【0,255】范围变化就能得到最终叠加平均的深度图。分割仍然是一个求解遮挡的基础,要知道当时分割算法是计算机视觉很头疼的难题,俗称“chicken-and-egg"。

e0e71360a82eb729c406f3b211eafd8f.png

最后再说消失点,即某平面的一组平行线在透视投影下会聚的点。那么,它相应的平面就能得到深度图,如下图所示,在人工(特别室内)环境下可以推导深度图,沿着平行线的平面,靠近消失点的赋予大的深度值。该方法叫depth from geometrical perspective

93f78393ee108aa5694df1293fdd510a.png 95ef34bac4cb99f0446465cdaf0d9b73.png

顺便提一下,在3维电视热的时期(2008-2010年左右)大家希望把以前拍摄的单目视频变成立体视频,给3-D电视提供更多的内容,包括3-D显示技术的普及(比如红绿眼镜)大家也想在家里share一些3-D的UGC。这个技术被称为2D-to-3D,通过深度图估计和虚拟立体视觉假设可以生成立体视频,其绘制技术称为DIBR,如下图:

fb9b31ca0748e2698871bf0ff6a955d7.png

以上是典型的传统计算机视觉,需要加约束求解病态的优化问题。下面谈谈机器学习如何解决这个视觉问题:

最早看到用机器学习的方法是基于MRF的,把各种约束关系放在模型的data term和connectivity term求解。这是我看到Andrew Ng在计算机视觉方面的第一篇论文,发表在NIPS 2005年,当时他刚刚在斯坦福大学建立自己的研究组。

d0ad9c633fed4d484c2cf8c1882fca85.png

如果采用图像分割得到的super-pixels,可以得到更平滑的结果,该系统叫做Make3D。

6e6a862ce817ecd69aca0d0d22e903d4.png

值得一提的是,当时CMU的博士生Derek Hoiem(后来UIUC教授)也在研究如何从单目图像中提取出景物的3-D结构,只是他采用机器学习方法在图像分割基础上做了一个简单的语义分割,即“ground”, “sky”, 和 “vertical”标注像素,然后采用简单的平面billboard做纹理映射后变成“pop-up”的3-D景物:

b1f03e45b5bd8058411c32e61a704bed.png

还有一种方法是把深度图估计变成一个搜索问题,即假设相似图像具有相似深度图:论文“2d-to-3d image conversion by learning depth from examples“

042dda43420892b0a8657f3f15b20865.png

针对视频,可以利用optic flow做motion segmentation,那么修正上面的方法得到:微软论文“Depth Extraction from Video Using Non-parametric Sampling“

e0bf5bb27f93f002ad250a5d0644fbdc.png

另外一种改进是利用dictionary learning优化整个搜索过程:EBAY论文”Im2Depth: Scalable Exemplar Based Depth Transfer“

31de1027474dfeb729e52cc573490ed2.png

下面我们看看深度学习是如何做的。

首先就是“暴力”方法直接喂数据训练模型:2篇论文

bb21078e46cfc428392dd0b6e8fb27b7.png 26eb83e29fc9ff8099c1e3766d4e2ff9.png

有些方法开始考虑传统方法的结合,比如CRF:

b27f8f84890d505dbad86a376bd12797.png 2df087788512f53c5d12e5159e459324.png

随后,双目立体视觉的空间约束被用作无监督学习单目的深度估计:三篇论文

1ec08ac7716cf0730d2a570d78cd4040.png 5b1261d885cbcf8535510be819417236.png af3836b46c212486dd61ed384737b93c.png f738db5360a336f8baa55afc6ed25b82.png 69f0ffc70b31d0ac444b89caa823847e.png

自然地采用帧间运动为单目视频的深度估计提供帮助,实际上是双任务联合训练的例子:

c0a4373fb7f1d9acd43b89547fcc9d21.png d69fa066aa2fa2150d3f22716890159d.png 0aea58b0a896463e1f72b27ac93fcb5a.png

这是结合表面法向图的联合训练例子:GeoNet,Geometric Neural Network

b7870fa1af8225ba6cfbc1dc49559912.png 57419d72ee0c5b06d6c3bf3a9f728dd3.png c35a3dbde06f2d1feb3883677208b951.png

结合view synthesis也是利用几何约束和成像特性的工作:之前已经有文章直接通过Deep3D模型做单目到双目的合成,这里的工作只是最终结果是深度估计而不是图像。

1c60e3ff3dae904c2e5b5bafc7155820.png 2f06db66aa9579fbbd359510409d8000.png

这是结合运动和边缘信息的联合训练例子:

11a133624cbd4830d969254d4d2cf3de.png

这个工作延续了以前利用分割提高深度估计的想法,只是假设上attention机制:

db782b332f249238d6b98296dca8c862.png

CVPR18 商汤科技的工作:“GeoNet--Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose”,和光流,姿态一起估计了,还是无监督学习方法。

29d3d06330d563dc581ce1d33cb1c95e.png

谷歌最近的工作延续了camera motion的结合,同时加上了其中物体各自运动的信息:可以认为是将optic flow分成了camera ego motion和object motion的工作,和加入语义分割有类似的思路吧,文章发表在AAAI‘19.

f46e5bfc9bff531c5d827feef74c9ac3.png

总之,深度学习在这个计算机视觉的传统问题上一开始是暴力的数据学习方法,慢慢地加入了传统方法的约束和先验知识,一定程度上缓解了数据标注的压力(pixel级别的ground truth是个挑战性的工作,structured light带来的数据多半是室内的,激光雷达的数据也存在“黑洞”现象),同时设计新的loss function同时多任务联合训练都能提升模型算法的性能。

1参考文献

  • “Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Architecture“, 15

  • “Depth Map Prediction from a Single Image using a Multi-Scale Deep Network“, 15

  • “Towards Unified Depth and Semantic Prediction From a Single Image“, CVPR 15

  • “Deep Convolutional Neural Fields for Depth Estimation from a Single Image“, 2015 CVPR

  • “Deeper Depth Prediction with Fully Convolutional Residual Networks:, 3DV, 16

  • “SURGE: Surface Regularized Geometry Estimation from a Single Image“, NIPS 16

  • “Estimating Depth from Monocular Images as Classification Using Deep Fully Convolutional Residual Networks“,2016

  • “Single image depth estimation by dilated deep residual convolutional neural network and soft-weight-sum inference“,2017

  • “Depth and surface normal estimation from monocular images using regression on deep features and hierarchical CRFs“,2015 CVPR

  • “Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue“,2016 ECCV

  • “Unsupervised Monocular Depth Estimation with Left-Right Consistency“ 2017 CVPR

  • “Semi-Supervised Deep Learning for Monocular Depth Map Prediction“ 2017 CVPR

  • “Multi-Scale Continuous CRFs as Sequential Deep Networks for Monocular Depth Estimation “,2017 CVPR

  • “Unsupervised Learning of Depth and Ego-Motion from Video“,CVPR 2017

  • “Single View Stereo Matching“,2018

  • “Deep Ordinal Regression Network for Monocular Depth Estimation“, CVPR18

  • “Look Deeper into Depth: Monocular Depth Estimation with Semantic Booster and Attention-Driven Loss“, ECCV‘18

  • ”Learning Depth from Monocular Videos using Direct Methods“,CVPR 18

  • “Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos“, 2018

  • “GeoNet: Geometric Neural Network“, CVPR 18

  • “GeoNet--Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose“, CVPR18

  • “LEGO: Learning Edge with Geometry all at Once by Watching Videos“, AAAI,19

20e81b66a52a9b5b558532482ba99316.png

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;

2464012dd512bda4c597835cdb3d4ace.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值