How do neural networks see depth in single images?
作者:Tom van Dijk, Guido C.H.E. de Croon
一、摘要
Deep neural networks have lead to a breakthrough in depth estimation from single images. Recent work often focuses on the accuracy of the depth map, where an evaluation on a publicly available test set such as the KITTI vision benchmark is often the main result of the article. While such an evaluation shows how well neural networks can estimate depth, it does not show how they do this. To the best of our knowledge, no work currently exists that analyzes what these networks have learned.
In this work we take the MonoDepth network by Godard et al. and investigate what visual cues it exploits for depth estimation. We find that the network ignore the apparent size of known obstacles in favor of their vertical position in the image. Using the vertical position requires the camera pose to be known; however we find that MonoDepth only partially corrects for changes in camera pitch and roll and that these influence the estimated depth towards obstacles. We further show that MonoDepth’s use of the vertical image position allows it to estimate the distance towards arbitrary obstacles, even those not appearing in the training set, but that it requires a strong edge at the ground contact point of the object to do so. In future work we will investigate whether these observations also apply to other neural networks for monocular depth estimation.
二、介绍
- 当需要从相机图像估计深度时,一些方法将深度估计视为纯粹的几何问题,通常完全忽略图像中的内容信息(使用光流信息或者使用SLAM通过长时间跨度内组合图像对场景几何形状进行估计)
- 当只有单张图像可用时,不太可能使用对极几何,算法需要依赖图像线索
- 为什么知道神经网络学习了什么很重要?
- 在不知道网络做什么的情况下很难保证正确的行为
- 了解网络学到了什么可以为训练提供启示
- 它提供了对转移到其他设置的洞察
- 作者将神经网络看成一个黑盒,仅测量其对特定输入的反馈。通过修改或干扰图像,在产生的深度图中寻找相关性
三、相关工作
- 目前存在的神经网络评估方法有特征可视化和归因,虽然这些方法提供了对CNN工作的洞察,但它们并没有直接回答神经网络如何估计深度。神经网络敏感的特征集合并不是对其行为的解释
- 关于人类深度感知的文献提供了可用图像线索的洞察:位置、遮挡、纹理密度、线性透视、尺寸、阴影和照明、焦点模糊与空中视角。作者预估只有物体的位置与大小线索适用于KITTI数据集
- Epstein表明感知距离不仅取决于视野中的垂直距离,还取决于背景;另一个重要的背景特征是地平线;Ooi等人表明人类使用相对于”眼睛水平“的角偏角,而不是视地平线(视野中地平线的预期高度);物体的尺寸也会影响它们的估计深度
四、位置 VS. 尺寸
- 使用位置和尺寸这两个线索来估计与障碍物的深度示意图:

假设相机的焦距已知且固定,由神经网络隐式学习
- 给定物体在真实世界的大小和图像中的大小可以使用以下方法估计深度:
这需要物体的真实大小是已知的,而在KITTI数据集中经常遇到的对象类别有限且一个类中所有对象都有差不多的尺寸,因此网络可能已经学会识别这些物体并用尺寸来估计它们的深度
- 网络可以用物体与地面接触点的垂直图像位置来估计深度:
这种方法不需要任何关于物体真实大小的信息,而是假设存在一个平坦地面和固定或已知的相机姿态。这些假设在 KITTI 数据集中也同样有效
- 评价方法
生成三组测试图像:- 尺寸不同但与图像中地面接触点的垂直距离不变
- 垂直距离不同但尺寸保持不变
- 大小和位置都随距离而变化

- 结果:
- 当位置和尺度都可变时,深度估计表现符合预期
- 当只有垂直位置可变时,MonoDepth仍能估计目标的距离
- 当只有尺寸可变时,MonoDepth不会观察到任何距离变化
- 结论:
- MonoDepth主要依赖于物体的垂直位置而不是它们的尺寸
- 使用垂直位置意味着MonoDepth假设存在平坦的地面,并且相机的姿态已知
五、相机姿态是默认固定的还是即时估计的?
- 相机俯仰
- 判断依据:若MonoDepth可以测量相机俯仰情况,那么俯仰的变化也应该会在估计深度图中反映出来
- 评估方法:寻找图像中真实地平线与深度估计中估计地平线之间的相关性
- 实验结果:见下图,可以看出地平线的偏移并未完全反映在估计深度图中

- 进一步实验:为排除第一个实验中数据以及真实地平线小范围移动可能存在的问题,作者通过在不同高度裁剪图像来模拟更大的摄像机俯仰角,只用裁剪图像的深度估计出的地平线作为参考值。即实验评估地平线的偏移在深度估计中的反映程度,而不是地平线的绝对位置
- 实验结果:同第一个实验,地平线水平的偏移并未完全在深度估计反映出来,而且相机俯仰变化会干扰对物体的估计深度

- 相机转动
- 判断依据:同相机的俯仰角,若相机转动角变化,也应在估计深度图中反映出来
- 评估方法:以不同的角度裁剪图像中较小区域,然后从估计深度图中提取转动角度,寻找转动角与深度估计的相关性
- 实验结果:MonoDepth能够检测到相机的转动角,但是这个角度在生成的深度图中太小了。即相机的转动情况也同样未完全反映在深度图中

六、障碍物识别
第四部分得出MonoDepth使用物体的垂直距离来估计它们的距离,而这只需要知道物体与地面的接触点。然而下图显示出MonoDepth依赖与一些适用于车而不适用于其他物体的特征集合:

所以,为了正确估计出物体的深度,神经网络应能:
- 找到物体与地面的接触点
- 找到物体的轮廓
- 颜色和纹理
- 实验依据:上图车与其他物体颜色、纹理、形状信息不同
- 实验方法:
- 为测试颜色影响,生成两个新测试集,一个将图像转换成灰度图,另一个将色调和饱和度通道替换为语义RGB数据集的通道
- 为测试纹理影响,生成两个新测试集,一个将所有对象都替换为该对象类平均值的单一颜色,另一个将语义RGB数据集中的对象替换成不现实的单色
- 测试集样例:

- 实验结果:

如图所示可以看出与颜色信息相比,纹理信息影响会大一些
- 形状与对比度
- 实验一:将具有汽车纹理的三角形与具有均匀黑色纹理的三角形粘贴到图像中

实验表明物体不需要网络熟悉的纹理或形状就能被检测到,深度似乎是从物体最低点开始的,这也支持了基于垂直距离估计深度的说法 - 实验二:移除汽车的各个部分

实验表明神经网络基于物体底部和侧边对其进行填充 - 实验三:将本小节第一张图中未识别出来的物体底下添加阴影

实验表明添加阴影后之前未识别出来的物体也能够被识别出来,不过冰箱在深度图中只识别出下半部分
- 实验一:将具有汽车纹理的三角形与具有均匀黑色纹理的三角形粘贴到图像中
七、结论
- MonoDepth神经网络主要使用垂直距离而不是尺寸来估计深度信息
- 这种估计依赖于相机的姿态,但姿态改变并没有完全在深度图中显现
- MonoDepth可以检测出未出现在训练集的物体,但这取决于外部环境(例如阴影)且并不总是可信的