PointNet家族

2023-11-07

点云数据的特性和挑战

1)点云具有不规则性,顺序不相关性,置换排序不变性对深度学习具有很大的挑战。

(Irregular(unordered):permutation invariance)

2)刚性变换(scale transorfmation ration)的鲁棒性(Robustness to rigid transformations)

3)点云损害,噪声,部分数据,大场景数据 (Robustness to corruption outlier,noise, partial data large-scale data)需要保持鲁棒性,高效性。

PointNet家族

PointNet是将深度学习应用与点云上的应用


PointNet = shared MLP + maxPool(多层感知机+对称函数)

inputPoints映射到高维空间(1024维)之后,maxpool保证了平移不变形

针对刚性变换,Pointnet提出了T-Net,用迷你网络transform-Net(3*3的变化)将输入点云进行对其alignment。无论如何刚性变换,它的表示是规范的。思想应用到深层的特征空间。

PointNet ++ = PointNet + 局部到全局学习泛式

卷积神经网络是有局部的概念的,但是pointnet并没有。作者模仿cnn的架构,让pointnet更好的捕捉局部的模式。于是有了pointnet++。从输入点云采样一些点,以这些点为中心找局部邻域,将局部邻域作为卷积作用域,局部邻域共享pointnet,和卷积中共享卷积核一样。实现了由局部到全局的优化。性能和局部模式的挖掘上有很大提升

Sampling+Grouping+PointNet(capture local pattens better CNN like)

Pointnet backbone做目标检测

https://openaccess.thecvf.com/content_cvpr_2018/papers/Qi_Frustum_PointNets_for_CVPR_2018_paper.pdf

2d 图像里面,用与训练过的detector 生成一些proposal,再利用图像和深度图中的信息得到Frustum Proposal(屏截头体,从2dproplsal恢复出3d的结构)。在做3d的instance segmetation。分割结果进行3d box的估计,利用tnet pointnet的设计进行3d box的网络。

用pointnet思想做场景光流的预测

https://openaccess.thecvf.com/content_CVPR_2019/papers/Liu_FlowNet3D_Learning_Scene_Flow_in_3D_Point_Clouds_CVPR_2019_paper.pdf

对于输入的两个特征,最后是得到场景光流估计。核心是找到两针时间的关系。核心是设计flow embending的模块。同时利用pointnet做上采样。

规则化处理(regular processing)

既然电云上不好做深度学习,我们能否做规则化处理,以方便我们做深度学习的研究。

VoxelNet = 3D grid + PointNet + 3DCNN

讲点云规则的划分成3Dgrid,每个grid用pointnet做紧凑的特征表示,然后用3DCNN来做目标检测。

https://arxiv.org/pdf/1711.06396.pdf

https://github.com/qianguih/voxelnet

SPLATNet = lattice + bilateral convolution + hash index

把点云映射到高维的晶格空间,用双边卷积的操作,利用哈希表高效处理,卷积之后的分割结果再投射回点云空间。参考 Lattice CNNs. ICLR 2015, Bilateral Neural Networks CVPR 2016.

https://arxiv.org/pdf/1802.08275.pdf

PCNN = 投射F到体积空间 保证特征共存是没有任何离散和近似的

我们在表达一个算法的时候经常用输入点云作为X,分类或分割结果输出 y=F(X)来表达。PCNN 把f投影到一个体积的规则空间,保证特征共存是没有任何离散和近似的(without any discretization & approximation)。

https://arxiv.org/pdf/1803.10091.pdf

PointCNN = 端到端训练点云模型 Convolution On X -Transformed Points

塌方矩阵的思想优化点云端到端的训练。

p是局部点云中心点,F是特征。

1)归一化坐标到标准坐标 2)升维特征 3)级联原始特征和升维特征 4)MLP对特征进行加权和变换 输出K*K的塌方变换矩阵。核心idea通过MLP把输入点云规泛表示。5,6)常规的卷积。

https://arxiv.org/pdf/1801.07791.pdf

https://github.com/yangyanli/PointCNN

PointSIFT = SIFT + PointNet

https://arxiv.org/abs/1807.00652

https://github.com/MVIG-SJTU/pointSIFT

SIFT算子是对方向进行编码,对尺度也具有敏感性。

