3D 点云是一种不规则且无序的数据类型,传统的卷积神经网络难以处理点云数据。来自俄勒冈州立大学机器人技术与智能系统(CoRIS)研究所的研究者提出了 PointConv,可以高效的对非均匀采样的 3D 点云数据进行卷积操作,该方法在多个数据集上实现了优秀的性能。如将 CIFAR-10 数据转换成点云,使用 PointConv 实现例如 AlexNet 和 VGG 结构的网络,可以达到与传统 CNN 相似的性能。

一、背景

在机器人、自动驾驶和虚拟/增强现实应用中,直接获取 3D 数据的传感器日趋普遍。由于深度信息可以消除 2D 图像中的大量分割不确定性(segmentation ambiguity),并提供重要的几何信息,因此具备直接处理 3D 数据的能力在这些应用中非常宝贵。但 3D 数据通常以点云的形式出现。点云通常由一组无排列顺序的 3D 点表示,每个点上具有或不具有附加特征(例如 RGB 信息)。由于点云的无序特性,并且其排列方式不同于 2D 图像中的常规网格状像素点,传统的 CNN 很难处理这种无序输入。

本文提出了一种可以在非均匀采样的 3D 点云数据上高效进行卷积操作的方法。我们称这种操作为 PointConv。PointConv 能够在 3D 点云上构建多层深度卷积网络,其功能与 2D CNN 在栅格图像上的功能类似。但该结构可实现与 2D 卷积网络相同的平移不变性,以及点云中对点顺序的置换不变性。在实验中,PointConv 可以在分类问题上的效果达到当前最佳水平,同时,在 3D 点云的语义分割上能够给出远超论文提交时的最优的分割结果。为了说明 PointConv 可以实现真正的卷积操作,我们还在图像分类数据库 CIFAR-10 上进行了测试。实验表明,PointConv 能够达到类似于传统 CNN 的分类精度。

该研究的主要贡献包括:提出密度重加权卷积操作 PointConv,它能够完全近似任意一组 3D 点集上的 3D 连续卷积。

通过改变求和顺序,提出了 PointConv 的高效实现。

将 PointConv 扩展到反卷积(PointDeconv),以获得更好的分割结果。

二、PointConv

两个连续函数 f(x) 和 g(x) 关于一个 d 维向量 x 的卷积操作可以用下式表示:

由于图像一般以固定的网格状的矩阵形式存储,因此在图像上,卷积核通常在 3x3,5x5 的固定网格上实现。在 CNN 中,不同的邻域采用同一个卷积核进行卷积,从而实现平移不变性。由此可见,图像上的卷积操作是连续卷积操作的一种特殊的离散化表示。

3D 点云数据的表达方式与图像完全不同。如图 1 所示,不同于图像,3D 点云通常由一些 3D 点组成。3D 点之间没有前后顺序之分,因此,在 3D 点云上的卷积操作应具有排列不变性,即改变 3D 点集中点顺序不应影响卷积结果。此外,点云上的卷积操作应适应于不同形状的邻域。

为满足这些要求,在 3D 空间中,可以把连续卷积算子的权重看作关于一个 3D 参考点的局部坐标的连续函数。如下式所示:

其中,W 和 F 均为连续函数,(x, y, z) 是 3D 参考点的坐标,(δx,δy,δz) 表示邻域 G 中的 3D 点的相对坐标。(2) 式可以离散化到一个离散的 3D 点云上。同时,考虑到 3D 点云可能来自于一个不均匀采样的传感器,为了补偿不均匀采样,我们提出使用逆密度对学到的权重进行加权。PointConv 可以由下式表示,

其中,S 表示逆密度系数函数。连续函数 W 可以用多层感知器(MLP)近似。函数 W 的输入是以 (x, y, z) 为中心的 3D 邻域内的 3D 点的相对坐标,输出是每个点对应的特征 F 的权重。S 是一个关于密度的函数,输入是每个点的密度,输出是每个点对应的逆密度系数。这个非线性的函数同样可以用一个多层感知机近似。

图 3 展示了在一个由 K 个 3D 点组成的邻域上进行 PointConv 的流程。图中,C_in 和 C_out 表示输入和输出的特征的维度,k, c_in, c_out 表示索引。对于 PointConv 来说,输入由三部分组成:3D 点的相对坐标 P_local,密度 Density 和特征 F_in。3D 点的相对坐标 P_local 经过连续函数 MLP1 之后可以得到对应的每一个点的特征的权重 W;而密度 Density 经过 MLP2 之后得到逆密度系数 S;在得到权重 W, 逆密度系数 S 以及输入的特征 F 之后,可以利用下式进行卷积,以得到输出特征 F_out:

