点击上方“视学算法”,选择“星标”公众号

重磅干货,第一时间送达

作者 王乃岩丨图森未来首席科学家
量子位获授权转载
原文链接: 
https://zhuanlan.zhihu.com/p/95758284

今天给大家带来一篇我很喜欢的风格的paper,详细分析了基于深度学习的单目深度估计算法的局限性。虽然这文章没有提出新的方法,但是对于我们理解CNN是如何学习到一些appearance cue来处理需要几何模型的视觉问题大有裨益。

首先,我们知道单目相机是没有办法恢复出来绝对尺度的,但是如果我们有实际的场景先验,这个问题是可以部分被解决的,在自动驾驶的场景中体现最为明显。简化的原理如下图:

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

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

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

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

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

在这种方法中,我们需要知道的是相机距离地面的安装高度以及在图像中车轮与地面接触点的纵坐标。直观上理解,如果我们在一条平直的路上,那么离我们越近的物体它的纵坐标应该越靠图像下方,越远的物体越靠图像上方。

(思考题:以上两种测距方式分别使用了什么样的先验知识?这些先验如果不成立的时候能有什么手段来放宽限制?回答得在点子上的同学可以获得我司最核心的Perception Fusion岗位的直接面试~ 欢迎私信我来~)

那这些CNN深度估计的方法是靠什么样的线索来估计的呢?文中第一部分便是研究这个问题。作者使用了一个假的车通过变换大小和位置贴在一张真实的图片中来验证各个猜想。

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

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

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

可见,scale only完全丧失了预测的能力,但是剩下的两种方式趋势仍然正确。

所以,本文的第一个结论便是,CNN其实是通过物体在图像中的纵坐标而不是物体的长宽来对物体测距的

这个结论说实话还挺反直觉的,文末谈了一些我个人的想法。

在第二部分中,作者探究了camera pose对于CNN深度估计算法的影响。理论上讲,一个鲁棒的算法应该对于camera pose的变化具有不变性。但是实际上并非如此。作者分别对pitch和roll角的扰动进行了分析。

首先对于pitch而言,作者可以通过robust fitting的办法通过预测出的深度图来得到地平线的位置,这个算法就不再详述。然后作者通过center crop的方式来模拟相机pitch角度的变化,第一点,可以看到CNN预测出的深度图是能够部分反映出地平线位置的变化的,但是和理想状况仍有差距。第二点,基于前面分析出CNN其实是通过物体接地点的纵坐标来计算深度的,所以毫不意外,在这样center crop的setting下,深度完全随着crop的位置而变化,但实际上场景并没有变化。

对于roll角也可以类似地做敏感度分析,最终结论是,CNN预测出深度图的roll角确实和GT有一定相关性,但是相对于pitch来说弱了很多。

第三部分,也是最有意思的部分,就是去验证CNN对于颜色和材质的不变性。

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

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

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

从这个小小的实验中,我们可以管窥CNN究竟是通过什么样的信息来识别物体,以及CNN是多么喜欢去找数据中的“捷径”来fit数据的。

说了这么多,这个文章也有几点我觉得可以继续深挖下去,包括:

1.在室内场景,如NYU Depth这样的数据集中,没有这样大面积的ground plane,CNN是如何估计出深度的?

2.在第一个分析实验中,既然CNN是通过车轮地面接触点的纵坐标来测距的,那么这个信息又是从哪里来的?网络结构基本是一个FCN,具有translation invariant的特点,那么理应不包括坐标信息。那是padding泄露了位置信息?还是通过车道线或者是其他的一些cue泄露了这个信息,这也是很有意思的一点。直观上来讲,物体的scale是CNN更容易捕捉的信息,但实际上并没有,这也就说明其实有一些CNN更直接可以利用的cue我们没有发现到。

3.既然CNN对于crop和rotation很敏感,那如果我们训练的时候使用了random crop和random rotation这样的data augmentation,那么CNN依赖的深度线索是否会有变化?

总结一下,现有基于CNN做深度估计的算法本质上还都是通过overfit场景中的某种信息来进行深度估计,整体来说这些方法其实并没有考虑到任何几何的限制,所以在不同场景下的泛化能力也比较弱。

如何能结合geometry方法和learning方法的优势是一个老生常谈的话题。

一方面这个问题可以被拆分成两部分,一部分通过几何的办法来完成不同位置相对深度的估计,另一部分通过一些场景先验或者数据驱动的办法来预测出绝对尺度,然后再融合这两者得到一个可靠鲁棒的深度估计。

另一方面,也许可以通过预测一些不变的物理量再结合上几何信息来得到最终的深度信息,例如某些特定车型的尺寸,车道线等信息。这个领域中仍然有大量open的问题有待解决。

论文传送门

How do neural networks see depth in single images?
作者:Tom van Dijk, Guido de Croon
Proceedings of the IEEE International Conference on Computer Vision. 2019.
https://arxiv.org/abs/1905.07005

- END -

如果看到这里,说明你喜欢这篇文章,请转发、点赞。扫描下方二维码或者微信搜索「perfect_iscas」,添加好友后即可获得10套程序员全栈课程+1000套PPT和简历模板向我私聊「进群」二字即可进入高质量交流群。

