三维深度学习之pointnet系列详解(一)

目前二维深度学习取得了很大的进步并且应用范围越来越广,随着三维设备的发展,三维深度学习得到了很大的关注。

最近接触了三维深度学习方面的研究,从pointnet入手,对此有了一点点了解希望记录下来并分享,若有误希望指正~持续更新

以下所有的解读基于点云分类

一、三维深度学习简介

二、点云存在的问题

三、pointnet网络结构详解

四、pointnet代码详解


一、三维深度学习简介

  1. 多视角(multi-view):通过多视角二维图片组合为三维物体,此方法将传统CNN应用于多张二维视角的图片,特征被view pooling procedure聚合起来形成三维物体;
  2. 体素(volumetric):通过将物体表现为空间中的体素进行类似于二维的三维卷积(例如,卷积核大小为5x5x5),是规律化的并且易于类比二维的,但同时因为多了一个维度出来,时间和空间复杂度都非常高,目前已经不是主流的方法了;
  3. 点云(point clouds):直接将三维点云抛入网络进行训练,数据量小。主要任务有分类、分割以及大场景下语义分割;
  4. 非欧式(manifold,graph):在流形或图的结构上进行卷积,三维点云可以表现为mesh结构,可以通过点对之间临接关系表现为图的结构。流形表达比较抽象,用到拉普拉斯特征什么的,我也不太懂……

二、点云存在的问题

  1. 无序性:点云本质上是一长串点(nx3矩阵,其中n是点数)。在几何上,点的顺序不影响它在空间中对整体形状的表示,例如,相同的点云可以由两个完全不同的矩阵表示。 如下图左边所示:
 我们希望得到的效果如下图右边:N代表点云个数,D代表每个点的特征维度。不论点云顺序怎样,希望得到相同的特征提取结果。

  

我们知道,网络的一般结构是:提特征-特征映射-特征图压缩(降维)-全连接。

  下图中x代表点云中某个点,h代表特征提取层,g叫做对称方法,r代表更高维特征提取,最后接一个softmax分类。g可以是maxpooling或sumpooling,也就是说,最后的D维特征对每一维都选取N个点中对应的最大特征值或特征值总和,这样就可以通过g来解决无序性问题。pointnet采用了max-pooling策略。


 2.旋转性:相同的点云在空间中经过一定的刚性变化(旋转或平移),坐标发生变化,如下图所示:

我们希望不论点云在怎样的坐标系下呈现,网络都能正确的识别出。这个问题可以通过STN(spacial transform netw)来解决。二维的变换方法可以参考这里,三维不太一样的是点云是一个不规则的结构(无序,无网格),不需要重采样的过程。pointnet通过学习一个矩阵来达到对目标最有效的变换。


三、pointnet网络结构详解

先来看网络的两个亮点:

  1. 空间变换网络解决旋转问题:三维的STN可以通过学习点云本身的位姿信息学习到一个最有利于网络进行分类或分割的DxD旋转矩阵(D代表特征维度,pointnet中D采用3和64)。至于其中的原理,我的理解是,通过控制最后的loss来对变换矩阵进行调整,pointnet并不关心最后真正做了什么变换,只要有利于最后的结果都可以。pointnet采用了两次STN,第一次input transform是对空间中点云进行调整,直观上理解是旋转出一个更有利于分类或分割的角度,比如把物体转到正面;第二次feature transform是对提取出的64维特征进行对齐,即在特征层面对点云进行变换。
  2. maxpooling解决无序性问题:网络对每个点进行了一定程度的特征提取之后,maxpooling可以对点云的整体提取出global feature。

再来看网络结构:


 其中,mlp是通过共享权重的卷积实现的,第一层卷积核大小是1x3(因为每个点的维度是xyz),之后的每一层卷积核大小都是1x1。即特征提取层只是把每个点连接起来而已。经过两个空间变换网络和两个mlp之后,对每一个点提取1024维特征,经过maxpool变成1x1024的全局特征。再经过一个mlp(代码中运用全连接)得到k个score。分类网络最后接的loss是softmax。

四、pointnet代码详解

好像也没有特别需要讲的……重点我都框出来了

网络模型部分




变换矩阵部分,以第一个STN为例



  • 106
    点赞
  • 748
    收藏
    觉得还不错? 一键收藏
  • 43
    评论
三维重建是一个相对复杂的任务,需要使用多种深度学习技术以及计算机视觉技术。以下是一个基于深度学习三维重建代码的基本框架: 1. 数据预处理 首先需要提供三维模型的数据,这些数据可以是点云数据、深度图像或者是多张二维图像。对于点云数据,可以通过三角剖分等算法构建三角网格,然后将其转换为三角形面片的形式。对于深度图像或多张二维图像,可以使用图像处理算法提取出物体表面的轮廓,然后根据轮廓生成三维模型。 2. 深度学习模型训练 对于三维重建任务,可以使用多种深度学习模型进行训练,包括卷积神经网络、自编码器、生成对抗网络等。其中,生成对抗网络(GAN)是一种非常常用的模型,可以通过对抗训练的方式生成高质量的三维模型。在训练过程中,需要将三维模型数据转换为网络可以处理的张量形式,并且需要定义损失函数和优化器进行模型优化。 3. 三维重建 经过深度学习模型训练后,可以使用训练好的模型对新的三维模型进行重建。对于点云数据,可以直接将其输入到模型中进行重建;对于深度图像或多张二维图像,需要使用图像处理算法提取出物体表面的轮廓,然后根据轮廓生成三维模型。在重建过程中,可以使用一些优化算法对模型进行调整,使其更加符合实际情况。 总之,基于深度学习三维重建是一个比较复杂的任务,需要涉及到多种技术和算法。如果您需要更具体的代码实现,请提供更详细的任务描述和数据,以便进行更具体的讨论和帮助。
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值