天天看点

Learning Depth from Monocular Videos using Direct Methods 论文阅读 #paper reading

单目相机的深度估计一直是领域的研究热点,之前的做法普遍是两个CNN分支分别预测pose和depth,然后互相约束。本文的贡献,主要是在没有pose CNN的分支的情况下,完成了pose+depth的预测,同时验证了pose CNN完全是没有必要的。

文章指出,当前(似乎是2017年左右)单目视觉的主要问题就在于 1)未知的相机姿态;2) ambiguity in scale,个人理解的是尺度的问题,物体到底有多大,场景的规模如何,也就是单目视觉中物体的具体3D信息问题。之前的大部分方法,都仅仅是加了一个额外的camera pose estimation的网络,但这并没有充分解决scale的问题。并且文章甚至还指出,这个额外的pose估计网络其实是根本不需要的。因此提出了某种在SLAM领域比较常见的测距方法来进行pose estimation。

本文的主要贡献:1)证明了为什么单目图片中存在ambiguity in scale的问题,也就是训练过程中往往使用的是归一化的深度,而不是具体的深度。借鉴SLAM中直接视觉测距的方式,提出了一种归一化的策略,来解决上述问题。2)因为pose CNN是没有太大意义的,所以直接把DVO整合进文中的框架,提出了一个可微的DDVO模型,文章也是给出了DDVO的三点好处,但是并不是太了解这个模型,所以暂时没有很看懂。

本文希望去做的,就是利用一个网络模型,输入一张图片,直接输出图片的深度图(正常深度,或者拟深度,这两个可以互相转换)。之前的SFM方式,都是通过如下的损失函数来优化模型:

Learning Depth from Monocular Videos using Direct Methods 论文阅读 #paper reading

公式(1)的意思是利用SFM架构,使用光度不变性,和深度连续性约束,来计算出Deep和pose,公式(2)是用CNN网络预测出的深度值,和公式(1)计算出的深度值做loss。

文章表示这种方式表现出了一定的有效性,但是却不是最优的,公式(1)和(2)的loss似乎并不是互相作用的,有的时候公式(2)中的loss减小了,(1)中的loss并没有减小。所以将公式(1)最小化才是重中之重,文章也直接舍弃了公式(2)的loss,仅采用(1)中的约束。同时,在公式(1)中加入了一些自己的创新:

Learning Depth from Monocular Videos using Direct Methods 论文阅读 #paper reading

将公式中的pose,用一个辅助的pose预测函数代替,这个预测函数是通过原图,与预测出的深度共同完成的,最终的loss如下图:

Learning Depth from Monocular Videos using Direct Methods 论文阅读 #paper reading

可以看到loss已经完全摆脱了对pose预测网络的依赖。

围绕这个公式,引出了文章的一些讨论:

1、尺度模糊的问题

尺度模糊的问题,对于单目视觉始终是存在的,两幅个尺度不同的照片,在视觉上来说可能完全一致。当然,尺度越小意味着离相机越近,那么上述公式(6)的后半部分,也就是约束深度连续的loss就会越小。所以只要想让上述loss变小,把尺度不断变小,直到深度为0,那么上述loss就会不断变小。

本文是如何解决的呢?其实很简单,就是对每一次的深度都进行一次归一化,让每次的深度在尺度上下限保持不变。(这个是有道理的,因为绝大部分照片,都会有无限远处和无限近处)

2、pose姿态预测模块

相机的pose预测,之前的文章都是利用一个单独的pose预测CNN网络来进行的。本文表示现有的一个研究direct visual odometry (DVO)已经表明深度和相机pose存在着强关联。

(DVO不太了解,先放在这里,似乎就是视图合成的一种,只不过文章使用的是深度的视图合成)

要使用DVO,就需要求DVO的导数。根据链式法则,公式(6)中的导数:

Learning Depth from Monocular Videos using Direct Methods 论文阅读 #paper reading

上式就是需要反传的内容,既包括了预测出的深度,也包括了pose。所以可以看出深度和pose的预测是强相关的,文章也表示因此没有必要再去用一个额外的分支来预测pose。

最终,整体的loss就是,视图合成的loss,加上深度连续性的loss,公式如下图:

Learning Depth from Monocular Videos using Direct Methods 论文阅读 #paper reading

公式中的数字3是指3个尺度,作者对网络中的三个尺度的特征都进行了loss计算,其中深度连续性的loss还考虑了边缘的像素,进行了不同权重的计算,具体可以参考论文第四章最后一部分。

总的来说,这篇论文没有完全读懂…主要是对pose和depth的转换计算没有太明白,DVO的部分,还有论文里相关部分的那些计算公式,罗德里格斯公式等等,都不熟悉。这几天我跑一下论文的代码,好好研究一下,后面再更新吧。

继续阅读