2020年7月16日 周四 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】
Permutation Matters: Anisotropic Convolutional Layer for Learning on Point Clouds
置换问题:用于点云学习的各向异性卷积
这篇论文是我无意中从 Semantic 3D 的 benchmark 上看到,目前在 reduced-8 results 上排名第二,仅次于之前提出的 RandLA-Net。看了之后发现还挺有趣的,就想记录一下。
一. 摘要
在许多三维计算机视觉应用中,人们越来越需要在点云上进行高效的表示学习。卷积神经网络成功的背后是数据(如图像)是欧几里德结构的。然而,点云是不规则和无序的。已经开发了各种点神经网络,其具有各向同性滤波器或使用加权矩阵来克服点云上的结构不一致性。然而,各向同性滤波器或加权矩阵限制了表示能力。在本文中,我们提出了一种可置换的各向异性卷积运算(PAI-Conv),它根据球面上一组均匀分布的核点,利用点积注意计算每个点的软置换矩阵,并执行共享各向异性滤波。事实上,带有核点的点积类似于在自然语言处理(NLP)中广泛使用的Transformer中带有键的点积。从这个角度来看,PAI-Conv可以看作是点云的转换器,这在物理上是有意义的,并且可以与有效的随机点采样方法配合使用。在点云上的综合实验表明,与最新方法相比,PAI-Conv在分类和语义分割任务中产生了竞争性结果。
二. 个人对文章的概括
论文中主要提出了一种点云的置换各向异性卷积算子(PAI-Conv),简单来说就是:
点云在空间中的分布是无序的,不像二维图像那样,每个像素规则的排列在一个个小网格中。因此,先对每个点云的邻域进行重排序,使邻域变成像二维图像那样规则的结构,然后利用传统的CNN进行处理。具体做法如下:首先利用Fibonacci格生成一组均匀分布在球面上的核点;然后对于每个点,计算其邻域与核点之间的点积,并应用sparsemax得到稀疏软置换矩阵,利用稀疏软置换矩阵对局部邻域进行重排序,使每个点云的邻域遵循由核点方向决定的规范顺序;最后与传统CNN相似,在卷积邻域上应用各向异性滤波器来提取点云的局部特征。
个人感觉这篇论文的思想类似于PointCNN,做法类似于KPConv。文章的整体思路并不难理解,但是提出了一些图像处理和NLP领域的概念做类比,首先要把这些概念搞清楚。
三. 概念理解
1. Fibonacci格
据文章所说,球面上均匀分布的核点是通过等面积投影将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网格在球面上均匀排列许多点,看来这种做法并不鲜见。
2. dot product attention(点积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。
因此在我看来,广义上的attention本质上就是一种自动加权机制,它认为重要的部分权重分布高,它认为不重要的部分权重分布就低。
未完待续。。。