小样本学习旨在通过极少的样本来完成新类的识别,在深度学习中,如果类别有充足的标注样本,深度模型可以从海量的数据分布中抽取到准确的类别表达,随着标注数据量的减少,数据将不能涵盖类别的完整分布,深度模型的表达将逐渐下降。所以对于小样本学习而言,通过模型拟合数据的完整分布来达到识别是不切实际的,由此引出小样本学习的新范式----元学习、度量学习。
所谓元学习就是需要模型具有“learning to learning”的能力,也可以理解为需要模型具有很强的迁移能力,只需要少量的样本就可以完成新类别的识别。而度量学习则将由参数引导的分类器转化为由距离指导的分类器,只要模型具有很强的距离映射能力,那么将很好的解决小样本学习。
现有小样本学习可以笼统的概括为元学习与度量学习的组合。其中最巨代表性与理解的就是Prototype Network。
通过观察可知,小样本语义分割的重点就是原型P表达的准确性,可以粗鲁的认为只要P表达准确,那么小样本学习也就差不多完成了,其它的操作只是在为P服务。
交叉Support-Set与Query-Set
中心思想:使用 s u p p o r t − p r o t o t y p e support-prototype support−prototype来搜索 q u e r y − s e t query-set query−set中图片,参考搜索得到的结果,选取置信度大的 q u e r y − s e t query-set query−set中特征,计算得到 q u e r y − p r o t o t y p e query-prototype query−prototype,使用 q u e r y − p r o t o t y p e query-prototype query−prototype来搜索 s u p p o r t − s e t support-set support−set,并将搜索得到的结果计算损失。
PANet: Few-Shot Image Semantic Segmentation with Prototype Alignment
CRNet: Cross-Reference Networks for Few-Shot Segmentation(CVPR2020)
Prototype Refinement Network for Few-Shot Segmentation
多原型匹配
中心思想:单一的原型受限与样本个数,并不能很好的对类别进行特征表达;同时单纯的取均值得到的原型也太过于粗鲁。所以,建议使用多个原型来对类别进行表达,这样一来,不同原型可以关注图片中类别的不同区域,同时摒弃掉直接取均值的策略,采用更加合理的自动适配来进行原型的提取。
Adaptive Prototype Learning and Allocation for Few-Shot Segmentation(2021cvpr)
关键点:图片中局部原型不使用取均值得到;多个原型关注不同区域;聚类原型
- 提取图片的特征 F s F_s Fs,将 F s F_s Fs输入到 S G C SGC SGC模块中提取原型特征。
- 将得到的原型 N s p N_{sp} Nsp与待分割的图片特征输入到 G P A GPA GPA模块中,完成分割。
Prototype Mixture Models for Few-shot Semantic Segmentation(2020ECCV)
关键点:代替均值;原型由高斯混合到;基于EM算法的聚类
算法旨在消除图像语义歧义;使用多个原型关注局部区域;
其中多个原型通过EM算法求的:
- 关键步骤E-step:计算局部原型 u k u_k uk与图片中每个像素点 S − i S-i S−i之间的相似性 E i k E_{ik} Eik,表示第 i i i个像素点特征与第 k k k个原型之间的相似度。
- 关键步骤M-step:使用像素特征 S i S_i Si并配合 E i k E_{ik} Eik完成局部原型的更新。
- 不断迭代E-step 与M-step,最终得到关注局部的多个原型 u k u_k uk
Part-aware Prototype Network for Few-shot Semantic Segmentation(2020ECCV)
通过聚类对得到局部原型;引入了无标注数据来微调
- Prototypes Generation Module:使用Labeled数据使用聚类算法生成多个局部模型
- Part Refinement Module:使用Unlabeled的数据来调整局部原型