PointNet网络学习

发布时间:2026/7/15 5:17:05
PointNet网络学习 终于是来学习点云相关的深度学习算法了。之前一直是学习图像方面的模型对激光雷达的算法只停留在好奇层面了。1.前言学完这个PointNet之后才醒悟到激光雷达点云X,Y,Z也是3维RGB也是3维自己咋想都没想过用深度学习去做点云的相关算法呢。哦当时我深度学习之卷积还没学明白呢点云接触也不多不怪我不是天才。点云数据和图像数据有个很大的区别那就是有序性。啥意思呢假如我从韩老魔那里借来一把青竹风云剑并用激光雷达扫描了一遍相机照了一遍留下素材准备COPY一把。我的数据如下所示当我把数据顺序变换之后呢可以发现激光雷达扫的还是剑的轮廓而图像在打乱顺序后人看图像都已经认不出来这是个啥了更别说现在深度学习模型了。这也就是说雷达点云这种数据并不能简单的用图像一样的卷积方式去提取特征。因为现实中点云每次扫描同一物体的顺序是大概率不一致的点云数据是无序的。PointNet网络就是用来解决这一问题的方法之一。2.PointNet介绍PointNet是怎么实现网络从输入无序但整体不变数据中提取到相同特征的呢。关键就是对称函数--最大池化。TM还是专业人员会起名字啊一个取最大值的基本操作说这么高级对称函数。先来理解一下这个提取特征的流程注意下面这段描述是整篇文章的精髓非常重要。如下图所示假设我们的输入是6个点云数据的X Y Z坐标以某一种顺序排列输入进入MLP多层感知机进行维度提升。先别管这个MLP是啥你现在只要知道它是把每个点云的X Y Z 3维坐标信息抽象到1024维也就是channel通道数从3变成1024。输入点云数据shape从63经过MLP升维变成了61024。之后就轮到对称函数MAX登场对1024行的每一行6个数据取最大值最终提取的特征为11024后续在用这个特征向量去做分类任务或者分割任务就是检测头的不同了。从特征往回看要保证最终的特征11024不受6个点任意排序的影响要满足以下两个条件1.特征组合时使用对称函数即不受点的排序影响输出是相同的。论文说明了求均值去最大值去最小值等效果最好的是取最大值方案。2.每个点云数据使用的是同一个MLP升维器且点之间互相独立。3. PointNet网络结构从网络结构体补充两点细心的朋友看出来图里多了两个奇怪的东西蓝色矩形框T-Net模块和红色矩形框Combine模块。1.T-Net模块AI如是回答简单来说这个模块也就是为了数学上自圆其说后来发现数据增广训练的时候带点旋转即可这个模块也就删除了意义不大我也就不管了。2.分割任务中Combine这个Combine模块并不复杂就是之前的点特征通道64提取最后特征通道1024形成最后的1088层通道。敏感的朋友可能会发现不对这个点特征通道跟点的顺序有关系啊直接加到最后的特征层去预测那不是每次点顺序不同输出结果也不同你小子是真牛逼啊有天赋作者是学完之后几天再复盘画这个图的时候才意识到天才。别自作多情了这都是故意这么设计的。好好反省一下为啥第一时间没有对这个设计拍案叫好而是质疑。首先这个模块是分割任务里的需要对每个点进行类型区分点的局部特征就是为了去适应点输入顺序变化时输出特征的顺序与输入点的顺序保持同步打乱置换等变性。如果没有这个64通道点的局部特征直接用与点顺序无关的1024层特征去分割那么无论点顺序怎么变预测每个点的类型都只有一种结果这显然时错误的。4.结束语好了哥们目前对PointNet网络的认知就到这了学到了的东西还是不少前人真是天才大家在学习的过程中有发现不一样的或者发现作者哪里存在bug的欢迎指正补充。