Visualization of Convolutional Neural Networksfor Monocular Depth Estimation
作者:Junjie Hu, Yan Zhang, Takayuki Okatani
一、摘要
Recently, convolutional neural networks (CNNs) have shown great success on the task of monocular depth estimation. A fundamental yet unanswered question is: how CNNs can infer depth from a single image. Toward answering this question, we consider visualization of inference of a CNN by identifying relevant pixels of an input image to depth estimation. We formulate it as an optimization problem of identifying the smallest number of image pixels from which the CNN can estimate a depth map with the minimum difference from the estimate from the entire image. To cope with a difficulty with optimization through a deep CNN, we propose to use another network to predict those relevant image pixels in a forward computation. In our experiments, we first show the effectiveness of this approach, and then apply it to different depth estimation networks on indoor and out-door scene datasets. The results provide several findings that help exploration of the above question.
二、介绍
- CNN如何从单目图像进行深度估计在很大程度上还是未知的,这会成为这种方法在实际应用中的阻碍
- 一种想法是人类视觉观察到的大多数线索都被认为与视野中的小区域有关
- 通过实验可以确认:
- CNN可以仅从输入图像中的一组稀疏像素中推断出深度图,其准确度与从整个图像中推断出的准确度相似
- 选择相关像素的掩码可以由CNN稳定地预测出来。训练这个CNN用于预测目标CNN的掩码以进行深度估计
- 可视化结果提供了以下几个发现:
- CNN只利用图像中的部分边缘,这些边缘的重要性更取决于它们对捕获场景几何的用处
- 对于户外场景,场景消失点周围的远处区域会被赋予较大的权重
三、 相关工作
- 基于梯度(图像梯度)的方法计算一个显著图,它将每个像素对最终预测的敏感性可视化
- LIME(Local Interpretable Model-Agnostic Explanations),一种解释机器学习模型的方法
- CAM(Class Activation Mapping),类激活映射
四、 方法
问题制定
-
人类视觉被认为是使用多种线索来推断深度信息的,其中大部分与视野中小区域相关。所以作者做出假设:只要这些像素与深度估计有关,CNN从一组选定的稀疏像素中也同样能推断出深度图
-
使用一个二元掩码对输入进行掩码操作,放宽二元掩码的条件,允许再[0, 1]范围内具有连续值,将问题表述为优化问题:
其中是和之间差异的度量;是稀疏度的控制参数;是像素数量;是的范数
-
模型结构:

学习预测掩码
-
使用额外的网络来预测,所以优化问题变为:
其中表示的范数
-
作者考虑尽可能多地移除不重要的像素,同时最大程度维持原始预测。还有另一种识别输入中重要像素的方法:
五、实验
实验设置
- 数据集
由于数据集仅提供稀疏深度图,所以使用NYUv2数据集的深度补全工具箱来插入缺失深度的像素 - 目标CNN模型
- 基于ResNet-50的编码器-解码器结构网络
- 基于ResNet-50,DenseNet-161和SENet-154的骨干网络
- :使用最广泛的一种测量深度值的损失
- :场景表面的梯度差异损失
- :法线与场景表面的方向差异损失
其中,,,是由真实深度图和估计深度图计算出的表面法线之间的角度
- 用于预测的网络
- 网络也是编码器-解码器结构,其中编码器使用DRN(dilated residual network);解码器使用包含3个上采样模块其后接一个卷积层的网络
- loss:
从稀疏像素中估计深度信息
- 评估不同稀疏参数对深度估计准确率的影响:

- 比较不同,不同以及不同估计深度图组合对的示例:

预测掩码分析
- NYU-v2数据集
不同输入图像和不同深度预测网络的预测掩码:
- 可以看出不同网络之间只有微小的差别,这将证明可视化方法可以稳定地识别相关像素以进行深度估计
- 倾向于在图像边缘上有非零值,不过它倾向于在对象的填充区域上有非零像素,而不是在它们的边界上
- 一些明显的图像边缘有时会在中消失,而一些模糊的边缘却有较大的值
- 比较与边缘图对预测影响:

可以看出使用产生的深度估计精度更高
- KITTI数据集
不同输入图像和不同深度预测网络的预测掩码:
- 与NYU-v2数据集一样,预测掩码倾向于保留边缘和填充区域,并且与边缘图明显不同
- 场景中消失点周围的区域在预测的掩码中被明显突出出来,且数据集中的所有图像都是这种现象
- 总结与讨论
- 重要/不重要的图像边缘:网络选择深度估计所需的重要边缘并且选择似乎与边缘的强度无关(我们推测所选的那些边缘对于推断 3D 结构是必不可少的)
- 关注对象内部的区域:对于较小的对象,这种情况更常见,尽管可能有一部分稀疏约束的原因(我们推测网络可以“识别”对象并使用它们的大小来推断与它们的绝对或相对距离)
- 消失点:消失点周围的区域(或简单的远处区域)总是几乎无一例外地突出显示,这说明这些区域对提供准确的深度很重要(这可能由于损失函数评估绝对深度的差异,远处的场景点往往会产生较大的误差,就会被赋予更多的权重;也可能是由于消失点是理解场景集合的重要线索)
训练损失函数评估
-
三种损失函数组合的估计掩码比较:

可以看出更加注重物体表面,进一步添加则会更注重小物体并且使边缘更笔直(当它们本应笔直时)
总结与结论
-
本篇论文通过可视化方法来探究CNN如何从单目图像中推断场景深度
-
将问题表述为一个优化问题:选择最少的像素,CNN从中估计出的深度图与它从整张图象中估计出的差异最小。由于直接通过CNN进行优化存在困难,于是使用额外的网络来预测输入图像的掩码
-
实验结果提供几个发现:
- CNN似乎是根据场景几何推理的重要性而不是像素的强度来选择像素
- CNN不仅关注边界而且还关注每个对象内部区域
- 消失点周围的图像区域对户外场景深度估计的重要性
-
文章方法还可用于可视化不同损失函数深度估计CNN的效果