首页 > 编程知识 正文

信息与计算思维导论,biyenet论文

时间:2023-05-05 16:31:41 阅读:31290 作者:1495

Pointnet与Pointnet++论文笔记最近,为了课题,研究了Pointnet系列的文章。 在此总结了个人心得,并结合部分博客进行了阐述。 不足之处等待您的批评指正。 另外,也欢迎学生们的学习交流。

论文地址: https://arxiv.org/ABS/1612.00593 (点网) )

论文地址: https://arxiv.org/ABS/1706.02413 (点网) )

1. 前言图像数据在计算机上的表示通常编码像素点之间的空间关系,而点云数据由无序的点集合构成。 因此,在使用图像识别任务深度学习模型处理点云数据之前,必须对点云数据进行某些处理。 目前采用的方法主要有两种。

将点云数据渲染到二维平面

将点云投影到不同方向的二维图像上,并应用标准的二维CNN提取特征。 通过视图池化层将从各种图像中学习到的特征聚合到全局特征中,并使用该全局特征对对象进行分类。 虽然基于视图的方法在分类任务中可以获得很高的精度,但是很难将此方法应用于点云分割。 也就是说,点云很难将每个点分为特定类别。 典型的算法是MV3D和AVOD。将点云数据转换到voxel grid

分割三维空间,将空间依赖关系导入点云数据,通过3D卷积等进行处理。 但是,点云很稀疏,使用三维网格来表示点云是徒劳的。 此外,考虑到体积数据的高内存和计算成本,三维网格的分辨率通常很低,并且可能出现量化伪影。 因此,用体积法处理大规模点云存在问题。 与以上两种方法预处理点云数据后使用的方式不同,PointNet系列论文提出了直接在点云数据上应用深度学习模型的方法。

http://www.Sina.com/http://www.Sina.com /

三维数据的表现形式一般分为四种。

点云:由n个d维的点构成,在该D=3时一般表示(x,y,z )的坐标,但当然也可以包含法线向量、强度等其他特征。 Mesh :由三角片和正方形片构成。 体素:物体在三维网格中用0和1表示。 多角度RGB图像或RGB-D图像2. 初识点云点云有很多优点,雷达、自动驾驶等也越来越受欢迎。

点云接近设备的原始特征(即雷达扫描物体直接生成点云)。

点云的表达方法更简单,一个物体用一个N D矩阵表示。 (其中n表示目标点云的数量,d表示维度,并且通常D=3) )。

在设计2.1 3D数据的4种表现形式网络之前,需要了解Pointnet的相关特性、点云的主要无序性和仿射不变性等。

http://www.Sina.com/http://www.Sina.com /

点云实际上具有无序的特征。 简单地说,点的排列顺序不会影响物体的性质。 请参照下图。

也就是说,某个N D在n的维度上随意混乱后,其表现其实是同一物体。 因此,针对点云的无序性,作者提出的解决方案是利用2.2 为什么使用点云进行解决。 常见的对称函数包括Sum、Max、平均化等。 这篇论文使用了最大轮询。

可以使用max函数设计简单的点云网络

这样,导致各点损失的特征太多,输出的全局特征仅继承了3个坐标轴上最大的特征,因此将点云上的各点映射到高维的冗馀空间(例如1024维),在一个高维空间提取全局特征之后,将低维特征映射到高维的冗馀空间(MLP )多层感知机)可以简单地理解为全连接网络) ) ) ) )。

