pointnet 结果可视化_PointNet论文复现及代码详解

本文详细解读PointNet的代码实现,分析一维卷积在网络中的作用,并探讨其不考虑局部信息的局限性。通过数据集介绍和模型实现,展示PointNet在点云分类中的应用,同时对比点云与文本分类中一维卷积的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

本文主要对PointNet(之前有解读论文)的代码进行了分析和解读,有助于进一步理解其思想。可以发现,PointNet的结构并不复杂,比起CNN还要简单一些。理解PointNet关键在于理解一维卷积在网络中的作用,本文对该部分进行了详细的说明。另外,可以看到,PointNet最大的缺陷就是没有考虑周围的局部信息,所有的卷积操作都是针对单个点的进行的。这一点在PointNet++中得到了关注,后面的文章会对其进行解读。

1. 代码下载

这部分很简单啦,github上作者放出了TensorFlow的版本,这里使用的是Pytorch的版本,链接如下:PointNet-Pytorch代码。

按照页面的指示把代码和数据集下载到本地。

2. 数据集

首先看一下数据集到底是什么样的,这里用的包含16类样本的ShapeNet。里面有好多个文件夹,每个文件夹里面放着同一类的样本,每个文件夹对应类别如下:

打开第一个Airplane的文件夹,里面很多.pts格式的文件,这就是不同飞机模型的点云格式,里面放的就是一个个坐标点,坐标是经过归一化的。

然后使用下载好的文件里面的一个可视化代码,稍微修改一下,看一看数据到底长什么样。下图是一个飞机和一个包。

针对分类问题,在训练时直接读取点数据及类别。在dataloader里面,对每个样本的坐标进行了中心化及随机增强。另外,值得注意的一点是,在输入网络训练之前,还对样本进行了特定数量的随机重采样,目的就是为了保证输入到网络的样本的点的数量都是一样的,所以严格来说,网络对于样本中点的数量并不是没有要求。

3. 模型及实现

a. 关于一维卷积conv1d

在PointNet中,用到的卷积操作都是conv1d,和卷积神

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值