基于映射方式
Semantic Projection Network for Zero- and Few-Label Semantic Segmentation(CVPR 2019)
- Visual-semantic Embedding:使用backbone为图片每个像素提取特征:(a,b,d),其中a,b为图高和宽,d为类别编码维度
- Semantic Projection:完成视觉到语义的映射,对于每个像素,计算其特征与所有类别词向量的相似度,最后得到属于某个类别的概率
- 使用交叉熵计算损失
Learning unbiased zero-shot semantic segmentation networks via transductive transfer
关键点:transductive learning(在训练过程中source images和target images都会被使用到)
- 上图中source data和target data都输入到FCN网络中,通过FCN网络将source data和target
data映射到语义空间中,得到一个(H,W,d)的F(x),其中H,W分别为原始图片的高和宽,d为类别词向量的维度 - 然后对F(x)中每个像素计算其与语义空间中类别向量的相似度,并softmax得到分类结果
- 损失函数:
source data的损失主要学习视觉特征与语义特征之间的关系,target data的损失主要防止模型结果过多的偏向source
- 对于source data的损失函数:
- 对于target data的损失函数:对target data中的每个像素点计算其属于target类中所有类别概率和的损失。即其只要属于target domain的概率大就行
ATTRIBUTE DRIVEN ZERO-SHOT CLASSIFICATION AND SEGMENTATION
关键点:基于attribute预测
- 对图像提取Mask,这个Mask是类别无关的,即面对未曾见过的物体,也可以得到不错的Mask
- 使用Mask过滤原图像,得到物体区域,对物体区域进行attribute分类预测
- 在Inference时,将得到的attribute结果与所有类别的attribute label计算相似度,相似度最大的为zero shot的预测结果
缺点:一张图像中只能有一个物体,其实总结来说,就是一个zero shot的物体分类,外加了一个Mask过滤
基于生成方式
Zero-Shot Semantic Segmentation
- 使用seen训练DeepLabV3+
- 使用训练好的DeepLabV3+提取seen类的特征
- 使用生成网络,根据word embedding生成对应类别的特征
- 使用第三步生成的seen类和unseen类特征fine tune分类器
Context-aware Feature Generation for Zero-shot Semantic Segmentation
关键点:生成网络不使用随机噪声,而是CM模块生成的上下文相关编码
- E网络提取特征,并且诶使用CM模块提取图片的上下文编码
- 将图片的class embedding 和 CM 模块的编码输入到生成网络中,生成fake sample
- D用来判断real sample和fake sample,C对生成的fake sample 完成分类,最后达到的效果是G可以根据输入的class embedding + 随机噪声生成视觉特征
- 使用seen class+ unseen class+ 随机噪声生成的样本训练C,使C能够识别seen与unseen
Zero-Shot Semantic Segmentation via Variational Mapping
关键点:增加word embedding的多样性
- 使用VGG等backbone提取视觉特征
- 将像素点对应的class embedding通过VAE映射+采样为Z
- 将视觉特征与采样生成的Z(class embedding)拼接
- 将拼接的特征输入Decoder中解码分类
- 对于unseen类别检测,使用生成的特征fine tune Decoder完成分类