标题-Associatively Segmenting Instances and Semantics in Point Clouds
作者-Xinlong Wang1 Shu Liu2 Xiaoyong Shen2 Chunhua Shen1 Jiaya Jia2;3
实例分割,语义分割:检测场景中由最小单位的集合代表的特定信息的区域。例如。一个点云可以分析成几组点,每个组表示一个类。或者一个单独的实例。
应用点:如自动驾驶,增强现实
现状:没有先进工作将两项任务结合。
冲突点:实例分割是要是被出同一类物体的不同实例,语义分割是想让同一类物体有同样的标签。
协作点:语义分割识别出不同的类,而不同实例肯定属于不同的类。实例分割将相同的标签赋予一个实例。因为同一个实例必定属于同一个类别。
简单结合方法:
这两种方法都是step-wise paradigm。都不是最优解法,效率低下。
本文将两项任务结合到一起成端到端平行的训练框架。
作者首先介绍了同时分割语义和实例的baseline。方法类似Semantic instance segmentation with a discriminative loss function.中对2D图片的方法,作者将网络修剪成适用于点云的。网络有两个分支:一个是每个点的语义预测;另一个输出点级的嵌套(embeddings), 属于同一个实例的点集靠近,不属于的远离。该baseline在训练和表现上已经比state-of-the-art的SGPN表现好了。基于该基线,提出了ASIS
利用提出的ASIS方法,网络可以学习语义感知的实例嵌套,其中属于不同语义类的点的嵌入通过特征融合进一步自动分离。
效果:
不同类的点之间间距更大。如1中桌子椅子,2中窗户和墙,3中椅子柜子。此外,利用同一实例中点的语义特征进行融合,使每点的语义预测更加准确。语义分割期间一个点会被分配成一个类别,因为包含这个点的实例属于该类别。
该方法对不同的主干网络适用,如PointNet和PointNet++。也可以用于全景分割(Panoptic segmentation).
全景分割与实例分割,语义分割的不同:
对比语义分割,全景分割需要区分不同的 object instances;对于 FCN-based 方法具有挑战性.
对比实例分割,全景分割必须是非重叠的(non-overlapping);对于 region-based 方法具有挑战性.
贡献:
由一个共享的encoder和两个平行的decoder组成。其中一个用于点级别的语义预测,另外一个用于实例分割问题。
Np大小的点云首先被提取出来后经过feature encoder(如PointNet 层)编码成特征矩阵。这个特征矩阵参考PointNet中局域特征和全局特征结合的矩阵,或者PointNet++最后一个set abstraction的输出。然后两个分支利用特征矩阵分别进行预测。
FSEM: 语义分割分支decode的NpxNf的语义特征矩阵,输出预测结果PSEM,形状为NpxNc(类别数目)
FINS:用来预测逐点的实例嵌套EINS. EINS: NpxNe(嵌套的维度).
点云的嵌套表示点云中点之间的实例关系:属于同一个实例的点在嵌套空间中更为接近。不同实例的则分离。
训练时语义分割分支受的cross entropy loss控制。实例分割则使用2D图片的discriminative loss function来训练。作者将其修改到适用于点云:dircriminative loss function是类依赖(class-specific)的,不同语义类的实例嵌套是分开训练的,所以需要先有语义类,这种步进式的流程高度依赖于语义的预测。所以作者使用非类依赖的(class-agnostic)实例嵌套学习策略,即实例嵌套负责识别不同的实例而无视他们所属的类别。方程如下:
Lvar用于让embeddings靠近平均的embeddings,例如实例的中心。Ldist让实例之间相互抵制。Lreg是规范化项目,用于让embeddings的值在一定范围内。α在实验中为0.001.
其中 I 是真实实例的数目。Ni是实例 i 中点的数目。μi是实例 i 的平均embedding的平均值。l1范数。ej是一个点的embedding。
δv and δd are margins; [x]+ = max(0; x) means the hinge.
测试时,最终实例标签由在instance embeddings上使用mean-shift clustering获得。将同一实例中的点的语义标签的模式分配为其最终类别。
识别语义的实例分割
点云的语义特征构成了新的高层次的特征空间,在空间中点自然的放置在它们的类别里,相同的点靠近,不同的远离。将semantic awareness(SA)从语义特征中抽离组合到实例特征中,生成semantic-aware instance features. 语义特征矩阵FSEM通过batch normalization和ReLu的全连接层后变成与FSEM的shape相同的F’SEM。然后将F’SEM与FINS进行element-wise addition生成FSINS。即使用这个而矩阵生成最终的实例嵌套EINS
经过这个方法,属于不同类别的点会分的更开,同一个类别的点则几乎不受影响。
实例融合的语义分割
对上述的嵌套进行kNN查找来在实例嵌套空间中为每个点寻找一定数目(包括本身)的邻居点。根据公式(2)中的边缘δv来筛选掉离群值。kNN查找的输出为NpxK的矩阵。根据该矩阵,将这些点的语义特征矩阵FSEM分组成NpxKxNf的特征张量。这是一组语义特征矩阵,其中每组对应于其质心点附近实例嵌入空间中的一个局部区域。
受[26,36,38]三篇论文中channel-wise max aggregation的高效的启发,每一组的语义特征通过channel-wise max aggregation融合到一起,作为图心的精确化的语义特征。
Instance fusion(IF)公式如下:
{xi1, xi2, …xik}表示中心点i在实例嵌套中的K个邻居点的语义特征。Max是element-wise maximum operator。接收K个向量作为输入,输出一个新的向量。(这里是取向量每个位置的最大值作为新向量的元素吗。比如x11=[1,3,5,6], x12=[2,4,3,1], 则x’1=[2,4,5,6])
IF完了输出FISEM,放入最后的semantic classifier。
数据集:
S3DIS:6个区域272个房间的Matterport Scanner的扫描结果。每个点关联一个实例标签,13个类别其中一个语义标签。
ShapeNet: 16个类别的16881个3D形状。从形状采样的每个点分配有50个不同部分中的一个。实例标签用SGPN中的。
评价标准:
S3DIS的实验采用PointNet论文中带micro-averaging的k-fold cross validation。 使用Segcloud: Semantic segmentation of 3d point clouds.中的方法报告第五个fold的表现。因为Area5没有出现在其他fold中(这是什么意思?)
语义分割:
计算每个类别的IoU时也计算overall accuracy(oAcc), mean accuracy(mAcc), mean IoU(mIoU)。
实例分割:
采用论文【29, 20, 40】的(weighted)coverage(Cov, WCov)。Cov is the average instance-wise IoU of prediction
matched with ground-truth.The score is further weighted by the size of the ground-truth instances to get WCov.
真实区域G, 预测区域O:
其中|riG|时真是区域 i 中点的数目。
mPrec:the classical metrics mean precision
mRec: mean recall
训练:
每个点是9维特征向量(XYZ, RGB, 房间里正则化后的坐标(normalized coordinates as to the room)) 训练时用PointNet的步骤,将房间分成地面上1m 1m重叠的块,每块包含4096个点。实例分割时δv=0.5, δd=1.5,输出嵌套维度为5.
IF中的kNN查找,k设为30.
对于PointNet训练了50个epoch,PointNet++训练了100个。batch size为24;base learning rate为0.001, 每300k个循环除以2。单块GPU使用Adam。Momentum设为0.9。
测试时, mean-shift clustering的带宽设为0.6。使用BlockMerging算法融合不同块的实例。
对于ShapeNet,每个形状由2048个点的点云来表示。每个点是3维的(XYZ).
基于类别的分析:
实例分析中,ASIS模块对周围有其他种类(比如横梁,板, 窗户)的实例帮助比较大。比如板子挂在墙上,板子会容易被忽视,因为板子跟墙形状颜色都很像。语义分割中,ASIS对有复杂形状的物体帮助较大。
不足:
两个靠近的椅子被认为是同一个实体。