每天一篇论文 309/365 How do neural networks see depth in single images?

How do neural networks see depth in single images?

摘要

深度神经网络在单幅图像深度估计方面取得了突破性进展。最近的工作通常集中在深度图的准确性上,在深度图中,对公开可用的测试集(如KITTI vision基准)的评估通常是本文的主要结果。虽然这样的评估显示了神经网络对深度的估计有多好,但并不能说明它们是如何做到这一点的。据我们所知,目前还没有工作分析这些网络所学到的东西。在这项工作中,我们采取戈达尔等人的单深度网络。并研究它利用什么视觉线索进行深度估计。我们发现网络忽略了已知障碍物的明显大小,而忽略了它们在图像中的垂直位置。使用垂直位置需要知道摄像机的姿态;但是我们发现,单深度只对摄像机俯仰和侧倾的变化进行部分校正,并且这些影响到对障碍物的估计深度。我们进一步证明,MonoDepth使用垂直图像位置可以估计到任意障碍物的距离,甚至是那些没有出现在训练集中的障碍物,但是它需要在物体的地面接触点有一个很强的边缘。在未来的工作中,我们将研究这些观测值是否也适用于其他神经网络的单目深度估计。

贡献

方法

在这里插入图片描述

在上面这个图中,对实际场景做了一些简化。所有的大写字母代表的都是在3D世界中的实际坐标,小写字母代表的都是在相机成像平面上的像素坐标。f为相机的实际焦距,假设通过标定已知。

那么我们其实可以在图中找到两个和Z相关的相似三角形来恢复实际尺度:

第一个是h/H = f/Z,整理下可得到Z=Hf/h。

从上面公式可知,我们需要知道实际世界中的车宽(或车高),然后通过物体在图像中的像素高度即可换算出来实际物体的距离。直观上来理解,物体应该是近大远小的。

第二个是y/Y = f/Z,同理可得Z=Yf/y。

深度网络中融入H

那这些CNN深度估计的方法是靠什么样的线索来估计的呢?文中第一部分便是研究这个问题。作者使用了一个假的车通过变换大小和位置贴在一张真实的图片中来验证各个猜想。
在这种方法中,我们需要知道的是相机距离地面的安装高度以及在图像中车轮与地面接触点的纵坐标。直观上理解,如果我们在一条平直的路上,那么离我们越近的物体它的纵坐标应该越靠图像下方,越远的物体越靠图像上方。
在这里插入图片描述

第一行中,是按照正常的逻辑同时变换高度和大小,可见整体的预测是符合常理的。

在第二行中,贴图的时候只变化垂直方向上的位置,物体的大小没有进行缩放,可见随着放置纵坐标的变化物体的距离也有相应的变化。

但是在第三行中,保持物体的纵坐标不变,只是缩放大小,整个神经网络的输出其实相当一致,并没有剧烈变化。(都注意预测中白框内的结果即可,也就是车尾的距离)下面是一个定量的结果:
在这里插入图片描述
角度变换
在这里插入图片描述

深度估计中预测物体分类

可以看到,去掉颜色保留灰度,或者用一个假的颜色预测结果都还算合理。但是如果使用类平均的颜色或者是指定颜色,整个预测结果会受到非常大的影响。

这其实表明,虽然不需要显式地model语义信息,但是纹理对于深度预测仍然非常关键。

文中也进行了其他诸多实验去验证CNN对于未知物体以及轮廓的敏感性,这里就不再展开。只举一个我觉得很有趣的例子。如果我们在图上加入一些训练集中没有出现过的未知物体,不出意外,模型是完全无法感知到它们的存在。但是如果我们在这些物体下面加入一些阴影,那么模型突然就可以找出整个的物体。
在这里插入图片描述

结果

在这里插入图片描述

在这里插入图片描述

发布了132 篇原创文章 · 获赞 10 · 访问量 7740
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览