英伟达few-shot图像转换
点击上方“机器学习与生成对抗网络”,关注"星标"
获取有趣、好玩的前沿干货!
1 摘要
无监督的图像到图像转换方法学习任务是:将给定类别的图像映射/转换到不同类别的“类似”图像。
尽管当前方法取得了巨大成功,但需要在训练时获取源类和目标类中的许多图像;这极大地限制了它们的使用。
人类可以从少量示例中,就能捕获到新物体的辨识性特征,这种概括能力启发了本文工作:尝试寻求一种在测试时仅指定几个示例图片、就能完成新类别的图像转换任务。
https://github.com/NVlabs/FUNIT
2 本文任务: Few-shot Unsupervised Image Translation
使用源类图像来训练模型;在测试期间,为模型提供一些来自新对象类(称为目标类)的图像,该模型利用少量目标图像将源类图像转换为目标类的相似图像。
框架由条件图像生成器G和多任务对抗判别器D组成。与现有的无监督图像到图像转换框架中的条件图像生成器不同,它们仅以一幅图像作为输入,而本文生成器G同时将内容图像x和一组K幅图像{y1,...,yK}作为输入。
本文设内容图像属于类别Cx,而K幅图像中的每一幅图像均属于类别Cy。通常,K比较小,Cx与Cy不同。本文的G被称为few-shot图像转换器。
如图1所示,G将输入内容图像x映射到输出图像
,以使 看起来像属于类别Cy,而和x有着相似的结构。
3 生成器:Few-shot Image Translator
G包括内容编码器Ex,类编码器Ey和解码器Fx。
内容编码器由几个2D卷积层和几个残差块组成,它将输入的内容图像x映射到内容潜在代码Zx,它是空间特征图。
类编码器由几个2D卷积层组成,然后沿着采样轴进行平均运算。具体地,首先将K个图像{y1,...,yK}中每一个映射到中间潜量,然后计算中间潜量的均值以获得最终的类潜码Zy。
解码器由几个自适应实例归一化(AdaIN)残差块组成,其后是几个上采样卷积层。AdaIN残差块是使用AdaIN作为归一化层的残差块。
通过这样设计,旨在使用内容编码器提取类不变的潜在表示(例如,对象姿态),并使用类编码器提取特定于类的潜在表示(例如,对象外观)。通过AdaIN层将类潜在代码提供给解码器,让类图像控制全局外观(例如,对象外观),而内容图像确定局部结构(例如,眼睛的位置)。
在训练时,类编码器学习从源类的图像中提取类特定的潜在表示。在测试时,这可以泛化为以前看不见的类的图像。
在实验部分表明泛化能力取决于训练期间看到的源对象类的数量。对G进行更多源类别(例如更多种类的动物)的训练时,它具有更好的few-shot转换性能。
4 判别器:Multi-task Adversarial Discriminat
通过同时解决多个对抗分类任务来训练判别器D。每个任务都是一个二进制分类任务,确定输入图像是源类别的真实图像还是来自G的输出。
源类有|S|类时, D产生|S|个输出。
当用源类Cx的真实图像输入D时,如果D的第Cx个输出为false,则对D进行惩罚。
当用生成器输出的伪源类Cx图像输入D时,如果D的第Cx个输出为positive,则对D进行惩罚。
更新G时,仅在D第Cx个输出为false时对G进行惩罚。
从经验上本文发现,这种方式比通过仅用一个判别器去解决更难的|S|类分类问题更好地工作。
5 损失函数
总损失函数:
其中,GAN损失:
内容重建损失(用来保持源类别的结构内容相似性)
特征匹配损失
6 实现细节和训练集
动物脸。使用ImageNet中149种食肉动物类的图像来构建此数据集。首先在图像中手动标记10000个食肉动物脸的边界框。然后,训练Faster RCNN来检测图像中的动物脸部,仅使用检测分数较高的边界框。如此得到117574张动物面孔图像,并将这些类分为源类和目标类,分别包含119个动物类和30个动物类。
鸟。555个北美鸟类的48527张图像;源类别集使用444种,目标类别集使用111种。
花。来自102种共8189张图像;源集和目标集分别有85和17种。
食品。来自256种食物的31395张图像;源集和目标集分别有224种和32种。
7 实验结果
论文做了大量分析、对照实验,值得借鉴和学习。具体细节可参考原文。
8 总结与展望
本文介绍了首个few-shot无监督的图像到图像转换框架FUNIT,可通过利用在测试时提供的少量/训练未出现类别的示例图像来学习将源类别的图像转换为看不见对象类别的对应图像;其生成性能与训练过程中看到的对象类别的数量成正相关,也与测试时间内提供的目标类别的数量成正相关。
但FUNIT取决于以下几个工作条件:1)内容编码器Ex是否可以学习类别不变的潜在码zx,2)类编码器Ey是否可以学习特定类别的潜在码zy,3)类编码器Ey是否可以推广到看不见的对象类的图像。当新颖的类与源类在视觉上相关时,这些条件很容易满足。但当新颖类外观与源类外观显著不同时,FUNIT无法实现图像转换,如图5所示。在这种情况下,FUNIT倾向于生成输入内容图像的变色版本。这是不希望的,但是可以理解,因为外观分布已经发生了巨大变化。解决这一限制是未来的工作。
附下载 |《TensorFlow 2.0 深度学习算法实战》