而PointNet(基本版)[^20]拥有最好的时间效率,我们的模型(没有密度自适应层)在同等速度下得到了最小的模型尺寸。 值得注意的是我们的MSG,虽然它在非均匀采样数据下获得了最好的性能,但是受其多尺度区域特征提取的影响比SSG版本代价高出2倍。MRG与MSG相比,其效率更高,因为它使用跨层次的区域。 image-20220113142612...
从PointNet到PointNet++,这个参数量笔者始终没搞明白,这里把计算过程放上来,希望有同学一起看看。 1、PointNet++中分类任务ssg版本的计算。 笔者把特征提取部分和分类任务部分分开算。特征提取部分主要是1*1卷积,需要注意weight+bias,公式里的绿色的‘+1’表示bias的数量。 特征提取部分: conv_num= (3+1)*64+(64...
点云分类:PointNet++(SSG) 学习大佬的点云系列项目的第六天,po上大佬项目链接:https://aistudio.baidu.com/aistudio/projectdetail/1525494【这个网络貌似有点复杂】 1. 数据准备 数据集:ShapeNet(储存格式是.h5文件) h5储存的key值分别为 data:这一份数据中所有点的xyz坐标, label:这一份数据所属类别,如ai...
SSG(在每个级别上带有单尺度分组的PointNet++的消融版本)无法推广到稀疏采样密度,而SSG+DP通过在训练时间随机丢弃点来解决这个问题。 4.2 点集分割用于语义场景标记 为了验证我们的方法适用于大规模点云分析,我们还评估了在语义场景标记任务上的性能。这个任务的目标是预测室内扫描中点的语义对象标签。[5]提供了一个...
在分组层中作者提出了3种方案:SSG(single scale grouping)、MSG(multi-scale grouping)多尺度、MRG(multi-resolution grouping)多分辨率。实际上就是采用不同的半径或不同的分辨率进行了多次采样分组。也是为了解决本文中的第三个问题。 SSG:就相当于只有一种半径做了分组采样 ...
在下一节点云处理:基于Paddle2.0实现PointNet++对点云进行分类处理②中,我们将会一起来实现PointNet++(SSG)整体网络搭建,并进行训练和测试。 二、PointNet++(SSG)网络简介 前言 在之前提出的Pointnet中,由于网络在最后使用了MaxPooling,将所有的点最大池化为了一个全局特征,因此局部点与...
1、PointNet++中分类任务ssg版本的计算。 笔者把特征提取部分和分类任务部分分开算。特征提取部分主要是1*1卷积,需要注意weight+bias,公式里的绿色的‘+1’表示bias的数量。 特征提取部分: conv_num= (3+1)*64+(64+1)*64+(64+1)*128+ (128+3+1)*128+(128+1)*128+(128+1)*256+ (256+3+1)*256...
为提高模型鲁棒性,在训练的时候采用随机丢弃点云的策略DP,即给定一个概率α∈[0,p]α∈[0,p],每个点云都按照概率αα来决定是否丢弃该点,实验对比结果是加入DP后模型鲁棒性更好,最佳组合是MSTG+DP,其中SSG就是grouping layer里面提到的单尺度采样。
从图中可以看出,分类网络就是把lastest的set abstraction的特征输出作为全连接层的第一层数据,两层全连接之后实现40分类。下面代码使用的是SSG,即相同尺度特征,代码如下: defget_model(point_cloud, is_training, bn_decay=None):""" Classification PointNet, input is BxNx3, output Bx40 """batch_size = po...
# 示例代码:训练PointNet++模型 import torch import torch.nn as nn from pointnet2_cls_ssg import PointNet2ClsSSG as PointNetModel device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model = PointNetModel(num_classes=NUM_CLASSES, input_channels=3).to(device) criterion = ...