随着最近几年神经网络在CV、NPL等领域取得重大的成果,因此就有学者希望将神经网络应用于3D任务中。在这篇文章(PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation)出现之前,一般在3D任务中用的最多的数据格式是3D体素(3D voxel grids)以及多视角投影,因为3D体素数据格式可以直接用过3D卷积处理数据,多视角投影数据格式可以通过2D卷积处理数据,这两种数据格式都可以利用CNN算子共享权重减少计算量;但是对于3D体素格式来说任务效果以及计算量是取决于它的分辨率的,高分辨当然可以获得不错的效果,但是计算量会几何的增加,对于多视角投影来说往往会损失一些几何信息,比如遮挡。点云数据在3D几何表示中作为一种重要的数据格式,它不存在着3D体素以及多视角投影遇到的那些问题,因此这篇文章提出了一种通用的用于处理点云数据的神经网络框架。

模型架构

我们先来看PointNet的整理框架,如下图1所示,可以将框架分成两个部分,第一个部分用于提取全局特征,第二个部分用于点云分类或者点云分割。对于第一个部分,首先是通过一个仿射变换模块(T-Net)对数据做仿射变换,然后由共享的多层感知器(MLP)逐点提取特征,此时数据维度为64,然后又经过一个T-Net模块做放射变换,再由共享的多层感知器逐点提取特征,此时的数据维度为1024,最后再经过max pool得到一个1024维的向量。对于第二个部分,如果是点云分类任务,可以直接将全局特征输入mlp预测scores,如果是点云分割,那么需要将全局特征与每个顶点向量cat起来,然后输入给mlp对每个顶点分类。后面我们逐个介绍为什么作者要设计这些模块。

图1 整体架构

T-Net模块 

如果对于点云分类或者点云分割任务来说,我们希望点云无论在什么仿射变换下都能得到一样的稳定的结果,一般的我们可以想到通过仿射变换增强来达到这个效果,但是作者是直接让网络学习这样一个仿射变换矩阵来解决这个问题的。

我看了一下代码,这个模块由三部分组成。第一个部分是三层共享的mlp构成的,用于提取特征;第二个部分就是一个对称函数max,用于聚合出全局信息;第三个部分是两层的全连接隐藏层加上一个线性层,用于预测仿射变换矩阵。

为了减少训练难度,提高训练的稳定性,作者加入了一个正则化项:

I是一个单位正交矩阵,A是网络预测出来的仿射变换矩阵。

max pool 

我们知道点云数据的顶点排列顺序是无序的,我们希望无论顶点是怎么排列都不会影响最终的处理结果,作者想到了三种处理办法。方法一是先对所有的顶点按照一定规则进行排序,然后输入给mlp;方法二是将点云数据当成一系列的sequence去训练RNN,但是对于顶点的排列顺序要做扰动增强;方法三是采用一个简单的对称函数聚合所有顶点的信息。对于这三个方法在点云分类任务上做了对比实验,如下图所示,方法三的精度都比较高,其中max pooling是最高的。

图2

Theoretical Analysis
         另外作者还对pointnet提供了一些理论分析与结果,这里捡比较重要的两个来说。第一个是只要神经元足够多,pointnet也可以逼近任意的连续函数,这里也就为pointnet处理各种复杂的3D任务提供了理论支持。

第二个是pointnet其实是提取了关键点(key points)的特征,这些关键点形成了物体的skeleton,如下图所示。只要点云中包括了这些关键点,那么pointnet提取出来的特征就是不变的。当max pooling出来的维度k比较小的时候,k会限制关键点的数量,因为实际关键点的数量不会超过k,此时k越大关键点数量也就越多,模型表现也就越好也更稳定。

图3

