这是一篇有监督深度估计的文章。在2018年Kitti排行榜上Rank1
参考code (pytorch): https://github.com/dontLoveBugs/DORN_pytorch/
本文做出两方面的贡献:
- 将深度估计这个回归问题转化为多个离散的二分类问题。
- 使用ASPP网络融合多尺度信息
一、Spacing-Increasing Discretization
作者认为,在单目深度估计时,深度越远处,信息量会越少,因此深度大的地方,预测的误差变大的容忍度是比较高的。这可以通过减小对深度大的像素点的惩罚来实现。
下图中,第一行是回归的做法,预测一个在
间的浮点数作为深度。而二分类做法可以将
划分为
个间隔,对
个间隔进行二分类。
本文的二分类做法,为了减少对深度较远处的惩罚,将深度从均等分布转化到对数分布。从而使得
深度较远处的区分间隔较大 ,提高了容错。具体计算方式如下公式所示:
(提到
为
,个人认为有两方面有原因,一是因为代码在计算时,要计算在间隔左边还是右边,如果是
=0的情况,则左边没有意义。二是因为在SID公式中不能除0,但是这通常是加上一个小余量1e-8来解决,所以我认为+1的原因是前者,这样更容易理解。)在loss具体实现过程中,会对每个间隔的输出概率做二分类交叉熵计算。输出
为像素在第K个间隔处,深度值位于K的左边还是右边。
二、Scene Understanding Modular
场景理解模块,通过多个尺度的空洞卷积将不同尺度特征进行融合。
三、结果
本文是18年的方法,但结果完全吊打目前一系列自监督的方法。可见有监督方法还是远远优于自监督方法。
四、一些思考
- 本文考虑大深度值的容错性,将真实深度回归转换成分类问题然后映射到log空间。目前有论文提到采用预测视差的方式,即取深度的倒数,可以实现小深度值的稠密预测和大深度值的稀疏预测,这样可能更为简单。
- 而且目前回归问题,例如U-Net结构,也不存在文中所提到的采用FC层进行回归所产生巨大参数量的问题了。
- 本文采用ASPP module融合多尺度信息,这个现在也演变出很多方法可以融合多尺度信息。如 Deeplab / FPN / U-Net。