摘要

由于数据结构的不规则和无序性,点云分析具有挑战性。为了获取三维几何图形,以往的工作主要依靠利用卷积、图或注意机制探索复杂的局部几何提取器。然而,这些方法在推断过程中产生了不利的延迟,并且在过去的几年里性能趋于饱和。在本文中,我们提出了一个新的视角来研究这一任务。我们注意到详细的局部几何信息可能不是点云分析的关键,我们引入了一个纯粹的残差MLP网络,称为PointMLP,它没有集成复杂的局部几何提取器,但仍然具有很强的竞争力。PointMLP配备了一个轻量级的几何仿射模块,在多个数据集上提供了最新的技术。在真实的ScanObjectNN数据集上,我们的方法甚至比之前的最佳方法高出3.3%的精度。我们强调,PointMLP在没有任何复杂操作的情况下实现了这种强大的性能,从而导致了更高的推理速度。与最近的CurveNet相比,PointMLP训练更快,测试更快,在ModelNet40基准上更准确。

引言

在本文中,我们的目标是建立一个深度网络,仅使用残差前馈MLP(residual feed-forward MLP),而不使用任何精细的局部特征探索点云分析。通过这样做,我们避免了复杂的局部几何提取器带来的令人望而却步的计算和持续的内存访问,并享受了高度优化的mlp带来的效率优势。为了进一步提高性能和泛化能力,我们引入了一种轻量级的局部几何仿射模块,自适应变换局部区域的点特征。我们将新的网络体系结构称为PointMLP。在基于mlp的设计理念的意义上,我们的PointMLP类似于PointNet和pointnet++。
尽管设计理念很简单,但PointMLP(以及精英版本)在3D点云分析方面表现出了卓越的性能。具体来说,我们在ModelNet40基准上实现了最先进的分类性能,为94.5%,在真实的ScanObjectNN数据集上,我们的分类精度比相关工作高出3.3%,推理速度显著提高。

点云的深度残差MLP

我们建议通过一个简单的前馈残差MLP网络 ( PointMLP ) 来学习点云表示,该网络将MLP提取的局部特征分层次地聚合起来,并放弃使用精细的局部几何提取器。为了进一步提高鲁棒性和性能,我们还引入了一个轻量级的几何仿射模块,将局部点转换为正态分布。我们的方法的详细框架如图所示:

PointMLP中一个阶段的概述。给定一个输入点云,PointMLP利用 residual point MLP 模块逐步提取局部特征。在每个阶段,我们首先使用几何仿射模对局部点进行变换,然后分别在聚合操作前后提取它们。PointMLP通过重复多个阶段,逐步扩大接受域,建立完整的点云几何信息模型。

回顾 基于点的方法