PointConv 通过学习连续的卷积核函数,适应了 3D 点云的不规则的特性,实现了置换不变性,使得卷积操作由传统的图像扩展到了 3D 点云领域。

三、高效 PointConv

最初版本的 PointConv 实现起来内存消耗大、效率低。为了解决这些问题,我们提出了一种新型重构方法,将 PointConv 简化为两个标准操作:矩阵乘法和 2D 卷积。这个新技巧不仅利用了 GPU 的并行计算优势,还可以通过主流深度学习框架轻松实现。由于逆密度尺度没有这样的内存问题,所以下面的讨论主要集中在权重函数 W 上。

1. 内存问题的产生

具体来说,令 B 为训练阶段的 mini-batch 大小,N 为点云中的点数,K 为每个局部区域的点数,C_in 为输入通道数,C_out 为输出通道数。对于点云,每个局部区域共享相同的权重函数,这些可以通过 MLP 学习得到。但不同点处的权重函数计算出的权重是不同的。由 MLP 生成的权重参数张量的尺寸为 B×N×K×(C_in×C_out)。假设 B = 32,N = 512,K = 32,C_in = 64,C_out = 64,并且权重参数以单精度存储,一层网络则需要 8GB 的内存。如此高的内存消耗将使网络很难训练。[31] 使用非常小的网络和少数的滤波器,这显著降低了其性能。

2. 高效的 PointConv

为了解决前面提到的内存问题,我们提出了一个基于 Lemma 1 的内存高效版 PointConv,这也是本文最重要的贡献。

具体的证明可以参考原论文。根据 Lemma 1 重新实现 PointConv,可实现完全相同的卷积操作,但大大减少内存消耗。采用 1 中相同的配置,单层卷积操作的内存占用将由 8G 缩小为 0.1G 左右,变为原来的 1/64. 图 5 展示了高效的 PointConv 卷积操作。

四、反卷积操作

在分割任务中,将信息从粗糙层传递到精细层的能力非常重要。由于 PointConv 可以实现标准卷积操作,因此将 PointConv 扩展为 PointDeconv 是很顺理成章的。PointDeconv 由两部分组成:插值和 PointConv。首先,使用一个线性插值算法来得到精细层的特征的初始值,再在精细层上进行一个 PointConv 进行优化特征,从而获得较高精度的特征值。图 4 展示了反卷积操作的具体流程。

五、实验

为了说明 PointConv 的有效性,我们在常用的 3D 点云数据库上进行了测试,包括 ModelNet40,ShapeNet 和 ScanNet. 同时,为了说明 PointConv 是可以和图像 CNN 进行等价,我们在 CIFAR10 上进行了测试。这里我们重点介绍在 ScanNet 上的测试结果,更多实验结果请参考论文原文。如表 3 所示,仅使用 4 层 PointConv 网络,即可在场景的的语义分割测试中达到远好于其他算法的效果,达到了当前最优水平。图 7 给出了室内场景语义分割的一些可视化结果。

为了说明 PointConv 可以等价于图像上的 CNN,我们在 CIFAR10 上进行了测试。首先,将 CIFAR10 的图像像素转变为网格状排列的点云,再使用 PointConv 进行分类。表格 4 给出了 PointConv 与其他 3D 点云算法和图像 CNN 的分类精度对比。可以看到,5 层的 PointConv 可以达到和 AlexNet(5 层 CNN)相似的精度,同时,PointConv(VGG) 也可以达到和 VGG 相似的分类精度。与此同时,其他的 3D 点云算法,如 PointCNN 等,则仅能取得 80% 左右的分类精度。这项实验说明了 PointConv 可以取得与图像 CNN 同等水平的学习效果。

论文:PointConv: Deep Convolutional Networks on 3D Point Clouds

摘要:与使用常规密集网格表示的图像不同,3D 点云是不规则且无序的,因此对它们执行卷积存在困难。在本文中,我们将动态滤波器扩展为一个名为 PointConv 的新型卷积操作。PointConv 可以在点云上构建深度卷积网络。我们将卷积核看作 3D 点局部坐标的非线性函数,该函数由权重和密度函数组成。对于给定点,利用多层感知器网络学习权重函数,通过核密度估计学习密度函数。为了高效地计算权重函数,我们提出了一种新型计算方法,使网络规模显著扩大,性能显著提高。学习到的卷积核可用于计算 3D 空间中任何点集上的平移不变卷积和置换不变卷积。此外,PointConv 还可以用作反卷积算子,将从子采样点云中提取的特征传递回原始分辨率。在 ModelNet40、ShapeNet 和 ScanNet 上的实验表明,基于 PointConv 构建的深度卷积神经网络在 3D 点云上执行操作时能够在具有挑战性的语义分割基准上实现当前最优结果。此外,将 CIFAR-10 转换为点云的实验表明,基于 PointConv 构建的网络性能堪比在类似结构的 2D 图像中执行操作的卷积网络。

