一、《Feature Generating Network for Zero-Shot learning》
这篇论文由Yongqin Xian 发表于CVPR2018。
在看这篇文章之前,我们首先来梳理一下Zero-Shot Learning (ZSL) 的任务。所以,什么是ZSL呢?这种任务要求我们基于可见的一些物体,训练网络对物体属性的感知,从而对没有见过的物体进行分类。通俗点讲,就是我们给网络看了小脑斧、小马的图片,告诉他小脑斧身上有花纹,但是腿短,小马身上没花纹,但是腿长,小斑马身上有花纹而且腿长,有一天,我们给网络一张小斑马的图片,问他这是什么。即使他从没有见过斑马的图片,我们依然希望他通过之前的知识,能够对图片进行正确的分类。
什么是Zero-Shot Learning?
从数学角度来讲,设可见的图像集合为, 其中 是图像, 是图像所属的类别, 是该类别的一些类别属性,比如attributes、description等等。不可见的图像集合为,仅有图像类别和类别属性。所以普通细粒度分类的任务就是学习一个分类器,预测从未见过的图像类别。
但是这样的分类面临一个问题,(DV在讨论实验室项目时也提到过小样本学习面临同样的困境),就是在实际情况中,我们并不知道待分类的图像之前见没见过。所以就出现了一个更符合实际的任务,Generalized ZSL(GZSL),他的分类器是,即预测集中含有见过和没见过的图像类别。
了解了什么是ZSL和GZSL之后,就可以正式开始解读这篇论文啦。
作者使用三种conditional GAN来循序渐进的生成embedding feature。
1. f-GAN
这是一种条件GAN(对条件GAN的介绍),对生成器和判别器都额外增加附加信息,这里的附加信息是类别attributes或者description。
给定训练数据(来自可见数据集),作者计划训练一个generator ,其中是高斯噪声,是class embedding,生成的是image feature 。
所以整个GAN的损失函数就如下所示:
即训练时,生成器输入的是高斯噪声和某些可见类别的class embedding,输出的是该类别的image feature 。判别器输入的是类别的class embedding 和真实的image feature 以及生成的image feature 。
2. f-WGAN
作者又采用另一种GAN网络,Wasserstein GAN(对Wasserstein GAN的介绍)
WGAN3. f-CLSWGAN
作者认为单纯使用WGAN还不足以使generator生成的features能够训练出一个好的分类器,所以作者提出加上一个分类loss。
二、《f-VAEGAN-D2: A Feature Generating Framework for Any-Shot learning》
这是Yongqin发表在CVPR2019的文章。
这篇文章的思路是将GAN和VAE结合,GAN的generator和VAE的decoder用同样的参数。这样,GAN的generator的输入就有了VAE的约束。作者大概就是这个意思吧。这篇文章代码没有看。
f-VAEGAN-D2
三、《Generalized Zero- and Few-Shot Learning via Aligned Variational Autoencoders》
这篇文章单纯使用VAE来做Zero- and Few-Shot Learning,发表于CVPR2019。作者用了两个结构相同的VAE。
CADA-VAE
这个作者的思想不同于Yongqin的想法,后者是将class embedding (attributes) 当做辅助信息输入Decoder、Generator和Discriminator;前者是利用两个VAE,一个对image进行encode, 另一个对class embedding进行decode。
为了保证image和class embedding被投影到的空间一致,除了两个VAE各自的传统loss:
屏幕快照 2019-05-31 下午4.32.05.png作者还将两个encoder的输出互换到decoder的输入端,生成Cross-Alignment loss。通俗地讲,这个loss的作用就是让image潜在空间里面的向量,通过class embedding的decoder以后,也能还原成相应类别的class embedding。
CA:Cross-Alignment loss还有一个Distribution Alignment loss, 是为了令两个VAE的潜在空间的均值方差服从同样的分布设置的:
DA:Distribution Alignment loss
网友评论