基于点的点云分析方法的设计可以追溯到PointNet和pointnet++,这个方向背后的动机是从一开始就直接处理点云,以避免不必要的渲染过程。
给定一个点云 P={pi∣i=1,2,...,N}∈RN×3P = \lbrace p_i | i=1,2,...,N \rbrace \in R^{N \times 3}P={pi​∣i=1,2,...,N}∈RN×3, 基于点的方法旨在使用神经网络直接学习 PPP 的底层表示 fff.最具开创性的作品之一是PointNet++,它通过叠加多个学习阶段来学习分层特征。在每个阶段中, NsN_sNs​ 个点以最远点采样方法被重采样,以sss来索引采样阶段,每个采样点选择 KKK 个临近点,然后采用最大池化方法进行聚合以获取局部结构。概念上,pointnet++的核心操作可以表述为:gi=A(Φ(fi,j)∣j=1,2,...,K)g_i=A(\Phi(f_{i,j}) | j=1,2,...,K)gi​=A(Φ(fi,j​)∣j=1,2,...,K) 其中 AAA 表示最大池化聚合操作,Φ(⋅)\Phi(\cdot)Φ(⋅) 表示局部特征提取函数(PointNet++中的MLP),fi,jf_{i,j}fi,j​ 表示第 iii 个采样点的第 jjj 个临近点的特征。通过这样做,pointnet++能够有效地捕获局部几何信息,并通过重复操作逐步扩大接受域。
在网络架构设计的意义上,pointnet++展示了一个通用的点云分析策略。在此基础上,提出了一些即插即用的方法,主要是局部特征提取器 Φ(⋅)\Phi(\cdot)Φ(⋅) 。一般情况下,这些局部特征提取器利用卷积、图或自我注意机制深入挖掘局部几何信息。在RSCNN中,提取器主要是通过探索点关系来实现的:Φ(fi,j)=MLP([∥xi,j−xi∥2,xi,j−xi,xi,j,xi])⋅fi,j,∀j∈{1,2,...,K}\Phi(f_{i,j})=MLP([\lVert x_{i,j}-x_i \rVert _2, x_{i,j}-x_i, x_{i,j}, x_i]) \cdot f_{i,j}, \forall j \in \lbrace 1,2,...,K \rbraceΦ(fi,j​)=MLP([∥xi,j​−xi​∥2​,xi,j​−xi​,xi,j​,xi​])⋅fi,j​,∀j∈{1,2,...,K} 其中 [⋅][ \cdot ][⋅] 是串联操作,MLP是一个由全连接(FC)层、批归一化层和激活函数组成的小网络。与RSCNN不同,Point Transformer 在点云分析中引入了自我注意机制,并考虑了局部区域中成对点之间的相似性。为此,它将提取器重新定义为:Φ(fi)=∑j=1kρ(γ(φ(fi)−ψ(fi,j)+δ))⊙(α(fi,j+δ))\Phi(f_i)=\sum^{k}_{j=1} \rho(\gamma( \varphi(f_i)-\psi(f_{i,j})+\delta) ) \odot (\alpha(f_{i,j}+\delta))Φ(fi​)=j=1∑k​ρ(γ(φ(fi​)−ψ(fi,j​)+δ))⊙(α(fi,j​+δ)) 其中γ,ψ,φ,α\gamma, \psi, \varphi, \alphaγ,ψ,φ,α是线性映射函数,⊙\odot⊙ 将两个矩阵的对应元素相乘,ρ\rhoρ 进行了 softmaxsoftmaxsoftmax 归一化。特别地,点转换器引入了一种相对位置编码,δ=θ(xi−xi,j)\delta=\theta(x_i-x_{i,j})δ=θ(xi​−xi,j​),其中,相对位置通过两个FC层和一个ReLU非线性层进行编码,成为注意力权值和特征值。这种轻量级的位置编码器大大提高了 Point Transformer 的性能。

PointMLP 框架

为了摆脱上述限制,我们提出了一个简单而有效的基于mlp的点云分析网络,没有引入复杂或繁重的操作。我们的PointMLP的关键操作可以表述为:gi=Φpos(A(Φpre(fi,j)∣j=1,2,...,K))g_i=\Phi_{pos}(\mathcal A(\Phi_{pre}(f_{i,j}) | j=1,2,...,K))gi​=Φpos​(A(Φpre​(fi,j​)∣j=1,2,...,K)) 其中 Φpos(⋅)\Phi_{pos}(\cdot)Φpos​(⋅) 和 Φpre(⋅)\Phi_{pre}(\cdot)Φpre​(⋅) 是残差点MLP块, Φpre(⋅)\Phi_{pre}(\cdot)Φpre​(⋅) 用来从局部区域学习共享权重,Φpos(⋅)\Phi_{pos}(\cdot)Φpos​(⋅) 用于提取深度聚合特征。映射函数可以写成一系列同构的残差点MLP块,MLP(x)+xMLP (x) + xMLP(x)+x,其中MLP由FC层、归一化层和激活层(重复两次)组合而成。聚合函数 A(⋅)\mathcal A(\cdot)A(⋅) 表示最大池操作。上式描述了PointMLP的一个阶段。对于层次结构和深度网络,我们递归地重复 sss 个阶段的操作。
尽管PointMLP的框架很简洁,但它展示了一些突出的优点:1) 由于PointMLP只利用mlp,所以它自然不受排列的影响,这完全符合点云的特点。2) 通过合并残差连接,PointMLP可以很容易地扩展到几十层,从而得到深度特征表示。3) 此外,由于没有包含复杂的提取器,主要操作只是高度优化的前馈mlp,即使我们引入更多的层,我们的PointMLP仍然可以高效地执行。
我们实验中的网络使用了四个阶段,在 Φpos(⋅)\Phi_{pos}(\cdot)Φpos​(⋅) 和 Φpre(⋅)\Phi_{pre}(\cdot)Φpre​(⋅) 中都有两个残差块。我们采用K近邻算法(kNN)来选择临近点,并设置K为24。

几何仿射模块

