论文阅读:Permutation Matters: Anisotropic Convolutional Layer for Learning on Point Clouds
2020年7月17日 周五 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】
Permutation Matters: Anisotropic Convolutional Layer for Learning on Point Clouds
置换问题:用于点云学习的各向异性卷积层
本文标题
- Permutation Matters: Anisotropic Convolutional Layer for Learning on Point Clouds
- 置换问题:用于点云学习的各向异性卷积层
- 1. 摘要
- 2. 个人对文章的概括
- 3. 概念理解
- 3.1 Fibonacci lattice(菲波那契网格)
- 3.2 dot product attention(点积注意力)
- 3.3 sparsemax 和 sparse soft-permutation(稀疏软置换矩阵)
- 3.4 各向异性滤波器
- 4. 文章内容理解
- 4.1 Related Work
- 4.2 Our Approach
- 4.3 Experiments
- 参考文献
论文链接:https://arxiv.org/abs/2005.13135
这篇论文是我无意中从 Semantic 3D 的 benchmark 上看到,目前在 reduced-8 results 上排名第二,仅次于之前提出的 RandLA-Net。看了之后发现还挺有趣的,就想记录一下。
1. 摘要
在许多三维计算机视觉应用中,人们越来越需要在点云上进行高效的表示学习。卷积神经网络成功的背后是数据(如图像)是欧几里德结构的。然而,点云是不规则和无序的。已经开发了各种点神经网络,其具有各向同性滤波器或使用加权矩阵来克服点云上的结构不一致性。然而,各向同性滤波器或加权矩阵限制了表示能力。在本文中,我们提出了一种可置换的各向异性卷积运算(PAI-Conv),它根据球面上一组均匀分布的核点,利用点积注意计算每个点的软置换矩阵,并执行共享各向异性滤波。事实上,带有核点的点积类似于在自然语言处理(NLP)中广泛使用的Transformer中带有键的点积。从这个角度来看,PAI-Conv可以看作是点云的转换器,这在物理上是有意义的,并且可以与有效的随机点采样方法配合使用。在点云上的综合实验表明,与最新方法相比,PAI-Conv在分类和语义分割任务中产生了竞争性结果。
2. 个人对文章的概括
论文中主要提出了一种点云的置换各向异性卷积算子(PAI-Conv),简单来说就是:
点云在空间中的分布是无序的,不像二维图像那样,每个像素规则的排列在一个个小网格中。因此,先对每个点云的邻域进行重排序,使邻域变成像二维图像那样规则的结构,然后利用传统的CNN进行处理。具体做法如下:首先利用Fibonacci格生成一组均匀分布在球面上的核点;然后对于每个点,计算其邻域与核点之间的点积,并应用sparsemax得到稀疏软置换矩阵,利用稀疏软置换矩阵对局部邻域进行重新排序,使每个点云的邻域遵循由核点方向决定的规范顺序;最后与传统CNN相似,在卷积邻域上应用各向异性滤波器来提取点云的局部特征。
个人感觉这篇论文的思想类似于PointCNN,做法类似于KPConv。文章的整体思路并不难理解,但是提出了一些图像处理和NLP领域的概念做类比,首先要把这些概念搞清楚。
3. 概念理解
这部分内容主要是对文章中出现的一些概念进行解读,如果觉得直接看很无聊的话可以先看第四部分文章内容的理解,然后遇到不明白的概念在回来查阅即可。
3.1 Fibonacci lattice(菲波那契网格)
据文章所说,球面上均匀分布的核点是通过等面积投影将Fibonacci格[12]映射到球面上,得到的,具体的样子如下图所示。
关于Fibonacci格我上网搜了很久,都没搜到是什么。只能去看文章的引文[12],
发现引用的是一本1987年出版的名叫“数学”的书《Mathographics》。然后我就千方百计的从网上下载了这本书的电子档,但是从前到后翻了一遍后,只在某一页发现了下面这样一段话包含Fibonacci:
最后两句话的翻译是:C = T = 1.618 034是使多边形均匀堆积的唯一选择。在这种情况下,二次螺旋出现在斐波那契数字中:1、2、3、5、813、21、34、55,…
然后在后面发现这样一幅图,和论文里的图十分相似。
根据我个人的理解,感觉Fibonacci格就是按照Fibonacci数字规律构成的网格,然后按照论文中所说的——“通过等面积投影将Fibonacci格[12]映射到球面上”,就得到了均匀分布的核点。后来,我在知乎的一篇名为《10560 怎样在球面上「均匀」排列许多点?(上)》文章里也发现了利用Fibonacci网格在球面上均匀排列许多点,看来这种做法并不少见。
3.2 dot product attention(点积注意力)
文中提到的dot product attention 概念来自于NLP领域的一篇论文《attention is all you meed》中的Transformer模块中的scaled dot-product attention,在这里不对scaled dot-product attention做深究,只简单讲一下dot-product attention。
在NLP领域,attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射,如下图所示。
在计算attention时主要分为三步:
- 第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;
- 第二步一般是使用一个softmax函数对这些权重进行归一化;
- 最后将权重和相应的键值value进行加权求和得到最后的attention。
目前在NLP研究中,key和value常常都是同一个,即key=value。在我理解,因为Transformer模块中的attention使用点积(dot product)作为相似度函数,所以称为dot product attention。
我个人认为,广义上的attention本质上就是一种自动加权机制,它认为重要的部分权重分布高,它认为不重要的部分权重分布就低。在3D点云领域,attention常常用在特征或特征通道的加权,如RandLA-Net中的Attentive Pooling,就是在池化的时候,通过MLP计算相似度得到一组权重,然后对特征进行加权求和,得到池化后的特征。
3.3 sparsemax 和 sparse soft-permutation(稀疏软置换矩阵)
sparsemax的概念来源于一篇论文《From Softmax to Sparsemax: A Sparse Model of Attention and Multi-Label Classification》。我们都知道,softmax的作用是将神经网络的输出转换成概率分布,而sparsemax的作用与softmax类似,不同的是sparsemax的输出不再平滑,头尾都被“截断”了。
经过sparsemax后,就得到了稀疏软置换矩阵,我的理解是:这里置换矩阵的意思就是它可以将邻域的点置换成规范的顺序,软的意思就是矩阵里的值是概率分布,不是非0即1,稀疏的意思就是经过sparsemax后,由于截断机制,矩阵变的稀疏。这里讲的可能不是很清楚,看了下面论文里的例子后,就会明白这里所说的含义了。
3.4 各向异性滤波器
各向异性是一个物理概念,指的是:物质的全部或部分化学、物理等性质随着方向的改变而有所变化,在不同的方向上呈现出差异的性质。
对图像来说,各向异性就是在每个像素点周围四个方向上梯度变化都不一样,滤波的时候我们要考虑图像的各向异性对图像的影响,而各向同性显然是说各个方向的值都一致,常见的图像均值或者高斯均值滤波可以看成是各向同性滤波。
对点云来说,我的理解是各向同性就是对每个点云一视同仁的进行处理,例如PointNet中的MLP,对每个点云进行一维卷积。而各向异性就是考虑了点与点之间的位置关系,各向异性作用于空间中不同分布的点云时,所得到的结果也不一样。
4. 文章内容理解
4.1 Related Work
这部分内容主要是将本文提出的部分框架以及之前的一些框架与Transformer模块中的dot product attention部分进行对比,试图找出它们之间的一些相关性。
图1. 体系结构与现有方法的比较
首先看下图1(a),之前在3.2节已经讲过dot product attention,基本就对应着图1(a)的内容。在我看来,图1(a)中蓝色方框内的dot product attention指的是通过点积进行相似度识别。
图1(b)对应着本文提出的邻域重排部分,这里用Local position(我理解是局部坐标)代替Query,用Kernel (fixed)(固定的内核点)代替Key,用Feature(点云特征)代替Value,这里的dot product attention指的也是使用点积的方法进行相似度识别,然后经过sparsemax激活函数就得到了稀疏软置换矩阵,最后将特征与稀疏软置换矩阵相乘,就完成了邻域点的重新排序。
图1©是KPConv框架的一部分,与本文相同的是,使用的都是固定的核点,但是在获取权重时有所不同,KPConv是基于邻域点和核点之间的欧氏距离计算得到的权重。
图1(d)是PointCNN框架的一部分,与(b)、©图不同的是,PointCNN使用的是可学习的权重,其实就是对局部坐标通过MLP进行学习,这里用dot product attention我觉得有点不妥,PointCNN明明没有用到点积的概念,非要说attention的话,得到的X矩阵勉强可以说是权重。PointCNN就是希望通过X矩阵把无序点云置换成潜在的规范顺序。本文的思想有借鉴PointCNN,另外,KPConv在一定程度上也有把邻域点置换成规范的固定核点的意味,不过作者也说了:“这些方法没有明确解释为什么从输入点学习的变换或从核点计算的加权矩阵可以将不规则点云重新排列成规则和结构化的数据,使得各向异性滤波器能够生效”。作者认为——“本文提出的PAI-Conv被设计为显式地对邻居进行重采样和重排序,并且在物理上是有意义的。”
图1(e)是RandLA-Net框架的一小部分,主要就是Attentive Pooling这一块,在池化的时候通过MLP作用于点云特征自动地学习到一组权重,然后利用权重对特征进行筛选,体现了attention的思想。
4.2 Our Approach
图2:置换各向异性卷积操作(PAI-Conv)
上图2即为文章的核心方法——PAI-Conv。
图2(a):通过等面积投影将Fibonacci网格映射到球面上,得到一组均匀分布的核点。
图2(b):P~i{\tilde P_i}P~i 指的是一组邻域点,KKK 指的是一组核点,将它们进行dot product(其实就是矩阵相乘),然后经过sparsemax f(⋅)f\left( \cdot \right)f(⋅),就得到了稀疏软置换矩阵 Mi{M_i}Mi 。文章中是这么说的:“对于每个核点,点积保证与核点角度越小的局部邻近位置权重越大。稀疏矩阵保证了软置换矩阵的稀疏性,并且只选取与核点角度较小的点,否则权值为零。” 假设邻域就是5个点,那么P~i{\tilde P_i}P~i 的shape是5×35 \times 35×3,KKK 的shape也是 5×35 \times 35×3,那么由 Mi=f(P~iKT){M_i} = f\left( {{{\tilde P}_i}{K^{\rm{T}}}} \right)Mi=f(P~iKT) 很容易得到 Mi{M_i}Mi 的shape就是 5×55 \times 55×5了,如图2(b)所示。而且,由于PAI-Conv使用点积attention来重新排列局部邻域,这主要依赖于每个邻域点的方位而不是距离。因此,PAI-Conv对不均匀分布的点云是鲁棒的,并且可以很好地与随机点采样方法一起工作。
图2(c)\left( {\rm{c}} \right)(c):图2(c)\left( {\rm{c}} \right)(c)里, Xi{X_i}Xi 为一组邻域点的特征,特征的计算方式和 RandLA-Net 中计算点云特征的方式一样,通过以下两个公式得到:
ri,j=MLP(pi⊕(pi−pi,j)⊕∥pi−pi,j∥)\boldsymbol{r}_{i, j}=M L P\left(\boldsymbol{p}_{i} \oplus\left(\boldsymbol{p}_{i}-\boldsymbol{p}_{i, j}\right) \oplus\left\|\boldsymbol{p}_{i}-\boldsymbol{p}_{i, j}\right\|\right)ri,j=MLP(pi⊕(pi−pi,j)⊕∥∥pi−pi,j∥∥) xi,j=ri,j⊕fi,j\boldsymbol{x}_{i, j}=\boldsymbol{r}_{i, j} \oplus \boldsymbol{f}_{i, j}xi,j=ri,j⊕fi,j
然后,将特征与稀疏软置换矩阵相乘,就得到了排序后的邻域点,如图2(c)\left( {\rm{c}} \right)(c)所示,顺序与核点一致。但是在我看来,图2(c)\left( {\rm{c}} \right)(c)只是一个示意图,显示的是特征被重排序了,那么该如何证明高维空间里的特征确实是被排列成这样了呢?这里有个小小的疑问。
因为邻域点是根据固定核点的规范顺序重新排列的,所以可以在点云的每个点上应用共享的各向异性滤波器,该操作与常规卷积相同,可以表示为:yi=g(vec(X~i)⊤W+b)\boldsymbol{y}_{i}=g\left(\operatorname{vec}\left(\tilde{\boldsymbol{X}}_{i}\right)^{\top} \boldsymbol{W}+\boldsymbol{b}\right)yi=g(vec(X~i)⊤W+b)
其中,vec(⋅)vec\left( \cdot \right)vec(⋅)是向量化函数,可将矩阵转换为列向量。
作者说:“该操作与常规卷积相同”,我理解的是和图像上的2D CNN差不多,而不是PointNet中用的一维卷积,因为只有2D CNN才是各向异性的,设想一下打乱一张图片的像素排列,再用2D CNN进行卷积得到的结果肯定和原图像进行卷积的结果不同。有点好奇作者是如何用代码实现这一切的。
4.3 Experiments
分类用的是DGCNN的框架,分割用的是RandLA-Net的框架,基本上就是把原框架里的卷积改成PAI-Conv。分类和分割效果都还不错,这里我就不详细介绍了。
值得一提的是,由于本文和RandLA-Net 一样,使用随机点采样的方法代替其它计算昂贵的采样方法。PAI-Conv比RandLA-Net 的效率更高,因为本文在固定的内核点上使用点积,并且每个残差块只使用一个PAI-Conv层,而不是两个。
遗憾的是这篇文章的代码还没有开源,没办法去了解其中的一些细节,比如均匀分布的核点到底是如何生成的,各向异性滤波器是如何实现的等等,希望之后能有幸看到代码~
参考文献
https://zhuanlan.zhihu.com/p/25988652
https://blog.csdn.net/jgj123321/article/details/92803711
https://www.cnblogs.com/yoyo-sincerely/p/8966491.html
https://blog.csdn.net/qq_15602569/article/details/79560614
https://zhuanlan.zhihu.com/p/96067255
https://zhuanlan.zhihu.com/p/105433460
https://blog.csdn.net/qq_41058526/article/details/80578932
https://zhuanlan.zhihu.com/p/76607614
https://www.jianshu.com/p/ef41302edeef?utm_source=oschina-app
论文阅读:Permutation Matters: Anisotropic Convolutional Layer for Learning on Point Clouds相关推荐
- 全卷积(FCN)论文阅读笔记:Fully Convolutional Networks for Semantic Segmentation
论文阅读笔记:Fully Convolutional Networks forSemantic Segmentation 这是CVPR 2015拿到best paper候选的论文. 论文下载地址:Fu ...
- 【论文阅读】Spatio-Temporal Graph Convolutional Networks:...Traffic Forecasting[时空图卷积网络:用于交通预测的深度学习框架](1)
[论文阅读]Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecastin ...
- 模型预测控制与强化学习-论文阅读(一)Integration of reinforcement learning and model predictive
模型预测控制与强化学习-论文阅读(一)Integration of reinforcement learning and model predictive 最近才把初步的研究方向定下来,导师放养,实验 ...
- 论文阅读——CcNet:A cross-connected convolutional network for segmenting retinal vessels using multi-scale
论文阅读:CcNet:A cross-connected convolutional network for segmenting retinal vessels using multi-scale ...
- 论文阅读 Parallelly Adaptive Graph Convolutional Clustering Model(TNNLS2022)
论文标题 Parallelly Adaptive Graph Convolutional Clustering Model 论文作者.链接 作者: He, Xiaxia and Wang, Boyue ...
- 论文阅读:曝光过度,曝光不足增强算法Learning to Correct Overexposed and Underexposed Photos
论文阅读:Learning to Correct Overexposed and Underexposed Photos 需要解决的问题: 曝光误差可能是由多种因素造成的,例如TTL测光的测量误差.硬 ...
- 单细胞论文记录(part14)--CoSTA: unsupervised convolutional neural network learning for ST analysis
学习笔记,仅供参考,有错必纠 Authors:Yang Xu, Rachel Patton McCord Journal:BMC Bioinformatics Year:2021 Keywords: ...
- 论文阅读:DENSELY CONNECTED CONVOLUTIONAL NETWORKS
概述 作者观察到目前的深度网络有一个重要的特点是shorted connected,认为能够训练极深的网络很可能就是由于这个原因. 于是作者提出了Densely connected convoluti ...
- 论文阅读 SECOND:Sparsely Embedded Convolutional Detection
标题:SECOND:Sparsely Embedded Convolutional Detection 作者:Yan Yan,Yuxing Mao,and Bo Li 来源:sensors 2018 ...
- 经典论文阅读densenet(Densely Connected Convolutional Networks)
最近的工作表明,如果卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接,则它们可以更深入,更准确和有效地进行训练.具有L层的传统卷积网络具有L个连接-每个层及其后续层之间有一个连接.对于每个层,将 ...
最新文章
- Java 8 失宠!开发人员向 Java 11 转移...
- linux mysql jdk路径_教大家在如何Centos7系统中安装JDK、Tomcat、Mysql(文末附马哥linux全套视频教......
- php url 筛选,PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
- 「Githug」Git 游戏通关流程
- 2019考研调剂信息 计算机专业,2019考研分数线还未公布,已公布的调剂信息是真的吗?...
- 阅读总结:如何在生产中成功运用Docker
- 【C】@程序员,我们送给你一个成熟的Excel导入导出组件
- (jquery插件)打造百分比动态色彩条
- Python笔记-类装饰器
- oracle解锁用户实例,在Oracle 11G R2里启用示例帐户scott
- excel 汇总 mysql_利用mysql收集excel录入汇总
- http://www.jb51.net/article/51934.htm
- J2SE5 中的最新注释功能SuppressWarnings(转)
- 还在一节一节数链条吗?使用SOLIDWORKS参数化设计自动计算链条节数
- 苹果计算机格式化磁盘,苹果电脑怎么格式化
- C++下caffe使用教程
- 安卓手机连接ssh主机教程
- Java8 IF ELSE IF 优化
- 计算机类年度考核表,涉密人员年度考核表(科研军工类).doc
- java和c++复试面试题
热门文章
- 360插件化方案RePlugin学习笔记-汇总
- 访问文件或图片报403的处理方式
- python3字符串详解速查,新手流泪,老手顿悟
- xamp安装及环境配置教程
- Cordys BOP 4.3平台使用小经验—数据库连接管理、导出流程模型为XPDL
- 读取数据快慢的设备_目前在以下各种设备中,读取数据快慢的顺序是内存、硬盘、光盘和软盘。...
- Canvas 原生实现图片涂抹打马赛克功能
- Apache Axis2项目的联合创始人总结30条架构原则
- SQL Server 下载和安装详细教程(点赞收藏)
- 大型网站架设,LMP+Nginx负载均衡+Keepalived热备+Ceph存储集群架构+Web动静分离架构