Geo-CNN的三维点云

Modeling Local Geometric Structure of 3D Point Clouds using Geo-CNN

摘要

深度卷积神经网络(CNNs)的最新进展促使研究人员采用CNNs直接对三维点云中的点进行建模。局部结构的建模已经被证明是卷积结构成功的关键,研究人员在特征提取层次中开发了局部点集的建模。对于局部区域内点间几何结构的显式建模研究却很少。提出GeoCNN,它对每个点及其局部邻域应用一种称为GeoConv的类卷积运算。在提取中心点与相邻点的边缘特征时,捕捉点之间的局部几何关系。将边缘特征提取过程分解为三个正交基,根据边缘向量与基之间的夹角对提取的特征进行聚合。在整个特征提取层次中保持欧几里德空间中的几何结构。GeoConv是一种通用且高效的操作,可轻松集成到多个应用程序的三维点云分析管道中。在ModelNet40和KITTI上评估Geo-CNN,并获得最先进的性能。

创新点

为了解决这些问题,提出了一种新的卷积式操作GeoConv,在特征提取的整个层次中,显式地建模点之间的几何结构。GeoConv应用于每个点及其由半径确定的局部球面邻域。如图1所示,表示两点间几何结构的向量p~q可以分解为三个正交基。通过将边缘特征提取过程分解为三个正交方向,减少点云绝对坐标的方差,鼓励网络沿着每个基独立学习边缘特征;根据边缘向量与基之间的几何关系聚合特征,显式地建立点之间的几何结构模型。这种学习方式在保留几何信息的同时,将复杂的几何结构学习问题分解为简单的几何结构学习问题。最后,为了提取中心点的局部特征,基于p~q范数对局部邻域中所有点的边缘特征进行加权,GeoConv的另一个优点是能够实现特征级的多视图增强。分解聚合方法可以通过操纵角度来重新加权特征,从而在特征层近似点云的旋转。

通过将多层GeoConv与越来越大的邻域进行叠加,构建Geo CNN,通过增加接收域来分层提取特征。通过通道最大值池来聚合所有点的特征,以保持置换不变性。GeoConv是对点的局部几何结构进行建模的通用模块。可以很容易地集成到不同的管道中进行三维点云分析,例如三维形状分类、分割和目标检测。对Geo-CNN的ModelNet40[51]和KITTI[17]进行了评估,并获得了最佳性能状态。

以一组三维点为输入,通过对每个点及其局部邻域应用卷积类运算(GeoConv)来开发局部几何结构。通过增加邻域大小来叠加多个GeoConv层来构建Geo-CNN。逐步扩大卷积的接受域,并抽象出越来越大的局部区域,以分层提取特征并保持沿层次的点的几何结构(如图2的(a)所示)。

B = {(1,0,0),(−1,0,0),(0,1,0), (0,−1,0),(0,0,1),(0,0,−1)}

如图2的(c)所示,六个基将空间分成8个象限,特定象限中的任何矢量都可以由B之外的三个基组成。给定一个相邻点q,定位它所处的象限(将p设为原点来考虑相对坐标系)。将矢量p~q投影到该象限的三个基上,计算p~q与各基之间的夹角(如图2(d)所示)。

表1显示了Geo-CNN和以前的方法之间的比较。Geo CNN在对象分类任务中使用ModelNet401的两个评估指标实现了最新的性能。本文使用最先进的PointNet++[35]实现了类似的性能。

用GeoConv代替v1分割网络中的点网特征提取模块,GeoCNN的截头台性能优于v1和v2截头台。根据[32]发布的代码评估验证集上的截头台v1和v2的性能,它与[32]中报告的性能非常相似。在图4的二维和三维图像上用Geo-CNN可视化截头台的检测结果。

表2显示了KITTI 3D目标检测的评估结果。检测管道的实现基于截锥点网v1,涉及到2D对象检测中的对象建议[36、18、59、26、58]。v1的性能被更复杂体系结构的截头体PointNet v2超越。

如表3所示,直接学习点之间的几何结构或系数以从三维坐标中聚合分解的特征没有帮助。

评估了特征级多视图增强的效果。一种将多视图信息融合到网络学习过程中的简单方法,训练时随机旋转输入点云作为数据增强。在GeoConv中提出的分解-聚集方法,使我们能够在特征层近似三维多视图增强。表5显示了ModelNet40数据集上输入级多视图增强和特征级近似的性能。观察到输入级多视图数据增强导致基线法和Geo-CNN的性能下降。一个可能的原因是,输入级数据的增加会导致不同视图之间的差异很大,而这种差异不能用单一的紧凑模型来正确地学习。另一种可能的解决方案是学习具有不同视图的单独模型,然后将其聚合。多网络模型的复杂性,其灵活性和可扩展性较差。

