单目深度估计思路

一、依靠深度学习和网络架构输出结果

  1. 引用最多、最早的是Eigen组的两篇文章,相对于简单粗暴的使用卷积神经网络回归来得到结果,主要卖点是采用Multi-scale的卷积网络结构(2015年):
  • Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Architecture
  • Depth Map Prediction from a Single Image using a Multi-Scale Deep Network

2. 之后在2016年,Laina依靠更深层次的网络和一个“novel”的逆卷积结构再加上一个"novel"的loss来得到结果。其实我认为这篇文章的贡献点不是很大,主要是pretrain的ResNet-50帮了很大的忙。这个方法被他们组改进然后用到了之后CVPR2017用来重建SLAM的文章中。

  • Deeper Depth Prediction with Fully Convolutional Residual Networks (3DV 2016)
  • CNN-SLAM: Real-time dense monocular SLAM with learned depth prediction(2017 CVPR)

二、 依靠于深度信息本身的性质

  1. 深度信息和语义分割信息具有很强的相关性:场景中语义分割信息相似的物体所拥有的深度信息是相似的。
  • Towards Unified Depth and Semantic Prediction From a Single Image (CVPR 2015)

之后接下来又有文章试图去做了语义分割和深度信息的升级版:除了语义分割信息有没有其他信息和深度信息也相似的?

  • SURGE: Surface Regularized Geometry Estimation from a Single Image(NIPS 2016)

2. 深度信息本就是一个从远到近一层一层的分类,是不是把预测深度当做一个分类问题更好解一点,搜文章的时候搜到了这两篇用到了这个思路:

  • Estimating Depth from Monocular Images as Classification Using Deep Fully Convolutional Residual Networks
  • Single image depth estimation by dilated deep residual convolutional neural network and soft-weight-sum inference

三、基于CRF的方法

CRF之前一直在语义分割问题上表现的很好,包括CRFasRNN,DeepLab等等,几乎成为了这种回归问题的标配。这一类的方法采用CRF是因为通常CNN用来做回归时产生的图都比较糊(blur), CRF可以通过条件概率建模的方法将糊的图片变得不糊。这是一种纯数学解决问题的方法,与深度信息本身的物理性质关系不大。

  • Deep Convolutional Neural Fields for Depth Estimation from a Single Image(2015 CVPR)
  • Depth and surface normal estimation from monocular images using regression on deep features and hierarchical CRFs(2015 CVPR)
  • Multi-Scale Continuous CRFs as Sequential Deep Networks for Monocular Depth Estimation (2017 CVPR)

四、基于相对深度

接下来介绍的这一类是我觉得最有意思的一个方法。 总的来说就是利用了深度信息的基本特征:图片中的点与点之间的是有相对远近关系的。NIPS2016这篇文章自己构建了一个相对深度的数据库,每张图片之中仅仅标注两个随机点之间的相对远近关系,通过一个神经网络的训练就能得到原图之中的相对深度信息。而且,一般的方法通常是针对某个数据库的数据范围的(NYUv2用来做室内深度预测,深度的ground truth 是 0~10m,KITTI用来处理行车道路信息,深度的ground truth 是 0~70m),这篇文章的深度是没有这种限制的。这篇文章得到的深度信息感觉是很amazing的一件事,为这篇文章打call! 但是缺点也很明显,由于是相对深度信息仅仅得到的数据表示了当前图片中物体的远近关系和真实深度信息有很大的区别。

  • Single-Image Depth Perception in the Wild (NIPS2016)

五、非监督学习

所谓使用非监督学习来训练就是利用不知道ground truth的输入图片训练来得到深度信息。既然没有深度的ground truth那肯定有来自于其他地方的约束,比如使用stereo image。stereo image是来自两个相机(或者双目相机)在同一水平线上左右相距一定位置得到的两幅图片。这种图片获取的代价要比深度的ground truth 低一些。 这些方法利用了深度信息和场景之间的一些物理规律来约束,感觉得到了很不错的结果,这三个方法可以说是一脉相承。

  • 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)

六、其它

基于视频序列的单目深度估计

Unsupervised Learning of Depth and Ego-Motion from Video

这种无监督的方法的输出是尺度模糊的 , 所以并不能得到真实的 depth,在 SLAM 的相关实验中加入了一个 scale factor。

代码:people.eecs.berkeley.edu

发布于 2018-10-21 14:29