扫描二维码进群↓

在看 

CNN是靠什么线索学习到深度信息的?——一个经验性探索相关推荐

  1. 卷积神经网络CNN是靠什么线索学习到深度信息的?

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :量子位,王乃岩知乎 [人工 ...

  2. 深度学习backbone是什么意思_CNN是靠什么线索学习到深度信息的?——一个经验性探索...

    今天给大家带来一篇我很喜欢的风格的paper,详细分析了基于深度学习的单目深度估计算法的局限性.虽然这文章没有提出新的方法,但是对于我们理解CNN是如何学习到一些appearance cue来处理需要 ...

  3. 高德深度信息接入的平台化演进

    简介: 本文介绍了高德地图中POI深度信息接入在平台化过程中的一些思考和实践,从最开始的单体应用,随着业务发展面临挑战,从业务角度提出解决问题的思路和方案,进而转化成技术设计并落地实现的过程. 导读 ...

  4. 结构光之解相位求深度信息方法总结

    结构光利用相位信息进行三维重建,主要包括解相位和展开相位,利用展开的相位计算深度信息. 解相位,也称为相位提取,主要包括相移法,傅里叶变换解相,卷积法解相. (1)相移法 相移法主要是通过具有相移量的 ...

  5. 干货 | 如何使用 CNN 推理机在 IoT 设备上实现深度学习

    作者 | 唐洁 责编 | 何永灿 通过深度学习技术,物联网(IoT)设备能够得以解析非结构化的多媒体数据,智能地响应用户和环境事件,但是却伴随着苛刻的性能和功耗要求.本文作者探讨了两种方式以便将深度学 ...

  6. 如何使用CNN推理机在IoT设备上实现深度学习

    作者简介: 唐洁,华南理工大学计算机科学与工程学院副教授.主要从事面向无人驾驶和机器人的大数据计算与存储平台.面向人工智能的计算体系架构.面向机器视觉的嵌入式系统研究. 责编:何永灿(heyc@csd ...

  7. 深度学习 14. 深度学习调参,CNN参数调参,各个参数理解和说明以及调整的要领。underfitting和overfitting的理解,过拟合的解释。

    本文为原创文章转载必须注明本文出处以及附上 本文地址超链接以及 博主博客地址:http://blog.csdn.NET/qq_20259459  和 作者邮箱( jinweizhi93@gmai.co ...

  8. 从深度学习到深度森林方法(Python)

    作者 |泳鱼 来源 |算法进阶 一.深度森林的介绍 目前深度神经网络(DNN)做得好的几乎都是涉及图像视频(CV).自然语言处理(NLP)等的任务,都是典型的数值建模任务(在表格数据tabular d ...

  9. 从“几何深度学习”看深度学习江湖的统一

    2021-05-03 13:30:54 水木番 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你能想象某一天打开深度学习的词条,发现: 深度学习的江湖已经能够被统一了吗? 几何学上的对称性可以 ...

最新文章

  1. 這個日本味超濃的建築竟然是台灣的小學
  2. mysql报4934_mysql-Mariadb语法错误1064(42000)
  3. c++中运算符重载(加号运算,左移运算,前置后置++运算符,赋值运算,关系运算,函数运算)
  4. c语言如何输出一维数组字母,C语言一维数组初步学习笔记
  5. MySQL数据库性能优化之硬件瓶颈分析
  6. 学习 trajectory.txt
  7. element ui后台html_Github上10 个优秀的后台控制面板
  8. 在Covid-19期间测量社交距离
  9. DOP Dilution Of Precision;多点定位 Multilateration;测向交叉定位 三角定位;DAE;无人机
  10. Jinja2渲染的两种方式
  11. 垂直居中对齐四种样式
  12. 前端表单七牛云php,记录一下前端分片上传七牛云踩过的坑
  13. KPI、KPA、OKR
  14. skyline v6 三维学习软件
  15. 使用 React 和 Next.js 的微前端
  16. Arduino 多种按键模式下的检测
  17. kernel nf_conntrack: table full, dropping packet 解决办法
  18. 计算机一级考试ppt基本知识,计算机一级考试MS Office应试技巧指导
  19. 网店美工之详情页的神奇设计技巧
  20. 解决WINDOWS防火墙开启后Ping不通

热门文章

  1. 大数据时代,谁的眼神锁定你?
  2. 专访图灵奖得主John Hopcroft:中国必须提升本科教育水平,才能在AI领域赶上美国
  3. AI一分钟 | 特斯拉再融46亿;腾讯AI Lab宣布开源多标签图像数据集
  4. Google创始人公开信:AI暖春和黑暗面
  5. 想去Google做AI?先看完这套面试指南(附面试题)
  6. 资源 | Intel发布AI免费系列课程3部曲:机器学习基础、深度学习基础以及TensorFlow基础
  7. 能解决80%故障的排查思路
  8. Dubbo 和 HSF 在阿里的实践:携手走向下一代云原生微服务
  9. 一张900w的数据表,怎么把原先要花费17s执行的SQL优化到300ms?
  10. 面试必备:一个秒杀系统的设计思考