Geo-CNN的三维点云的更多相关文章

  1. CVPR2020:训练多视图三维点云配准

    CVPR2020:训练多视图三维点云配准 Learning Multiview 3D Point Cloud Registration 源代码和预训练模型:https://github.com/zgo ...

  2. CVPR2020:端到端学习三维点云的局部多视图描述符

    CVPR2020:端到端学习三维点云的局部多视图描述符 End-to-End Learning Local Multi-View Descriptors for 3D Point Clouds 论文地 ...

  3. CVPR2020:三维点云无监督表示学习的全局局部双向推理

    CVPR2020:三维点云无监督表示学习的全局局部双向推理 Global-Local Bidirectional Reasoning for Unsupervised Representation L ...

  4. 第一周:读取XML深度数据并将其重建为三维点云

    本周主要任务:学习PCL点云库,掌握利用PCL对点云处理的方法 任务时间:2014年9月1日-2014年9月7日 任务完成情况:完成了读取单幅xml深度数据,并重建三维点云并显示 任务涉及基本方法: ...

  5. python读取三维点云球坐标数据并动态生成三维图像与着色

    关键步骤: 1.首先通过读取.txt文本数据并进行一系列字符串处理,提取显示所需要的相关数据矩阵 2.然后利用python的matplotlib库来进行动态三维显示 备注:matplotlib在显示2 ...

  6. Dlib三维点云示例

    Dlib三维点云示例 源代码来自Dlib的示例代码http://dlib.net/3d_point_cloud_ex.cpp.html 在windows下需要链接winmm``comctl32``gd ...

  7. Matlab给三维点云添加高斯噪声和随机噪声

    写在前面 在我们进行点云配准一类的模拟实验时,第一步就是对原始点云进行适当的RT变换,并添加一定的噪声,得到测量点云,然后才可以用我们的算法去进行后面的配准操作.在添加噪声这一块,matlab里并没有 ...

  8. 三维点云去噪无监督学习:ICCV2019论文分析

    三维点云去噪无监督学习:ICCV2019论文分析 Total Denoising: Unsupervised Learning of 3D Point Cloud Cleaning 论文链接: htt ...

  9. python处理点云数据并生成三维点云模型

    1.python代码: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 from mpl_toolkits.mplot3d impor ...

随机推荐

  1. Windows下Nexus 5 改user模式为debug模式

    博客链接:http://blog.csdn.net/qq1084283172/article/details/52337241 在学习Android软件安全的过程中,经常要用到Android的动态调试 ...

  2. hdu2899 三分

    题意:      给你个函数,F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x ,给你一个y,x的范围是0--100 问你最小的 F(x) 思路:       本人推数学公式啥 ...

  3. 数据库的读写分离(Amoeba)

    目录 Amoeba Amoeba读写分离的配置 Amoeba Amoeba(变形虫) 项目,该开源框架于2008年开始发布一款 Amoeba for Mysql软件. 这个软件基于Java致力于MyS ...

  4. Google Hacking的用法

    目录 Google Hacking 基本搜索 高级搜索 Index of inurl Google Hacking Google Hacking 是利用谷歌搜索的强大,来在浩瀚的互联网中搜索到我们需要 ...

  5. POJ1988(带权并查集,搬砖块)

    题意:        可以这样理解,有n快方形积木,一开始都是单独的放到哪,然后有两种操作 1 M a b 把a所在的那一堆落到b所在那一堆的上面(一开始自己是一堆) 2 C a 问a下面有多少个积木 ...

  6. 游戏中的2D OBB碰撞模型的碰撞算法介绍和实践

    前言 上一篇博文说道,射线与场景中模型上的所有三角形求交时,会大幅度影响效率且花费比较多的时间,因此会采取使用包围盒的形式,进行一个加速求交.在此文中介绍OBB碰撞模型的碰撞算法 OBB的碰撞模型 有 ...

  7. VS·调试过程中某个操作导致调试突然退出之解决方案

    阅文时长 | 0.11分钟 字数统计 | 232字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·调试过程中某个操作导致调试突然退出之解决方案』 编写人 | SCscHero 编 ...

  8. stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入.   STM ...

  9. redis分布式锁-spring boot aop+自定义注解实现分布式锁

    接这这一篇redis分布式锁-java实现末尾,实现aop+自定义注解 实现分布式锁 1.为什么需要 声明式的分布式锁 编程式分布式锁每次实现都要单独实现,但业务量大功能复杂时,使用编程式分布式锁无疑 ...

  10. [DB] Zookeeper

    介绍 相当于"数据库",类似linux.hdfs的属性文件结构 分布式协调框架,实现HA(High Availability) 分布式锁管理框架 保证数据在zookeeper集群之 ...