3. Pointnet设计思想点云旋转不变性是指,如果对一个点云施加一个旋转,则所有的x、y、z坐标都会发生改变,但表示相同的物体。 因此,如果前后输入通常的point net (在vanilla中为相同旋转角度的物体,则可能无法很好地识别。 论文中的方法新由http://www.Sina.com/(transformer )引入,该网络在Pointnet上被去除。 实验证明,在去除转换网络后,该网络仍具有令人满意的性能。 )学习点云旋转,校准物体,剩下的点网(vanillla ) )

从图中可以看出,由于点云的旋转非常简单,将N D的点云矩阵乘以D D的旋转矩阵即可,所以只要对输入点云学习3 3的矩阵,就可以对其进行修正; 同样,将点云映射到k维冗馀空间后,对k维点云的特征进行一次校正。 但是,在这次校正中需要引入正则化罚项,最好尽可能接近正交矩阵(主要作用是使计算机的计算变得容易)。

在满足3.1 无序性以上两点云的特性后,可以设计PointNet的网络结构

具体来说

每一个N × 3 N的点云输入,网络先通过一个T-Net将其在空间上对齐,再通过MLP将其映射到64维的空间上,再进行对齐,最后映射到1024维的空间上。这时对于每一个点,都有一个1024维的向量表征,此时引入最大池化操作,将1024维所有通道上都只保留最大的那一个,这样得到的1 × 1024的向量就是N个点云的全局特征。

对于分类问题,直接将这个全局特征经过MLP,由softmax函数输出每一类的分数(即概率);如果是分割问题,由于需要输出的是逐点的类别,需要对全局特征与局部特征进行融合,最后通过MLP,输出逐点的分类概率。

4.Pointnet++ 4.1 pointnet的缺陷

PointNet的缺点——Pointnet设计只考虑了全局特性,而缺失局部特征。从很多实验结果都可以看出,PointNet对于场景的分割效果十分一般,由于其网络直接暴力地将所有的点最大池化为了一个全局特征,因此局部点与点之间的联系并没有被网络学习到。在分类和物体的Part Segmentation中,这样的问题还可以通过中心化物体的坐标轴部分地解决,但在场景分割中,这就导致效果十分一般了。在此基础上,原论文作者的团队对于Pointnet进行了改进,Pointnet++由此诞生。

4.2 Multi-Scale PointNet

作者在第二代PointNet中主要借鉴了CNN的多层感受野的思想。CNN通过分层不断地使用卷积核扫描图像上的像素并做内积,使得越到后面的特征图感受野越大,同时每个像素包含的信息也越多。而PointNet++就是仿照了这样的结构,具体如下:
其先通过在整个点云的局部采样并划一个范围,将里面的点作为局部的特征,用PointNet进行一次特征的提取。因此,通过了多次这样的操作以后,原本的点的个数变得越来越少,而每个点都是有上一层更多的点通过PointNet提取出来的局部特征,也就是每个点包含的信息变多了。文章将这样的一个层成为Set Abstraction。

4.3 Set Abstraction的实现细节

一个Set Abstraction主要由三部分组成:

Sampling:利用FPS(最远点采样)随机采样点Grouping:利用Ball Query划一个R为半径的圈,将每个圈里面的点云作为一簇PointNet: 对Sampling+Grouping以后的点云进行局部的全局特征提取 4.4 方法缺陷与改进

通过上述方法实现的PointNet++虽然在点云上的分类和分割效果有了一定的提升,但是作者发现,其在点云的缺失鲁邦性上似乎变得更差了。其原因是因为激光收集点云的时候总是在近的地方密集,在远的地方稀疏,因此当Sampling和Grouping的操作在稀疏的地方进行的时候,一个点可能代表了很多很多的局部特征,因此一旦缺失,网络的性能就会极大的受影响,如下图所示


当点云的个数缺失到20%的时候,PointNet++的性能甚至还不如PointNet。
作者通过引入不同分辨率/尺度的Grouping去对局部做PointNet,求局部的全局特征来进行改进,最后再将不同尺度的特征拼接起来;同时也通过在训练的时候随机删除一部分的点来增加模型的缺失鲁棒性。

4.5 Pointnet++的总体架构与改进结果

4.5.1 Pointnet++总体架构

4.5.2 Pointnet++改进结果

最终结果显示,PointNet++在点缺失到80%左右仍然具有良好的表现。

5.总结

Pointnet是直接利用3D数据进行深度学习处理的开山之作,而Pointnet++在Pointnet的缺乏局部特征基础上所作出的改进。然而,PointNet++仍然单独处理局部点集中的每个点,并且不提取点与其邻居点之间的关系,如距离和边缘向量。因此,目前有很多论文在提取点以及其邻近点之间做了改进,感兴趣的同学可以阅读相关文献,在此不细说。
下一阶段准备对于Pointnet++进行复现,等具体实现后再考虑要不要发文章。

参考:
[1]https://blog.csdn.net/weixin_39373480/article/details/88878629
[2]https://blog.csdn.net/sinat_17456165/article/details/106596332

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。