取每个局部邻域,找一个中心点。以中心点化xyz得到八个象限,取方向卷积,卷x,卷y,卷z得到最终的结果。作者认为对方向进行了编码。对于尺度变换,作者利用深度学习多层的特征进行concat,利用端到端的学习方式进行尺度敏感性。

SO-Net = Self-Organizing Map + MLP

用自组织映射的思想。自组织映射在点云空间中初始化一系列sym点,通过加上mlp学习的方式,将点在学习之后实现分布变换更换,更好的capture要处理的点云分布。利用这个方法去拟合或者近似输入。

Pointwise CNN

用暴力的方法画网格,画网格之后求和+归一化当成特征去卷积和学习。

Pointwise CNN CVPR 2018

Kd-Tree = KdTree 点云归一化

Kd-Net ICCV 2017 用kd树对点云进行划分,划分后的根节点进行分类的结果,也用decode-encode的方式进行分割。用数据结构的思想与深度学习相结合。

FCPN = 3d Grid + pointNet + 3dcnn

与voxelnet接近,划分grid之后,利用几何特征进行3dCNN。解决分割问题。

 

Graph-based modeling

用graph的思想进行点云数据处理。

DGCNN 动态图网络

https://github.com/WangYueFt/dgcnn

卷积的时候卷积周围点。concat特征进行全网络学习。方框代表聚合推近邻。利用特征空间中找近邻,每层graph特征是不一样的近邻也不一样,所以称作动态图。

Regularized GCNN

https://arxiv.org/pdf/1801.07829.pdf

用拉不拉斯矩阵进行filter。对filter进行多样式展开。正则化处理,对特征接近的点。再次确保训练过程不会跑飞。亮点kNN照动态k近邻。

GAN for point cloud

https://openaccess.thecvf.com/content_ICCV_2019/papers/Shu_3D_Point_Cloud_Generative_Adversarial_Network_Based_on_Tree_Structured_ICCV_2019_paper.pdf

点云的数据格式做GAN。GAN的生成网络图像是规则的,只要生成每个点上面的特征就可,点云中的生成网络输出的graph是未知的。所以不仅要学习特征,还需要学习graph的图结构。作者利用生成网络的前一层网络,用knn的思想,前一层的特征中找k近邻,当前一层输出的graph。

Spectral Graph Convolution 谱图卷积

https://openaccess.thecvf.com/content_ECCV_2018/papers/Chu_Wang_Local_Spectral_Graph_ECCV_2018_paper.pdf

在利用傅立叶变换在谱域进行卷积再利用傅立叶变换转换到实域。另外提出了Recusive pooling的做法

SuperPoint graph = minimal partition + GCN

https://openaccess.thecvf.com/content_cvpr_2018/papers/Landrieu_Large-Scale_Point_Cloud_CVPR_2018_paper.pdf

针对大型点云如何做深度学习。类似2d图像中的super pixel ,提出了super point,超点,再superPoint上建立Graph,也就是superpoint graph,这个superpoint graph是比原始数据点少很多。使用几何特征划分成最优化的问题,找到superpoint,后面就是普通的GCN。利用 gated GNN门控网络,且用了边缘条件卷积里,作者在CVPR2019 又提出了,oversegmentation 过分割方案来优化如何分割的更好的问题。

https://openaccess.thecvf.com/content_CVPR_2019/papers/Landrieu_Point_Cloud_Oversegmentation_With_Graph-Structured_Deep_Metric_Learning_CVPR_2019_paper.pdf

Deep GCNS  = residual/dense connection dilated conv

在CNN中可以做的很深,但是graph中最多4-5层,无法做的很深。

于是利用2d的残差思想和密集链接思想来提升学习效果。同时用到了膨胀卷积的工作。在点云分割领域取得比较好的结果。

https://github.com/lightaime/deep_gcns_torch

https://openaccess.thecvf.com/content_ICCV_2019/papers/Li_DeepGCNs_Can_GCNs_Go_As_Deep_As_CNNs_ICCV_2019_paper.pdf

https://openaccess.thecvf.com/content_ICCV_2019/papers/Li_DeepGCNs_Can_GCNs_Go_As_Deep_As_CNNs_ICCV_2019_paper.pdf

Convolution Kernel

