Sparsity Invariant CNNs
Abstract
本文研究稀疏输入下的卷积神经网络,并将其应用于稀疏的激光扫描数据的深度信息完成实验。首先,我们表明,即使当丢失数据的位置提供给网络时,传统卷积网络在应用于稀疏数据时性能也很差。为了克服这个问题,我们提出了一个简单而有效的稀疏卷积层,它在卷积运算中明确地考虑了丢失数据的位置。
我们在各种baseline方法的合成和实际实验中证明了所提出的网络架构的好处。与密集型的baseline相比,提出的稀疏卷积网络可以很好地推广到新的数据集,并且对于数据稀疏性水平是不变的。
对于我们的评估,我们从KITTI banecmark中推导出一个新的数据集,其中包含超过94k深度注释(depth annotated)的RGB图像。我们的数据集允许在具有挑战性的现实世界中对深度完成和深度预测技术进行培训和评估,并可通过以下网址在线获取:www.cvlibs.net/datasets/kitti。
1.Introduction
在过去几年中,卷积神经网络(CNN)几乎影响了计算机视觉的所有领域。在大多数情况下,CNN的输入是一个图像或视频,由人口稠密的矩阵或张量表示。通过将卷积层与非线性层和汇聚层相结合,CNN能够学习分布式表示,提取第一层中的低层特征,然后在后续层中依次提供更高层次的特征。然而,当网络的输入是稀疏和不规则的(例如,当只有10%的像素携带信息时),对于每个滤波器位置应如何定义卷积运算变得不太清楚,输入的数量和位置会发生变化。
解决这个问题的一个简单的方法是给所有无信息的位置分配一个默认值[3,32]。不幸的是,这种方法将导致次优的结果,因为学习过滤器必须对所有可能的激活模式保持不变,其数量随着过滤器尺寸呈指数增长。
在本文中,我们调查了一个简单而有效的解决方案,该方法胜过了naive approach and several other baselines。 特别是,我们引入了一个新的稀疏卷积层,它根据输入像素的有效性对卷积核的元素进行加权。另外,第二个stream将关于像素的有效性的信息传送给网络的后续层。
这使我们的方法能够处理大量的稀疏性数据,而不会显着降低准确性。
重要的是,我们的表示对输入的稀疏程度是不变的。正如我们的实验所证明的那样,在稀疏水平上训练我们的网络与测试中的稀疏水平不同,并不会显着恶化结果。这具有重要的应用,例如,在机器人技术中,算法必须对传感器配置的变化具有鲁棒性。
所提出的技术的一个重要应用领域是增强3D激光扫描数据,说明请看图1。 尽管激光扫描仪提供了有关深度和反射率的宝贵信息,但由此产生的点云通常非常稀疏,特别是在考虑使用自主驾驶时使用的Velodyne HDL-64e1等移动扫描仪时[13]。
因此,能够增加这种扫描密度的学习模型是非常需要的。不幸的是,不影响精度的条件下直接在3D中处理高分辨率数据是极具挑战性的[44]
我们在本文中采用的另一种方法是将激光扫描投影到虚拟或真实的2D图像平面上,从而产生2.5D的特征表示。除了将深度预测建模为二维回归问题之外,这种表示还具有可以轻松集成更多密集信息的优势(例如,来自彩色相机的RGB值)。但是,投影激光扫描通常非常稀疏,不能保证与常规像素网格对齐,因此在使用标准CNN进行处理时导致效果不佳。相反,使用本文所提出的方法,即使输入是稀疏和不规则分布的,也能产生令人信服的结果。
我们在ablation studies 和一些最先进的baseline上评估我们的方法。对于我们的评估,我们利用Synthia综合数据集[45]以及一个新提出的具有93k深度注释图像的真实世界数据集(KITTI)[12]。我们的数据集是第一个为此场景提供大量高质量深度注释的数据集。 除了在深度和语义方面达到更高的准确度外,我们还展示了我们的方法在不同数据集和稀疏级别之间进行概括的能力。 我们的代码和数据集将在文章发表后公开。
2.Related Work
在本节中,我们将讨论在稀疏输入上操作的方法,然后讨论考虑CNN中稀疏性的技术。我们简要讨论了不变表示学习(invariant representation learning)中的最新技术,并结合相关的深度完成技术进行了综述。
CNNs with Sparse Inputs:
处理稀疏输入的简单方法是将无效值归零或为编码每个像素有效性的网络创建额外的输入通道。为了在激光扫描中检测物体,Chen et al. [3] and Li et al. [32]将激光扫描仪扫描的三维点云投影到低分辨率图像上,将缺失值归零并在这个输入上运行标准的CNN。对于光流插值和修补,Zweig et al. [59] and Koehler et al. [28]将额外的二进制有效性掩码传递给网络。但正如我们的实验所证明的那样,这两种策略与明确考虑卷积层内部的稀疏性相比而言,其结果是次优的。
Jampani et al. [25]使用双边滤波器作为CNN内部的层,并学习相应的超平面卷积核的参数。虽然他们的图层也处理稀疏不规则输入,但它需要引导信息来构建有效的超平面表示,并且对于大型网格来说在计算上是昂贵的。 与他们的方法相比,我们的稀疏卷积网络在深度完成时产生明显更好的结果,同时与常规CNN一样有效。
Graham [15, 16] and Riegler et al. [44]考虑了稀疏的3D输入。与我们的工作相反,他们的重点是通过根据输入划分空间来提高计算效率和内存需求。 然而,采用常规的卷积层,其具有与上述方法相同的缺点。
Sparsity in CNNs:
论文[17,33,41,54,10]也考虑卷积神经网络中的稀疏性。Liu et al. [33]展示了如何使用稀疏分解来减少参数中的冗余。他们的方法消除了超过90%的参数,在ILSVRC2012实验的精度下降不到1%。Wen et al. [54]提出正则化深层神经网络的结构(即滤波器,通道和层深度)以获得硬件层面友好的表示。他们报告说,对于常规卷积神经网络,加速因数为3到5。虽然这些工作着眼于通过利用网络内的稀疏性来提高神经网络的效率,但我们认为稀疏输入的问题并且不能解决效率问题。 两条线的组合将成为未来研究的有趣方向。
Invariant Representations:
学习模型对输入变化的稳健性是计算机视觉的长期目标。确保健壮性的最常用解决方案是数据增强[50,30,31]。最近,几何不变量(例如旋转,透视变换)已直接纳入CNN滤波器[4,55,58,24,20]。在本文中,我们认为学习表示的问题对输入的稀疏性水平是不变的。 正如我们的实验所证明的那样,即使训练和测试集之间的稀疏水平显着不同,我们的模型也表现良好。这具有重要的意义,因为它允许替换传感器(例如,激光扫描仪)而不重新训练网络。
…………
4.Large-Scale Dataset
对提出的深度完成方法进行培训和评估需要大量带注释的数据集。虽然对合成数据集[45,11,39]的评估是可能的,但这些数据集的真实水平用以挑战的现实世界情况下是否还能保持算法的性能,仍然是一个悬而未决的问题。
不幸的是,所有具有纯净深度groundtruth的现实世界数据集规模都很小。The Middlebury benchmark [48, 47] provides depth estimates only fora dozen images and only in controlled laboratory conditions. While the Make3D dataset [46] considers more realistic scenarios, only 500 images of small resolution are provided. Besides, KITTI [13, 37] provides 400 images of street scenes with associated depth ground truth. 然而,这些数据集都不足以进行高容量的深度神经网络的端到端训练。
对于我们的评估,我们基于KITTI原始数据集[12]创建了一个新的大规模数据集,该数据集包含超过94k的半密集深度groundtruth。虽然KITTI原始数据集以原始Velodyne扫描的形式提供深度信息,但通常需要进行人工工作来消除激光扫描中的噪声(例如,由于激光扫描器和相机的投影中心不同)或场景中的反射/透明表面造成的伪影[13]。 因此非常希望自动执行此任务。
在本文中,我们建议通过比较扫描深度与使用半全局匹配(SGM)的立体重建方法的结果来去除激光扫描中的异常值[21]。立体重建通常会导致物体边界出现深度渗漏伪影,同时LiDaR传感器也会沿着它们的运动方向创造出条纹伪影。为了消除这两种异常值,我们强化激光扫描和立体重建之间的一致性,并移除表现出相对较大误差的所有LiDaR点。为了比较两种测量结果,我们使用KITTI提供的校准文件将SGM视差图转换为深度值。我们进一步遵循[13]的方法并累积11次激光扫描来增加生成的深度图的密度。尽管环境大多是静态的,但一些KITTI序列包含动态对象,其中激光扫描累积会在动态对象上产生许多异常值。因此,我们仅使用SGM深度图一次来清洁积累的激光扫描投影(而不是单独清洁每个激光扫描),以便一步移除所有异常值:遮挡,动态运动和测量伪像。我们还观察到,由于反射和透明表面造成的大多数误差可以通过这种简单的技术来消除,因为SGM和LiDaR在这些地区很少达成一致。
…………
5.Experiments
5.1 Depth Upsampling
我们研究了深度完成任务,以评估稀疏输入数据对稀疏卷积模块的影响。 对于这项任务,从投影激光扫描得到的稀疏的、不规则填充的深度图‘完成’到全分辨率的图像,其中没有任何RGB图像的指引。
我们首先在具有不同程度稀疏性的输入中评估我们方法的性能。为了达到这个目标,我们利用了Ros et al. [45]的Synthia数据集。这使我们可以完全控制稀疏度。为了人为地调整输入的稀疏性,我们在训练期间将提供的稠密深度图随机丢失一部分数据, 像素被丢弃的概率设置为从0%到95%的不同水平。
Sparsity Invariant CNNs的更多相关文章
- (转)The 9 Deep Learning Papers You Need To Know About (Understanding CNNs Part 3)
Adit Deshpande CS Undergrad at UCLA ('19) Blog About The 9 Deep Learning Papers You Need To Know Abo ...
- React-Native坑:Invariant Violation:Application 项目名 has not been registered.
前言 在学习一门新技术的你也许有跟我一样的困惑,照着书上或者视频上的敲了.但是就是有各种问题没有出来自己想要的结果.我会将自己在这个过程中遇到的坑都记录下来,不一定全覆盖,但希望这些文章可以解决你的问 ...
- No Entity Framework provider found for the ADO.NET provider with invariant
在使用EF的时候,我把EF的EDMX放在单独的一个project中,UI中引用这个project的dll, 运行的时候就是提示No Entity Framework provider found fo ...
- EntityFrame Work:No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'
今天试着学习了Entity Frame Work遇到的问题是 The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlP ...
- (转)Image Segmentation with Tensorflow using CNNs and Conditional Random Fields
Daniil's blog Machine Learning and Computer Vision artisan. About/ Blog/ Image Segmentation with Ten ...
- BRISK: Binary Robust Invariant Scalable Keypoints
注意:本文含有一些数学公式,如果chrome不能看见公式的话请用IE打开网站 1.特征点提取 特征点提取有以下几个步骤: a.尺度空间金字塔结构的构造 和SIFT类似,尺度空间金字塔是由不同的尺度 ...
- 循环不变量loop invariant 与 算法的正确性
在论述插入排序的正确性的时候, 书中引入了循环不变量的概念, 刚开始稍微有点不太明白, 早上查了一波资料之后决定把自己的理解记录下来. 什么是循环不变量 ? 在我看来, 所谓循环不变量的就是一个在循环 ...
- 不变(Invariant), 协变(Covarinat), 逆变(Contravariant) : 一个程序猿进化的故事
阿袁工作的第1天: 不变(Invariant), 协变(Covarinat), 逆变(Contravariant)的初次约 阿袁,早!开始工作吧. 阿袁在笔记上写下今天工作清单: 实现一个scala类 ...
- ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded
The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramewor ...
随机推荐
- windows 10 安装node.js
第一步:下载软件 nodejs的中文官网http://nodejs.cn/download/ 选择 windows 系统 msi 安装版本. 下载完成之后,直接打开下一步安装就可以. 安装完成 打开 ...
- 安装cronsun管理定时脚本
1. cronsun 是一个分布式任务系统,单个结点和 *nix 机器上的 crontab 近似.支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换 crontab 一个不错的 ...
- Python在线编程环境
除了安装Python的IDE之外,也可以使用在网页中随时随地编写Python程序. Python官网:https://www.python.org/shell Python123:https://py ...
- 第2天 Java基础语法
第2天 Java基础语法 今日内容介绍 变量 运算符 变量 变量概述 前面我们已经学习了常量,接下来我们要学习变量.在Java中变量的应用比常量的应用要多很多.所以变量也是尤为重要的知识点! 什么是变 ...
- arping命令用法
arping命令使用说明 BusyBox v1.17.3 (2011-07-20 17:01:30 CST) multi-call binary. Usage: arping [-fqbDUA] [- ...
- 关于 ssh 连接较慢的解决办法
1. 概述 使用 ssh 软件连接 linux 时, 会碰到很慢的情况 2. 场景 概述 ssh 连接很慢 大概步骤 使用 xshell6 免费版, 连接 主机 一个小等待, 弹出 用户名 输入框 输 ...
- Java中的IO
引言: 对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java > 本文的目录视图如下: Java IO概要 a ...
- SpaceVim 语言模块 erlang
原文连接: https://spacevim.org/cn/layers/lang/erlang/ 模块简介 功能特性 启用模块 快捷键 语言专属快捷键 交互式编程 模块简介 这一模块为 SpaceV ...
- C语言与汇编语言相互调用原理以及实例
C语言与汇编语言相互调用原理以及实例 1.原理 其实不管是C语言还是汇编语言想要执行都是最终编译链接成为二进制文件. 这里一定要明确编译和链接是两个步骤,生成的文件格式也是不一样的. 编译生成的文件是 ...
- 成都Uber优步司机奖励政策(3月15日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...