这是一篇有监督深度估计的文章。在2018年Kitti排行榜上Rank1

参考code (pytorch):  https://github.com/dontLoveBugs/DORN_pytorch/

本文做出两方面的贡献:

  • 将深度估计这个回归问题转化为多个离散的二分类问题。
  • 使用ASPP网络融合多尺度信息

一、Spacing-Increasing Discretization

作者认为,在单目深度估计时,深度越远处,信息量会越少,因此深度大的地方,预测的误差变大的容忍度是比较高的。这可以通过减小对深度大的像素点的惩罚来实现。

下图中,第一行是回归的做法,预测一个在

深度学习数据集不够怎么办 深度估计数据集_深度估计

 间的浮点数作为深度。而二分类做法可以将

深度学习数据集不够怎么办 深度估计数据集_深度估计

 划分为

深度学习数据集不够怎么办 深度估计数据集_深度学习_03

 个间隔,对

深度学习数据集不够怎么办 深度估计数据集_深度学习_03

 个间隔进行二分类。 

深度学习数据集不够怎么办 深度估计数据集_深度估计_05

本文的二分类做法,为了减少对深度较远处的惩罚,将深度从均等分布转化到对数分布。从而使得

深度较远处的区分间隔较大 ,提高了容错。具体计算方式如下公式所示:

深度学习数据集不够怎么办 深度估计数据集_深度学习数据集不够怎么办_06

(提到

深度学习数据集不够怎么办 深度估计数据集_深度学习数据集不够怎么办_07


深度学习数据集不够怎么办 深度估计数据集_机器学习_08

,个人认为有两方面有原因,一是因为代码在计算时,要计算在间隔左边还是右边,如果是

深度学习数据集不够怎么办 深度估计数据集_深度估计_09

=0的情况,则左边没有意义。二是因为在SID公式中不能除0,但是这通常是加上一个小余量1e-8来解决,所以我认为+1的原因是前者,这样更容易理解。)在loss具体实现过程中,会对每个间隔的输出概率做二分类交叉熵计算。输出

深度学习数据集不够怎么办 深度估计数据集_机器学习_10

为像素在第K个间隔处,深度值位于K的左边还是右边。

深度学习数据集不够怎么办 深度估计数据集_人工智能_11

 

深度学习数据集不够怎么办 深度估计数据集_深度估计_12

二、Scene Understanding Modular

深度学习数据集不够怎么办 深度估计数据集_深度学习数据集不够怎么办_13

场景理解模块,通过多个尺度的空洞卷积将不同尺度特征进行融合。

 

三、结果

本文是18年的方法,但结果完全吊打目前一系列自监督的方法。可见有监督方法还是远远优于自监督方法。

深度学习数据集不够怎么办 深度估计数据集_深度学习_14

四、一些思考

  • 本文考虑大深度值的容错性,将真实深度回归转换成分类问题然后映射到log空间。目前有论文提到采用预测视差的方式,即取深度的倒数,可以实现小深度值的稠密预测和大深度值的稀疏预测,这样可能更为简单。
  • 而且目前回归问题,例如U-Net结构,也不存在文中所提到的采用FC层进行回归所产生巨大参数量的问题了。
  • 本文采用ASPP module融合多尺度信息,这个现在也演变出很多方法可以融合多尺度信息。如 Deeplab / FPN / U-Net。