如何比较优雅的在点云上卷积呢

KC-Net CVPR 2018

像卷积核一样在点云中定义点云核。红色表示响应越大,不同的卷积核在局部有不同的响应。 

点云配准的学习思想来定义核。剩下就是计算核相关,利用高斯做核核周围的点做核相关。

N*3 有点类似conv kernel 3个channel。

点云特征类似卷积进行concat进行操作。

KPConv 

https://arxiv.org/pdf/1904.08889.pdf

2d卷积中,2d图像是规则的,利用kernel对局部结构作用,结果放到output中心点上面。

但是点云是不规则的,定义kernal后,设计k个点,用kenel利用局部点云作用,结果放到中心点上面。

kenal设计中,yi是邻居点计算相关度的加权计算获取filter。

 

MCCNN = Monte Carlo Convolution

https://arxiv.org/pdf/1806.01759.pdf

(f ∗ g)(x) = ∫ f (y)g(x − y)dy 

 

蒙特卡洛卷积,对于标准信号卷积,利用蒙特卡罗积分进行离散化,利用特征和滤波器的作用后进行归一化。亮点:对抗点云非均匀分布特性。密度的引入到卷积计算中,是采样点点云邻居点,yi是密度的计算。

https://github.com/viscom-ulm/MCCNN

PointConv

类似蒙特卡罗卷积的工作,S是InverseDensityScale,W不是直接作用在特征上,是局部点云特征的权重

https://github.com/DylanWusee/pointconv

https://arxiv.org/pdf/1811.07246.pdf

 

Geo-CNN

如何更好的学习局部几何结构。以中心点做一个坐标系,把邻居点投影到坐标系上以向量表示。在坐标系上面利用权重,进行学习。考虑到点到中心点角度的关系。卷积过程中,更好的,学习局部的几何。

https://github.com/voidrank/Geo-CNN

https://arxiv.org/pdf/1811.07782.pdf

 

Tangent Conv CVPR 2018

原始点云中捕捉几何结构的优化,半径的局部点云做归一化,==》协方差矩阵==〉法向量 Np,确定切平面。用局部点云空间中点,投影到切平面上,得到稀疏点,然后做卷积。

可以处理百万级别的点。

https://openaccess.thecvf.com/content_cvpr_2018/papers/Tatarchenko_Tangent_Convolutions_for_CVPR_2018_paper.pdf

Consider a set of points q from a spherical neighborhood of p, such that kp−qk < R. The orientation of the tangent plane is determined by the eigenvectors of the covariance matrix C = P q rr⊤, where r = q − p.

A-CNN 环形CNN

PointNet++中有multiscale的操作。对于局部点云信息量不多,会有信息冗余,另外计算复杂度比较高,作者提出了环形点云,每次学这个环。另外还使用膨胀环。协方差矩阵==》法相==〉切平面==》随机选取点==〉顺时针排序点 ==》经典的卷积(例如1*3)

https://github.com/artemkomarichev/a-cnn

PointWeb CVPR 2019

用pointNet学习点云,用DGCNN学习中心点云的关系,

探究每个邻居点核中心点之间的关系来优化DGCNN,特征之间关系用MLP进行学习,利用边缘卷积的方式,用特征差来学习。

https://github.com/ziyan-wyq/PointWeb

Robustness

电晕涉及到很多刚提变换(平移,尺度变换,旋转)。对于平移和尺度变换问题可以通过归一化来解决。但是旋转是不容易解决的问题。X * R  = (N x 3)(3 x 3)一个点云乘以旋转矩阵,每个点的坐标都会发生改变。对于深度神经网络来说,输入的每个点发生改变之后,输出不变是非常难学习的问题。使用数据增强和对其(Data augmentation or align)来增加神经网络的鲁棒性。但是这样的方式增加了很多计算量。参考 Qi et al. PointNet  CVPR 2017

另外一个方法就是通过采分布来增加鲁棒性(Robustness to sampling density)

Multi-scale or Input dropout 用multi-scale的方法捕捉密度的变化,或者将输入的点随机的去掉(PointNet++)来做数据增强。

Monte Carlo integration 蒙特卡罗方法就是把密度放到学习中,提升密度的抗性。

Embedding density info

利用球的思想优化旋转不变形