卷积云神经网络_PointConv:在点云上高效实现卷积操作相关推荐

  1. 映客高级技术总监黄继:7天从开发到上线,云上高效运维实践与探索

    2021年10月22日,在云栖大会的<云上运维最佳实践>分论坛,映客高级技术总监黄继发表了主题为"7天从开发到上线,云上高效运维实践与探索"的演讲,为大家阐述映客团队如 ...

  2. EMQ x 阿里云:云上高效构建,IoT 数据一站处理|直播预告

    随着物联网与云计算的发展,进入云时代以来,各企业的数字化转型也纷纷「云」化.在云上构建可弹性伸缩.自动化管理.承载海量物联网设备连接的数据中心,从而实现企业的降本增效,成为大势所趋. 为了帮助企业应对 ...

  3. 华为云桌面,开启云上高效办公之旅!

    在传统办公模式中,企业必须自己购买服务器和数据库软件才能进行日常管理,部署繁琐,还需要日常运维.而云桌面办公系统通过将传统的计算机终端与云计算平台有机地结合起来,使企业能够轻松应对各种变化带来的威胁和 ...

  4. 【3D计算机视觉】A-CNN——点云上的环状卷积神经网络

    A-CNN-Annularly Convolutional Neural Networks on Point Clouds 阅读笔记 一.贡献点 二.模型结构 2.1 Regular and Dila ...

  5. 一文读懂云上DevOps能力体系

    简介: 阿里云ECS自动化运维套件架构师,深度拆解云上运维能力体系建设:自动化运维等级金字塔.自动化运维的进阶模式.DevOps的基础核心.云上标准化部署三大能力-- 序言 云计算行业已经有十多年的发 ...

  6. 华为云桌面,一站式云上数字化创作深度解读

    随着数字化技术的持续发展,无论是设计领域,如工业.建筑设计等,还是内容制作领域,如影视.动漫.综艺等,数字内容的数量呈现爆发式的增长.与此同时,随着3D.特效.实时渲染.4K/8K等技术手段的广泛应用 ...

  7. 一文读懂云上DevOps能力体系!

    序言 云计算行业已经有十多年的发展了,话题早已从"要不要上云"转向"如何用好云"."要不要"其实是一个决策性的话题,直到决策出来一个结果了, ...

  8. 阿里技术实战:一些云上资源调度的经验谈

    本文作者 李雨前,阿里云弹性计算技术专家,有 5 年的大规模集群资源管理调度实践经验:针对 long-time service 及 co-location 调度具有全面.深入的一线实践和解决问题经验, ...

  9. 点云上的卷积神经网络及其部分应用

    本次公开课由李伏欣老师主讲,李伏欣老师是美国俄勒冈州立大学助力教授,公开课主要介绍了涵盖3D点云领域的研究,并重点介绍了李老师近期的最新工作内容. 公开课回放链接:https://www.shenla ...

最新文章

  1. 【数据结构】 哈希表 详解
  2. 5 个针对有经验用户的 Vim 实用技巧
  3. 在 Spring中 创建 JavaBean
  4. 我眼中的Linux设备树(六 memorychosen节点)
  5. java多表查询返回数据_spring data jpa如何在多张数据库表中查询返回某些字段值?...
  6. 【jQuery笔记】狂拍灰太狼案例笔记
  7. 几个linux监测工具
  8. java 注释标记_如何标记,像老板一样注释内容
  9. spark+phoenix
  10. SDWebImage的简单使用
  11. Android 高级学习心得及项目要点
  12. 判断回文字符串-C语言
  13. Java后端防止获取短信验证码接口被恶意调用的代码实现
  14. 什么是蜂窝网络和蜂窝设备测试
  15. 常用adb命令学习:查看和修改设备的输入法
  16. Python爬链家网租房信息
  17. (转)2007北京高考作文题目(太有才了.我都看了无数遍了)
  18. [第四章] 深入理解计算机系统第三版 家庭作业参考答案
  19. excel将柱状图的柱宽减为直线的方法 作x轴垂线的方法
  20. 第九章-项目资源管理

热门文章

  1. QGIS课堂线下培训操作视频分享——使用QGIS制做疫情分布图
  2. Dagger2 User's Guide (用户指南) 全文翻译。
  3. 超高清行车记录仪美国高端安霸A7、A5和A2
  4. 求解 谁会啊 在线等
  5. Java杨辉三角最简单的实现方式
  6. 秦淮数据财报:秦淮数据2023年的收入将下滑,盈利能力将减弱
  7. Angular.js ng-dblclick ng-click
  8. codeforces 670C Cinema
  9. jquery点击加class再次点击移除添加的class
  10. zypper命令使用示例