虽然在 Φpos(⋅)\Phi_{pos}(\cdot)Φpos​(⋅) 和 Φpre(⋅)\Phi_{pre}(\cdot)Φpre​(⋅) 中可以简单地通过考虑更多的阶段或堆积更多的块来增加深度,但我们注意到,简单的深度MLP结构会降低精度和稳定性,使模型的鲁棒性降低。这可能是由于局部区域几何结构稀疏、不规则造成的。不同局部区域之间不同的几何结构可能需要不同的提取器,但共享剩余mlp很难实现这一点。我们具体化了这种直觉,并开发了一个轻量级的几何仿射模块来解决这个问题。
令{fi,j}j=1,2,...,K∈Rk×d\lbrace f_{i,j} \rbrace_{j=1,2,...,K} \in \mathbb R^{k \times d}{fi,j​}j=1,2,...,K​∈Rk×d 表示 kkk 个被分好组的点 fi∈Rdf_i \in \mathbb R^dfi​∈Rd 的局部临近点,每个点 fi,jf_{i,j}fi,j​ 都是一个 ddd 维特征向量,用以下公式对这个局部区域进行变换:{fi,j}=α⊙{fi,j}−fiσ+ϵ+β,σ=1k×n×d∑i=1n∑j=1k(fi,j−fi)2\lbrace f_{i,j} \rbrace =\alpha \odot \frac{\lbrace f_{i,j} \rbrace-f_i}{\sigma+\epsilon}+ \beta , \sigma=\sqrt{\frac{1}{k \times n \times d}\sum^n_{i=1}\sum^k_{j=1}(f_{i,j}-f_i)^2}{fi,j​}=α⊙σ+ϵ{fi,j​}−fi​​+β,σ=k×n×d1​i=1∑n​j=1∑k​(fi,j​−fi​)2​ 其中 α∈Rd\alpha \in \mathbb R^dα∈Rd 和 β∈Rd\beta \in \mathbb R^dβ∈Rd 是可学习的参数,ϵ=1e−5\epsilon=1e^{-5}ϵ=1e−5 是用于维持数值稳定的极小值。注意,ϵ\epsilonϵ 是一个标量,描述了在所有局部组和通道上的特征偏差。通过这样做,我们将局部点转换为正态分布,同时保持原来的几何性质。

计算复杂度和精简版结构

虽然主流深度学习框架对FC层进行了高度优化,但理论参数数量和计算复杂度仍然较高。为进一步提高效率,我们引入了一个轻量级的PointMLP版本,命名为 PointMLP−elitePointMLP-elitePointMLP−elite,其参数小于0.7M,推理速度显著(在ModelNet40基准上为176个样本/秒)。
受 [11, 22]的启发,我们给出了映射函数 Φpos(⋅)\Phi_{pos}(\cdot)Φpos​(⋅) 和 Φpre(⋅)\Phi_{pre}(\cdot)Φpre​(⋅) 的瓶颈结构。我们选择将中间FC层的通道数减少 rrr 倍,并增加通道数作为原始的 feature map,这一策略与Vaswani等人增加中间特征维数的设计3 4相反。根据经验,我们没有观察到显著的性能下降。该方法剩余MLP块的参数从2d22d^22d2减小到2rd2\frac{2}{r}d^2r2​d2。默认情况下,我们在 PointMLP−elitePointMLP-elitePointMLP−elite中将 rrr 设置为4。此外,我们还对网络架构进行了微调,减少了MLP块和嵌入维度数。

网络细节


  1. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep Residual Learning for Image Recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 770-778. ↩︎

  2. Hu, J., Shen, L., Albanie, S., Sun, G., & Wu, E. (2020). Squeeze-and-Excitation Networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 42, 2011-2023. ↩︎

  3. Vaswani, A., Shazeer, N.M., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, L., & Polosukhin, I. (2017). Attention is All you Need. NIPS. ↩︎

  4. Touvron, H., Bojanowski, P., Caron, M., Cord, M., El-Nouby, A., Grave, E., Izacard, G., Joulin, A., Synnaeve, G., Verbeek, J., & J’egou, H. (2021). ResMLP: Feedforward networks for image classification with data-efficient training. ArXiv, abs/2105.03404. ↩︎

