留个笔记自用
Multi-Path Region Mining For Weakly Supervised 3D Semantic Segmentation on Point Clouds
做什么
Instance segmentation实例分割
目标检测( Object detection)不仅需要提供图像中物体的类别,还需要提供物体的位置(bounding box)。语义分割( Semantic segmentation)需要预测出输入图像的每一个像素点属于哪一类的标签。实例分割( instance segmentation)在语义分割的基础上,还需要区分出同一类不同的个体。
这里就是从2D图像的分割转移到了点云上的分割,无非就是在位置信息上多了一维
做了什么
这里采用了弱监督的方法来预测点云级别的分割标签,将这个标签作为弱标签即常见的Pseudo Label
这里相比于常见的场景级标签(即比如2D图像中整张图属于某一类)这里采用的是子点云级标签,就是在空间中均匀放置一个种子点,种子点以r为半径构造一个球体,球体覆盖范围为子点云,并且每个种子点相互之间存在着覆盖部分,简单来说,对于种子点p的邻域定义为
这里的r是子点云的半径,q就是p的邻域点的集合
怎么做
这里采用的baseline是《Learning Deep Features for Discriminative Localization》里的CAM,做了一些些改进
在这之前,首先还是先大致理解一下整体结构
输入是一个点云(子点云)∈RN×3,然后输入一个feature extractor,这里使用的是带resnet块的KPConv
简单了解一下这个卷积。即对于卷积范围内的一点xi,首先求该点与卷积核内所有点的相关h,以h*Wk作为xi与卷积核第k个点的卷积结果,对K个卷积结果求和,即得到xi的卷积结果。这种想法跟今年的另外一篇感觉查不了多少
Convolution in the Cloud
于是这里就构建了这样的feature extractor,将输入提取出逐点特征
提取出卷积层得到的特征后,使用一个1×1卷积改变通道数,得到PCAM feature map,训练时加了一层gap和sigmoid得到weak label
在这之前得到的feature map(gap之前)标注为fcam(p)这里的p表示点p,对类别C,定义PCAM
wc是对c类的分类权重,yc是对c类的GT分类one-hot向量,因为点云中没有背景这种说法,所以对每点都要设置一个前景类,即
这就是点p的伪标签
这条路就是整体结构中的第一条分支
然后是结构的增强部分,多路径区域挖掘,简单来说就是使用各种注意机制从
网络中挖掘出更多有区别的区域,然后聚合在一起生成点级伪标签
这里是设计了三个attention方式,spatial attention空间注意力模块, channel attention通道关注模块,point-wise attention逐点注意力模块
每条路径后面都跟随一个1×1卷积作为分类器改变通道数,以生成单个PCAM,然后使用GAP生成各自不同注意力的特征向量
然后就是具体的模块介绍
首先是空间模块该模块有助于改善局部区别特征表示,这允许更精确的对象区域定位过程,简单来说就是常见的那一套——全局+局部(local+global)
这里的输入设置的是N×C的feature map,首先先是一个三分支,每个分支都先是一个1×1卷积调整通道数,然后C和B的转置矩阵元素相乘后和D相乘,然后按列进行softmax得到attention,然后再乘上D,最后再1×1卷积后加上原来的A。很显然这里的做法就是最原始的attention了。
这里的E就是attention map,G就是附加了attention的feature map,作用就是老attention作用了,对于每个点,来自其他点的所有特征的加权和被添加到局部特征,这选择性地将全局上下文增加到局部特征
然后是第二个模块,通道模块,这里是假设每个通道都可以表示为对特定类别的相应,然后就利用通道相关信息进行进一步的特征挖掘
这里的结构上跟空间注意力非常相似,但因为探索的直接是feature map的通道之间的关系,所以没有加1×1卷积来改变通道数,直接用的原生通道的特征来进行attention
其他做法和空间注意力类似
最后是逐点注意力
这里的意思就是说在空间注意力的前提下,改变了聚合方式,不是将attention特征和原特征相加,而是直接concat起来,这样就不仅仅结合了点周围的attention,还附带了点本身的信息
除上面之外,从每一条路径中提取像素点,并通过获取元素最大值来合并它们,并通过最近的上采样将PCAM上采样到原始大小
得到伪标签后使用dCRF对标签结果进行强化,这里的dCRF是denseCRF,至于具体是非常复杂的数学推导。。不太想去理解。作用大概就是强化也就是refine这里的pseudo label
然后作为label使用KPConv U-Net来进行训练得到最后的分割结果
总结
1.无监督点云分割第一篇,具有启发性,但这里的多个attention路径真的奇怪,明明这么相似无脑叠加真的会使效果变好吗,而且似乎也没有各自设计loss去限制它,只是假象能实现XX功能,虽然spatial、channel、point三路的设计方法值得学习
2.为了减少标注标签的难度,这里是转换成了标签子点云,我怎么感觉这样数据量反而更繁琐了呢。。那用无监督的意义在哪呢。