)
对SPLATNet的理解简要介绍SPLATNet为什么要直接处理点云呢BCLs(bilateral convolutional layers)Step one: SplatStep two: convolveStep three: sliceBCL的一些性质SPLATNet网络结构总结参考文献简要介绍SPLATNet其实CVPR2019又出了很多关于点云的文章SPLATNet是导师发给LZ的那必然是要好好琢磨一下具体的优势在哪了。这篇文章作者是有oral的所以可以直接看到作者对这篇Paper的讲解但是由于时间限制所以存在很多细节没有介绍所以如果只想了解大概框架建议直接去看原作者的presentation。值得一提的是本文的作者也是MVCNN的作者所以他还是对点云处理这一套有着比较深厚的理解的。还有一点因为LZ汇报要求使用英文结果还是各种专业词汇会有点卡壳哈哈还是得多练练英文口语。脑子理解了反应的全是中文然后还得想成英文就会比较慢这也是LZ要修炼的一个技能。切入正题如下图所示可以看到SPLATNet主要分成两类网络一类是只处理点云的网络称为SPALTNet3D网络另一类是SPLATNet2D-3D网络可以同时处理图像特征和点云特征。所以说SPALTNet可以直接处理点云。为什么要直接处理点云呢这里直接放出一张LZ做的PPT吧比较简陋就凑合着看吧。这是LZ写的关于PointNet的motivation这里面也可以同样解释为什么要直接使用点云作为输入https://blog.csdn.net/Felaim/article/details/84403159但是PointNet/PointNet同样也会存在问题由于点的稀疏性和无序性所以原文中也只用了MLP来对特征进行升维然后使用最大池化来描述全局特征。所以没有办法使用正常的卷积操作来调整其感受野的大小同样使用最大池化也会丢失表面信息和纹理信息等。既然作者提出来PointNet/PointNet存在这样的问题必然SPLATNet就是可以解决这样的问题那么问题来了SPLATNet是怎么解决的呢BCLs(bilateral convolutional layers)一图胜万言O(∩_∩)O哈哈~深有感触。可以看SPLATNet的详细结构图可以看到以SPLATNet-3D为例可以看到主要就有两个模块一个模块是1x1的卷积用来做升降维通道特征融合的另一个部分就是BCL(bilateral convolutional layer)双边卷积层。所以在SPLATNet中最重要的就是双边卷积最初LZ还在考虑双边卷积是不是和双边滤波是不是有什么联系后来发现并没有太多的联系只是借了这个概念来说因为双边滤波既有空间的信息也有亮度/颜色的信息所以采用双边卷积可能也是套用了这个概念因为这个卷积既处理了位置间的信息也可以有颜色RGB的信息或者法线所以叫双边卷积可能吧。如下图所示是双边卷积的三个主要步骤其实如果阅读文章的LZ觉得应该算是四个步骤。。。分别是SplatConvolve和Slice不知道第一个用中文怎么翻译下面LZ来好好介绍下这个网络基础不牢固看paper熬了两夜Step one: Splat这个步骤中其实有LZ说的两步第一步是一个映射关系将点云的特征映射到permutohedral latticeLZ在汇报是一遇到这个英文一言难尽/(ㄒoㄒ)/~~第二个步骤是重心插值。可以这样认为假设存在一个d维的permutohedral lattice这就相当于是一个超平面H d H_dHd那么会存在一个d1维的空间同样也会存在一个d1维的全一向量1 ⃗ [ 1 , 1 , . . . , 1 ] \vec{1}[1, 1, ..., 1]1[1,1,...,1]将d1维的空间沿着全一向量进行映射映射得到对应的的超平面就是之前所说的permutohedral lattice因此就生成一个投影的标准基可以看到B d B_dBd中每一列的和都为0每列的元素除以d1得到的模相同。所以还会存在如下的性质如果投影点都是整数那么投得到的lattice point上也会保证这些性质。下面我们假设d 2 d2d2如下图所示存在三个点分别为( 0 , 0 , 0 ) T (0, 0, 0)^T(0,0,0)T( 1 , 0 , 0 ) T (1, 0, 0)^T(1,0,0)T( 1 , 1 , 0 ) T (1, 1, 0)^T(1,1,0)T那么会存在一个投影矩阵B 2 B_2B2按照上面公式的规则将三个点分别投影到permutohedral lattice上可以得到对应三个lattice points分别为( 0 , 0 , 0 ) T (0, 0, 0)^T(0,0,0)T( 2 , − 1 , − 1 ) T (2, -1, -1)^T(2,−1,−1)T和( 1 , 1 , − 2 ) T (1, 1, -2)^T(1,1,−2)T我们可以看到中间这幅图上为三角形顶点上分别写着01和2那是因为如果对d1维这个例子中是3对3取余只可能出现余数为012着三种情况。后面还会存在两个问题如何找到余数为0这个点呢如何选择顶点数呢先解决第一个问题如何找到对应的最近的余数为0的顶点呢上面图例中以( 2 , − 1 , − 1 ) T (2, -1, -1)^T(2,−1,−1)T的lattice point为例2 / 3 ≈ 0.667 2/3\approx0.6672/3≈0.667用四舍五入近似为1所以在permutohedral lattice坐标系上x轴坐标为1同理− 1 / 3 ≈ − 0.33 -1/3\approx-0.33−1/3≈−0.33四舍五入近似为0所以在permutohedral lattice坐标系上y坐标为0z坐标也为0。所以可以唯一确定一个最近余数为0的点并且复杂度为O ( d 2 ) O(d^2)O(d2)同时看到上图中的第三幅图是对区域的整体划分将permutohedral lattice坐标系中原点处的单形正六边形叫做标准单形其余的单形可以通过平移得到标准单形。并且可以计算对应lattice point对应余数为0顶点的向量差记为x ⃗ − l 0 ⃗ \vec{x}-\vec{l_0}x−l0对应不同的点都可以计算出一个向量差按照这个可以对同一区域内的lattice point进行排序作为区分同一区域各个点的key也是后续使用hash表的键值和索引。第二个问题如何选择顶点呢还是以( 2 , − 1 , − 1 ) T (2, -1, -1)^T(2,−1,−1)T的lattice point为例2 / 3 0 ⋯ ⋯ 2 2/30 \cdots\cdots22/30⋯⋯2计算可以得到模为2这个顶点因为点为整数坐标得到的模相同所以lattice point如上图所示。在把所有的点映射到permutohedral lattice超平面上后要进行重心插值在d 2 d2d2的条件下是满足三角形的重心定理如下图所示将三角形区域内的点分裂到对应的lattice的顶点上去使得分裂后的点变成有规则的排列。第一步Splat步骤完成。Step two: convolve第二步就是卷积操作通过步骤一计算得到的键值和对应的顺序可以通过hash表索引到含有lattice point的位置然后通过标准的卷积进行操作提取特征这里类比Gauss Filter做示意图。Step three: slice第三步是slice通过中心插值将lattice顶点上的点进行恢复然后再重新投影到欧式空间中。BCL的一些性质点的特征和lattice的特征可以是不一致的如下图所示。正是由于这个性质可以讲二维的图片特征通过splat和slice操作后得到三维点云的特征因为BCL可以使用标准的卷积所以在使用时可以灵活的调整其对应的感受野也就是调整lattice对应的尺度SPLATNet网络结构其实这篇文章主要的贡献就在于使用BCL搭建了一个可以直接处理稀疏点云的网络并且可以将二维特征和三维特征进行对应映射具体的网络结构在论文里都有比较简单易懂这里感兴趣的小伙伴可以自行理解一下即可。总结SPLATNet是通过创建一个空间将稀疏的点云特征映射成有规律的排列通过使用标准卷积操作来获取点云局部特征和空间信息。其次SPLATNet可以看做是一个联合网络可以将图片和点云进行联合处理需要做二维分割预测时三维点云特征可以对二维分割进行特征和信息补充作为三维分割预测时也可以使用二维特征信息进行补充。总的来说这篇CVPR18还是值得一读的。最后放几张实验结果图可以看到二维信息和三维信息是相互补充的愚人节快乐O(∩_∩)O哈哈~参考文献