【文献翻译】Point MLP:一个简单的残差MLP框架相关推荐

  1. 测试开发——搭建一个简单 web服务(flask框架基础)项目实战

    搭建一个简单 web服务-flask框架 一.什么是wsgi? 二.搭建一个简单 web服务 三.扩展 四.请求加参数的情况 五.安装flask 一.什么是wsgi? wsgi是webserver和a ...

  2. 实现一个简单的python自动化测试框架

    实现一个简单的python自动化测试框架. 父类中实现runTest()方法和assertEqual().子类编写test开头的测试函数,其中调用assertEqual(). 实例化子类,运行父类中r ...

  3. 一个简单的游戏服务器框架 .

    最近一段时间不是很忙,就写了一个自己的游戏服务器框架雏形,很多地方还不够完善,但是基本上也算是能够跑起来了.我先从上层结构说起,一直到实现细节吧,想起什么就写什么. 第一部分 服务器逻辑 服务器这边简 ...

  4. 一个简单的CPP处理框架

    好久没有在csdn上写过东西了,这么多年,一方面是工作忙,下班到家也没有开过电脑了,要陪小孩玩: 下面分享一段代码,是用CPP做的一个简单的消息(协议)处理框架: 是通过成员函数指针+map来实现的: ...

  5. 一个简单的游戏服务器框架

    最近看到百度空间的一个帖子,不错,在这里整理下,转载至我的博客里,开始自己慢慢琢磨写一个框架. 我先从上层结构说起,一直到实现细节吧,想起什么就写什么. 第一部分 服务器逻辑 服务器这边简单的分为三个 ...

  6. 从零开始搭建一个简单的ui自动化测试框架02(pytest+selenium+allure)

    二.先搭一个架子 在我还是小白连py语法都不太熟悉的时候,经常在网上看关于自学ui自动化测试的博客,最熟悉的套路莫过于先给你介绍一下selenium的各个api,然后写一套代码去登陆微博或者百度什么的 ...

  7. local tomcat 找不到springmvc里的包_唰唰的手撕一个简单的Spring Mvc 框架

    @[TOC] 自定义实现Spring Mvc框架 前言 在使用Spring Mvc时候我们需要配置一个中央处理器DispatcherServlet用于分发请求,根据url查找处理器,然后再根据处理器 ...

  8. 一个简单的使用EVP框架的加密过程

    const EVP_CIPHER *cipher;unsigned char key[24],iv[8],in[100],out[108],de[100];int i,len,inl,outl,tot ...

  9. C语言编写的一个简单通用的日志框架----支持日志等级,日志颜色,打印到文件等设置

    日常工作中常常需要输出日志进行调试,本文提供了一个C语言编写的日志框架.可以输出日志到文件或者是终端,支持日志等级设置,不同日志等级可以设置不同的颜色,另外还可以设置进程名.模块名.函数名等的输出,能 ...

最新文章

  1. android资源之res/raw和assets的异同
  2. 已添加了具有相同键的项_奥迪Q2L已上市,配LED光源,21.88万起,搭1.4T
  3. 在JS中如何判断undefined和null
  4. 机器学习之 weka学习(五)示例用法
  5. python项目选择背景_Python - - 项目实战 - - 游戏背景
  6. rinetd 进行转发
  7. Linux开放mysql权限给任意主机远程登陆
  8. java开发spc分析软件,SPC、五大工具带你深入实战......OMG,收藏!
  9. 《人人都该买保险》读书笔记
  10. 计算机属性资源管理器已停止工作,资源管理器已停止工作,详细教您怎么解决资源管理器已停止工作...
  11. 看看十二星座哪个更适合当程序员
  12. matlab gnuplot,Gnuplot 64位版(gnuplot颜色渲染)V5.2.3 安装版
  13. 【uniapp前端组件】仿微信通讯录列表组件
  14. Migrando电子商务可以实现Iluria para o Shopify(Python的标准)
  15. 2019前端学习路线图
  16. 分布式大数据多维分析引擎:Kylin 在百度地图的实践
  17. 【UML建模】(3) UML建模之类图
  18. 2012年度最佳 Web 前端开发工具和框架——《上篇》
  19. TP5接入快递查询api
  20. vue-amap实现多种形式的地理围栏效果

热门文章

  1. HTML5+CSS3海绵宝宝网站设计(2)
  2. 小团队也能做DDD-中篇
  3. Kubernetes(K8S)各种错误及解决方法
  4. 对互联网的认识和看法,直接关系到产业互联网的路径发展
  5. 2017 Multi-University Training Contest 1 solutions BY 北京航空航天大学
  6. cad指示箭头快捷键命令_Auto CAD2014画箭头快捷键是什么啊??
  7. Python绘制GPS轨迹图
  8. chroot jail
  9. Python基础与拾遗9:Python中的函数与作用域
  10. 福布斯:区块链科技从边缘到主流的…