留个笔记自用
FGN: Fully Guided Network for Few-Shot Instance Segmentation
做什么
Instance segmentation实例分割
目标检测( Object detection)不仅需要提供图像中物体的类别,还需要提供物体的位置(bounding box)。语义分割( Semantic segmentation)需要预测出输入图像的每一个像素点属于哪一类的标签。实例分割( instance segmentation)在语义分割的基础上,还需要区分出同一类不同的个体。
做了什么
Few-shot instance segmentation (FSIS)即少样本的实例分割
相比于现在的对数据集有高要求的复杂的监督学习。这里则采用了少镜头的学习方式,即少有标记样本。并且结构还引用了三种独特设计的attention指导机制
怎么做
首先先要了解一下问题的定义方式
这里定义Cbase是包含了很多个基本类别的集合,同时对于这些类有大量的实例分割的标注图,这些图像(带标签的)集合用Dbase表示。另外存在一组Cnovel表示不同于基类的类。对于这些类同样有标识的数据图集合Dnovel但是是小样本数据。小样本实例分割的目标就是从这个集合中随便抽一个图像Iq对其进行实例分割操作
接下来是定义一个任务,这里是从Dbase中采样出来的,Si当成支持集,xi当成查询集。学习一个模型f
它以支持集S作为支持,对查询图像x进行实例分割。然后学到的模型可以理解为初始化的模型就可以应用到目标任务上
接下来就是实际的模型环节
整个结构分为三个部分,Attention-Guided RPN(AG-RPN)注意力引导的RPN部分,Relation-Guided Detector(RG-DET)关系引导的检测器部分,Attention-Guided FCN(AG-FCN)注意力引导的FCN部分
这里的支持集符号记为S,包含了N个种类的K张标识图,查询图像记为x,都被一个共享的特征提取网络提取出各自的feature map
支持集编码的结果记为Fnk,Y则是查询图像的编码结果,维度为H×W×C
第一阶段,AG-RPN通过支持集编码Fnk来生成Y的候选。然后,在第二阶段,对于具有对齐特征图Zj的每个候选,将对齐Fnk被RG-DET用于指导分类head和bbox head,而AG-FCN指导mask head。
这里有一个计算方法称为RoIAlign
ROI Align是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式
此图由知乎得到👆
接下来详细解释下这分别的三个结构
首先是Attention-Guided RPN(AG-RPN)
这里的输入跟上面描述的同样,有支持集的编码Fnk,这里的维度是H×W×C,可以理解为N类(除基类的novel类的数量)中的第k张支持集,和查询图像x的编码Y
首先先对Fnk做global average pooling,这个操作很简单,这里得到的{a1…an}是维度为C的新的那N类各自的类注意向量。理解上来说就是为了得到各类的关注点
然后将各类的类注意向量乘上查询图像的feature map得到查询图像在N类上的客观分数
然后是第二部分RG-DET部分
这里的输入有两个,Zj,对任意RoI对齐的feature map和Fnk</sup>,这里的F<sub>n</sub><sup>k是从支持集中提取出来的
然后对其进行Average后和Zjconcatenate在一起,然后经过一堆的Conv层和FC层(统称为MLP)得到两条路经,一条称为cls,一条称为Bbox。分别是分类和检测路经
首先是分类路经,将zj和Fn~即和第i类的特征的匹配得分用一个组合(C+,C-)来表示,分别代表了匹配第i类物体和背景的得分
但是为了实现背景矫正,这里导出了一个向量
原来的组合得分必定会有2N个(一个类2个得分即(C+,C-)),从中将N类的正得分记为C1…CN,将CN+1记为
然后再对这个c做softmax,这里的含义是为了使背景的置信度需要依赖于最佳匹配类的置信度,这样能保证不会发生背景抑制问题,因为这里使用的背景置信度是匹配类置信度最大的那个attention时的背景置信度
然后时另外一个支路bbox层也就是bounding box层。就是很普通的fc和conv了。
之后是第三个部分AG-FCN部分
这里的输入跟上面结构的输入一模一样,首先先对zj和Fn~做一个mask pooling的操作。这里用到了一个mn~k的二进制的mask,这是由原始的实例分割mask进行RoI后得到的。至于做法与上面的GAP类似
然后要经过一个selector去选择一个an(从N个bn中选出)。训练时这里选出的b类是GT,测试时选出的时最大的分类得分的那个类
然后
总结
1.可以理解成在mask-rcnn的基础上加了三个指导机制使它更为强大,更好的利用支持集,但其实就是加了很多小trick的感觉。