三个点云深度学习网络的理解

1.PointNet

  关键点1:无序点云,点云无序性与对称函数的关系,对称函数可以忽略点云坐标位置的无序性

  关键点2:输入点云数目N在MLP过程中不变,只是每个点x y z三个坐标的MLP。最终形成 N x 1024 维的全局特征。

2.PointNet++

  PointNet++的核心模块(Set Abstraction)包含采样分组PointNet特征提取三个步骤。

  (1)点云输入数目为N,采样过程采样最大距离采样,采样点数目为npoint(npoint一般为512,256,128,其中分类问题、部分分割问题需要的npoint少于语义分割问题的npoint,1024,256,128);

  (2)每个最大距离采样点在半径0.1(SSD)或者[0.1,0.2,0.4](MSG)(形成局部近邻域)的球体内选择nSample(16,32,64)个点,执行分组操作;

  (3)对每个分组内的点云进行PointNet特征提取,并采用最大池化得到每一组点的全局特征。

3.Randla-Net

  Randla-Net分为数据预处理过程、训练过程、预测过程。

  数据预处理过程对点云进行降采样,默认值为0.04。

  在S3DIS中的 helper_tool.py 文件中配置参数如下,其中 num_points 值为40960,约等于10的5次方。

复制代码
class ConfigS3DIS:
    k_n = 16  # KNN
    num_layers = 5  # Number of layers
    num_points = 40960  # Number of input points
    num_classes = 13  # Number of valid classes
    sub_grid_size = 0.04  # preprocess_parameter

    batch_size = 6  # batch_size during training
    val_batch_size = 20  # batch_size during validation and test
    train_steps = 500  # Number of steps per epochs
    val_steps = 100  # Number of validation steps per epoch

    sub_sampling_ratio = [4, 4, 4, 4, 2]  # sampling ratio of random sampling at each layer
    d_out = [16, 64, 128, 256, 512]  # feature dimension

    noise_init = 3.5  # noise initial parameter
    max_epoch = 100  # maximum epoch during training
    learning_rate = 1e-2  # initial learning rate
    lr_decays = {i: 0.95 for i in range(0, 500)}  # decay rate of learning rate

    train_sum_dir = 'train_log'
    saving = True
    saving_path = None
View Code
复制代码

   网络结构如图:

  在模型中,局部特征聚合模块LFA(local feature aggregation),包括局部特征编码模块和注意力池化机制。

  通过inference函数(inference方法被train调用)理解,拓展残差块DRB包含2个LFA。网络的编码部分,拓展残差块使用了5次。

  局部特征聚合模块LocSE,是针对输入点云中的每个点的K个局部近邻进行的。

 4.三者的区别

(1)采样方式的区别:PointNet++中主要采用最远点采样FPS,采样点的个数在每次SA模块中是固定的,512,256,128,前已述及。

Randla-Net中采用随机采样,因而产生了问题就是可能采样的点不具备代表性,因此提出了局部特征聚合模块LFA,通过对每个采样点进行局部编码和注意力池化提高局部点的特征表达能力。通过拓展残差块使得点的数目不断减少,分别为输入点N的1/4,1/16,1/64,1/256。

 

posted @   太一吾鱼水  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示