Group Equivariant CNN ICML2016

SO(3) Equivariant Representations with Spherical CNNs

https://arxiv.org/pdf/1711.06721.pdf

Spherical CNNs ICLR 2018

ClusterNet CVPR 2019

https://openaccess.thecvf.com/content_CVPR_2019/papers/Chen_ClusterNet_Deep_Hierarchical_Cluster_Network_With_Rigorously_Rotation-Invariant_Representation_for_CVPR_2019_paper.pdf

离散旋转全等性,利用Group CNN的思想,对输入点云进行离散旋转(20,30,40度), 对于输出Equicariance 变换。属于输出特征进行置换。并设计网络进行旋转不变性的研究,利用SO-Equivariant ECCV

Li et al Discrete Rotation Equivatiance ICRA 2019

https://arxiv.org/pdf/1904.00319.pdf

把原始点云映射到球上面,利用球的对称性,做球CNN卷积,得到旋转不变性的优化。

Spherical CNNS ICLR 2018

目前最好的旋转不变性最好的工作是 清华大学的 SFCNN CVPR 2019。利用球形分形的网络,原始点云映射到分形球体上的顶点,球上面卷积解决旋转不变性的问题。https://raoyongming.github.io/files/SFCNN.pdf

Rigorously Rotation-INvariant RRI Representation

严格旋转不变的表示|| Rx||2 = ||x||2 内积,二方树是不变的。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PointNet家族 的相关文章

  • (含源码)「自然语言处理(NLP)」RoBERTa&&XLNet&&语言模型&&问答系统训练

    来源 AINLPer 微信公众号 每日更新 编辑 ShuYini 校稿 ShuYini 时间 2020 07 27 引言 本次内容主要包括 稳健优化Bert模型 RoBERTa 自回归预训练模型 XLNet 无监督多任务学习语言模型 生成预
  • 【BT 协议】HFP 协议

    原文链接 https blog csdn net shichaog article details 52123439 HFP Hands free Profile 让蓝牙设备可以控制电话 如接听 挂断 拒接 语音拨号等 拒接 语音拨号要视蓝
  • C++:智能指针及其实现原理

    更多C 知识点 C 目录索引 1 RAII思想 定义一个类来封装资源的分配与释放 构造函数中完成资源的分配及初始化 析构函数中完成资源的清理 可以保证资源的正确初始化和释放 如果对象是用声明的方式在栈上创建局部对象 那么RAII机制就会正常
  • 从 MySQL 到 OBOracle:如何处理自增列?

    业务需要将数据库转换为 OceanBase 数据库 但源端涉及到 Oracle 及 MySQL 两种不同数据库 需要合并为 OceanBase 中单一的 Oracle 模式 其中源端 MySQL 数据库需要改造为 OB Oracle 并做异