论文解读PointNet(用于点云处理的深度学习框架)相关推荐

  1. 学界 | DeepMind论文解读:通过删除神经元来了解深度学习

    作者:杨文 深度神经网络由许多单独的神经元组成,它们以复杂且违反人直觉的方式组合起来,以解决各种具有挑战性的任务.这种复杂性一方面赋予神经网络神秘力量,另一方面,也让它们变成了人类难懂的黑匣子. 了解 ...

  2. 论文解读:通过可解释的集成深度学习学习蛋白质组范围内蛋白质-蛋白质结合位点的蛋白质语言

    Title:Learning the protein language of proteome-wide protein-protein binding sites via explainable e ...

  3. 关于最近用于细粒度车辆分类的深度学习框架的系统评估

    本文是一篇关于细粒度分类的深度框架评估的论文,主要利用最有前景的CNN进行了各种实验,探究了直接微调具有SOTA性能的CNN在图像分类任务上的潜能.可以作为车辆再识别与车辆细粒度分类的一个知识补充. ...

  4. 利用深度学习框架实现点云配准(以PointNetLK项目为例)

    1.前言 之前已经介绍过了基于BnB算法的点云配准应用.熟悉点云配准近年来发展趋势的同学应该知道,目前CVPR,ICCV这些会议,比较主流的方法还是基于深度学习来建立点云的对应关系,尤其以基于Poin ...

  5. 点云上的深度学习及其在三维场景理解中的应用————PointNet(一)

    最近在学3D方向的语义分析. 师兄推荐了一个哔哩大学的将门创投 | 斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用!的宝藏视频,我会多看几遍,并写下每次观看笔记. 下文的截图 ...

  6. 论文解读:《多层肽 - 蛋白质相互作用预测的深度学习框架》

    Title:A deep-learning framework for multi-level peptide–protein interaction prediction 期刊:nature com ...

  7. 【论文阅读】Spatio-Temporal Graph Convolutional Networks:...Traffic Forecasting[时空图卷积网络:用于交通预测的深度学习框架](1)

    [论文阅读]Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecastin ...

  8. 论文解读:多层肽 - 蛋白质相互作用预测的深度学习框架

    Title:A deep-learning framework for multi-level peptide–protein interaction prediction 期刊:nature com ...

  9. 论文解读:Sadeepcry:使用自我注意和自动编码器网络的蛋白质结晶倾向预测的深度学习框架

    SADeepcry: a deep learning framework for protein crystallization propensity prediction using self-at ...

最新文章

  1. TitanDB GC详细实现原理 及其 引入的问题
  2. java kinect 人体识别_深度图像的Kinect骨架算法
  3. OEA 框架演示 - 快过原型的开发
  4. Vue学习笔记:Ref的使用
  5. c语言实现python列表_用C语言实现python的扩展模块
  6. 【linux】kali 创建应用程序桌面图标(以burpsuite为例)
  7. 年底了,到底要不要跳槽?
  8. 从IBM的计划中分析出中国重新相当然的错误选择吗
  9. API接口管理平台-rap
  10. 3D城市模型、实景城市图...航测无人机轻松构建另一个世界
  11. 008 计算某一日是这一年的第几天
  12. java加载图片的问题
  13. 凹凸技术揭秘 · Tide 研发平台 · 布局研发新基建
  14. SignalTap II 之 Power-Up Trigger
  15. android中如何找到数据库文件
  16. Hanlp配置自定义词典遇到的问题与解决方法
  17. Java常用工具类库
  18. 使用JAVA写一个简单的日历
  19. CSC停止问题的解决
  20. otrs安装mysql_安装OTRS | 学步园

热门文章

  1. Android Studio基础_学校课程案例_笔记
  2. 改mdb为asp所带来的灾难
  3. 网络环境下连接SQL Server和Oracle 19c的方法
  4. kettle插件开发
  5. 基于tensorflow2.3.0的图片识别多元输出案例分析
  6. 程序江湖:第十六章 天上的团队建设
  7. Android 滚动的公告栏
  8. PTA 链表逆置(函数题)
  9. 生成对抗网络(GAN)的前沿进展(论文、报告、框架和Github资源)汇总
  10. 菜鸟为何恐慌紧随京东推出智能送货机器人?