Point Cloud Based Semantic Analysis基于点云的语义分析,语义分割( Semantic segmentation)需要预测出输入图像的每一个像素点属于哪一类的标签。相比于2D的像素点,这里分割的单位是点云中的每个点
这里假设的是,利用仪器得到的3D点云的点是落在表面的,内部是几乎没有点的,因此直接处理表面对于3D数据来说可行性很高。于是这里学习如何沿着局部表面扩散每个点的卷积权重,而不是直接投影到切面上进行卷积
上面是传统方法,将点云投影到2D平面上,然后再根据投影位置进行插入,但这种方法会因为多视图和冗余造成混乱。下面的方法就是根据3D点云每个点的局部邻域投影到其局部切面,并用2D卷积处理它们
首先先定义局部伸展的方式中的符号
假设点云集合为P,某个点记号为p,F(p)是该点的一个编码函数,通过一系列网络结构能将点包含的颜色、位置等特征编码,N(p)表示以p点中中心的local patch
简单来说就是以p点为圆心的半径为ρ的圆内的点与p的距离的集合
为了绕着3D点云的表面将每个点局部2D化,这里假设存在一个虚拟的2D面,即
假设该面为S,存在
这里的S()是一个连续信号,π()是一个映射关系,这里的意思就是要求映射后的点在连续信号上的取值等同于3D下每个点的特征encode值
然后这是普通的卷积定义,c()是卷积核
之后解释如何将上述卷积公式化为一个权重学习问题
这里假设S是一个Mw×Mh的2D平面,vj{1,2,3…Mw×Mh}也就是平面上每个点的取值,后面的F(qi)是encode值,w是
重新把卷积公示整个改变一下
其中cj是离散化的卷积核权重,同样j是对每个点即vj{1,2,3…Mw×Mh}都有的相关权重,将wji和c
这里的L等于Mw×Mh,F(p)就是
简单来说,对整个映射过程做一个理解,假设P内有某个点,它的邻域内有N个点,希望的是能用这N个点映射出一个包含n个点特征的平面,这个平面是Mw×Mh大小的S
为了将原来的特征映射到2D平面上,需要一个计算attention的矩阵,即Wf。它是N×Mw×Mh的矩阵,对于N个点,它们均有各自的特征,所以F是一个N×C的矩阵,然后转置相乘之类的,直接将每个点的feature映射到Mw×Mh个feature上,这样就得到了 Mw×Mh×C的一个2D平面特征,然后就可以用传统的2D卷积网络来计算最后的p点的feature
整体结构如
首先先是输入,即普通的3D点云输入
先将每个输入经过PointNet来提取局部区域的特征
将局部特征复制N份后和N个点的3维坐标融合再一起,经过又一个MLP后得到Wf
得到Wf后结合N个特征点得到Mw×Mh维度下各个点的投影特征,最后采用2D卷积得到每个点的Cout维度的feature
以上就是最为核心的FPConv
但文中又说需要对权重近些一些约束,不然会不稳定
首先是Dense约束,它要求对每个点来说,它对应的权重参数之和为1,即用softmax来约束
然后是Sparse约束,理解方式相似
最后便是将这个FPConv使用再现有的应用上
这个便是FPconv和Scene Segmentation的结合,这里的输入就是普通的点云,具体结构就不具体理解了。主要的核心FPConv理解了就足够了
1.将点云中的点的局部映射到2D平面后使用2D卷积提取出点特征,想法非常nb
2.取2D平面的方式是取点云邻域,或许这种做法太过于局部