随机推荐

  • 天梯题集——复数四则运算(fabs)

    复数四则运算 include
  • K8S kube-proxy- iptable模式实现原理分析

    每台机器上都运行一个kube proxy服务 它监听api server 和endpoint变化情况 维护service和pod之间的一对多的关系 通过iptable或者ipvs为服务提供负载均衡的能力 通常kube proxy作为deem
  • mysql auto reconnect_Python mysql (using pymysql) auto reconnect

    I m not sure if this is possible but I m looking for a way to reconnect to mysql database when the connection is lost Al
  • 手把手教你解决二维数组旋转问题

    一 背景 最近做算法题发现有些题目都需要将一个数组顺时针或逆时针旋转 之前发的题解中也涉及到过这类题 但没有细讲 在这里讲一下思路 手把手带你找到对应关系 本文代码示例均使用java 但重要的是思路 思路 思路 与语言无关 如果大家不明白我
  • 大厂怎么做Code Review?

    发现坏味道的实践 就是Code Review 对计算机源代码系统化地审查 常用软件同行评审的方式进行 其目的是在找出及修正在软件开发初期未发现的错误 提升软件质量及开发者的技术 团队对 CR本身的理解有差异 有的团队 在一个完整的开发周期结
  • Java中的内存分配

    Java把内存划分成两种 一种是栈内存 一种是堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配 当在一段代码块定义一个变量时 Java就在栈中为这个变量分配内存空间 当超过变量的作用域后 Java会自动释放掉为
  • @Profile使用场景

    文章目录 前言 一 Profile注解介绍 二 Profile注解使用 1 环境搭建 2 根据环境注册bean 前言 在实际的企业开发环境中 往往都会将环境分为 开发环境 测试环境和生产环境 而每个环境基本上都是互相隔离的 也就是说 开发环
  • java 五笔码+拼音码

    原文 java js 汉字对应拼音码 五笔码转换 五笔码 package com zdww chis demo import java util Locale public class Wbm private static String W
  • crout分解计算例题_初中数学因式分解习题大全(建议父母给孩子收藏直接打印)...

    一 填空题 共10小题 1 已知x y 10 xy 16 则x2y xy2的值为 2 两位同学将一个二次三项式分解因式 一位同学因看错了一次项系数而分解成2 x 1 x 9 另一位同学因看错了常数项分解成2 x 2 x 4 请你将原多项式因
  • 证券IT:冬虫夏草之技术路线图

    冬虫夏草之技术路线图 原创 杨松 新金融世界 7月18日 作为一名28年证券机构从业经历的老兵 杨松一直在观察和研究IT技术对金融机构的业务重构 以及证券业务变革相关的内容 今天 让我们来看看这位金融业内人士如何利用他28年的行业积累 通过
  • Idea中导入maven项目自动配置maven设置

    经常导入项目后需要在setting中设置maven 1 file gt setting中设置当前项目的maven配置 配置后 再次导入项目将以次设置为默认的maven设置 2 设置导入maven项目的默认maven配置
  • Day29_10 JavaWeb之Servlet及Servlet细节

    目录 一 Servlet Servlet的概述 Servlet的三种使用方式 Servlet的生命周期 二 Servlet中的其他对象 ServletConfig 对象 没什么大用 了解即可 ServletContext最大域对象 Appl
  • 运行中的docker修改配置文件

    运行中的docker修改配置文件 背景 环境 修改 yshop redis 在docker启动后可以自动启动 背景 在作测试的时候 遇到一个问题 docker 跑起来了 配置呀 数据导入呀都搞好了 突然发现 端口没有作映射 mysql5 7
  • yolov8系列[四]-yolov8模型部署

    yolov8系列 四 yolov8模型部署jetson平台 jetson平台 0 安装环境 1 下载源代码 2 pt 转换模型转换为 onnx 模型 3 配置deepstream yolo 4 运行 jetson平台 0 安装环境 下载to
  • 常用Linux的ssh远程终端连接工具

    1 putty 说明 putty是最简单的SSH工具 无需安装 支持多系统版本 下载后就可以直接使用 优点 1 免费 2 免安装 缺点 1 不支持标签模式 2 默认设置不友好 很多功能都需要额外配置才行 例如自动登录功能 3 不能传输文件
  • SCP 命令

    svn 删除所有的 svn文件 find name svn type d exec rm fr linux之cp scp命令 scp命令详解 2011 03 09 17 27 22 分类 Linux 标签 linux cp scp comm
  • 管理学经典定理汇粹

    一 素养 蓝斯登原则 在你往上爬的时候 一定要保持梯子的整洁 否则你下来时可能会滑倒 提出者 美国管理学家蓝斯登 点评 进退有度 才不至进退维谷 宠辱皆忘 方可以宠辱不惊 卢维斯定理 谦虚不是把自己想得很糟 而是完全不想自己 提出者 美国心
  • SVN下最高效打基线方法

    作者 张克强 作者微博 张克强 敏捷307 2014 7 6 方法一来自于我的一条微博 组织级scm建一个名为controlled的目录 当项目某文档通过评审后 组织级scm从项目目录下找到那文档 复制到controlled目录下 请 sc
  • 通过命令行运行java文件(jar、class),以及生成一个简单的jar包

    最近在开发中涉及到了java文件的运行 踩了一些坑 简单记录一下 jar文件 在装有java的计算机中 要直接运行jar文件 可以用命令 java jar jarpath 若要指定运行类名 则用 java cp jarpath classn
  • PointNet家族

    点云数据的特性和挑战 1 点云具有不规则性 顺序不相关性 置换排序不变性对深度学习具有很大的挑战 Irregular unordered permutation invariance 2 刚性变换 scale transorfmation