论文阅读:《Few-Shot Unsupervised Image-to-Image Translation》

十二月了 时间过得太快 2020 过得太快又太慢
忙里偷闲的十二月 有太多值得期待 攒了好久 终于来更新了

论文名称:《Few-Shot Unsupervised Image-to-Image Translation》
论文地址:https://arxiv.org/abs/1905.01723
论文翻译:https://blog.csdn.net/a312863063/article/details/90728788
论文阅读参考:https://blog.csdn.net/zaf0516/article/details/103298511
论文代码:https://github.com/NVlabs/FUNIT
代码解读参考:https://zhuanlan.zhihu.com/p/88824696
本篇文章只记录个人阅读论文的笔记,具体翻译、代码等不展开,详细可见上述的链接.

Background

Unsupervised image-to-image translation methods learn to map images in a given class to an analogous image in a different class, drawing on unstructured (non-registered) datasets of images. While remarkably successful, current methods require access to many images in both source and destination classes at training time.
无监督的图像到图像转换方法学习将给定类中的图像映射到不同类中的类似图像,利用图像的非结构化(无标记)数据集。虽然非常成功,但是当前的方法需要在训练时访问源类和目标类中的许多图像。我们认为这极大地限制了它们的使用。从人类具备的能够从少数几个例子中发现新物体本质的能力中汲取灵感,并从这一点推广,我们寻求少样本无监督的图像到图像的转换算法
总结一下:
第一,传统的无监督方法通常需要在训练时看到目标类的大量图像
其二,模型的泛化能力弱,无法用到其他类的图像上

Work

We propose the Few-shot UNsupervised Image-to-image Translation (FUNIT) framework, aiming at learning an image-to-image translation model for mapping an image of a source class to an analogous image of a target class by leveraging few images of the target class given at test time
我们提出了无监督的图像到图像转换(FUNIT) 框架,旨在学习图像到图像的转换模型,通过利用目标的少量图像将源类图像映射到目标类的分析图像在测试时给出的类别模式。该模型在训练期间从未显示目标类的图像,但要求在测试时生成其中一些。
举个例子:
输入一只金毛,在训练过程当中,即便第一次看到一种新动物,也能让它像金毛那样吐舌头

Method

整个过程可以这样理解:


在训练过程,我们使用来自一组对象类(例如各种动物物种的图像)中的图像,称为源类(source classes)。
我们不假设任何两个类之间存在配对的图像(即,不同物种的任何两个动物都不会是完全相同的姿势)。
我们使用源类里的图像来训练一个multi-class无监督图像到图像转换模型。
在测试过程中,我们从一个称为目标类(target class)的新对象类中提供少量几张图像。模型必须利用少量的目标图像来将源类里的任何图像转换为目标类里的类似图像。
整个框架的部分分为生成网络,条件图像生成网络和多任务对抗判别网络。

生成网络


如上图所示,在具体结构上面,条件图像生成网络是由内容编码器(Content encoder)、类别编码器(Class encoder)、解码器(Decoder)三部分组成。
首先,借鉴了生成对抗网络的思想,但与现有的无监督图像到图像转换框架中的条件图像生成器不同,它采用一个图像作为输入,我们的生成器G同时采用内容图像x和一组类别图像 作为输入并产生输出图像
即可以这样理解,输入为一张“内容图”和一组“类别图”,输出则会在结构上与内容图类似,但在类别上与类别图一样,实现图像风格转移。

内容编码器
将输入的内容图像映射到内容潜在编码,得到一个特征图,含有 4 个二维卷积层和 2 层残差网络。
类别编码器:
将一组K类图像映射到类的潜在编码,该类的潜在编码是向量并且是指定的类,这部分含有 5 个二维卷积层和 1 个均值池化,分别将每个类别图像进行向量化,再取均值作为类别编码。
解码器
解码器含有多个自适应实例标准化残差网络,即残差网络模型利用 AdaIN做归一化层。
AdaIN 是风格迁移模型中的一个手段,本质是对 Instance Normalization(实例标准化)的改进,可以进行任意风格的图像迁移。除此之外,解码器还存有多个卷积层,将内容编码做仿射变换(即风格迁移,仿射变换的参数由类别编码经过全连接层变换得到),得到具有内容图像特征的类别图像类似图。
通俗来讲,编码解码后实现了将豹哥(抽取类别图像猎豹面部特征)转换成大眼卖萌的猎豹(内容图像是大眼卖萌狗子)。

判别网络

与传统生成对抗网络GAN 中的 D类似。它需要判断图像是真实图像还是条件图像生成网络产生的转换图像。
而与传统的判别网络不同,FUNIT 的判别模型为 Patch GAN discriminator,有 1 个卷积层和 10 个残差网络 ,和直接输出真伪的传统判别网络相比,Patch GAN 判别网络的输出是一个 NN 矩阵,每个矩阵元素代表对输入的某一图块的真伪判断。
该框架的判别器通过同时解决多个对抗分类任务来训练每个任务是二分类任务,确定输入图像是源类的实际图像还是来自G的转换输出
这边的损失包括:GAN损失、内容图像重建损失和特征匹配损失
内容重建损失有助于G学习转换模型。具体地, 当对输入内容图像和输入类图像使用相同图像时(在这种情况下 K= 1),损失促使G生成与输入相同的输出图像。特征匹配损失使训练正常化。

Experiment

先上一些结果


从上到下分别是来自动物面孔、鸟、花和食物数据集的结果。每个示例随机展示了2张目标类中的图像,输入内容图像x,以及转换后的输出图像x。
结果表明,模型能够成功地将源类的图像转换为新的类中的相似图像。对象在输入内容图像x和相应输出图像x中的姿态基本保持不变。输出图像也非常逼真,类似于目标类中的图像。
FUNIT在Animal Faces数据集的1-shot和5-shot设置上分别达到82.36和96.05 的Top-5 测试精度,以及在North American Birds数据集上分别达到60.19和75.75的Top-5 测试精度。这些指标都明显优于相应的基准模型。
测试结果最右侧的 FUNIT 结果说明,即使训练集中没有目标图像(即以前没见过汪 y1,y2),当测试集中出现 y1,y2 时(即看见新汪),可以成功模拟出新汪内容图像(Input x)做的动作.

Limitations


FUNIT依赖于几个工作条件:
1)内容编码器是否可以学习类不变的潜在编码
2)类编码器是否可以学习类特定的潜在编码
3)类编码器是否可以推广到看不见的对象类的图像。
我们观察到,当新类在视觉上与源类相关时,这些条件很容易满足。但是,当新对象类的外观与源类的外观显著不同时, FUNIT无法实现如上图所示的转换。在这种情况下, FUNIT倾向于生成输入内容图像的颜色改变版本这是不可取的,但可以理解,因为外观分布发生了巨大变化解决这个限制是我们未来的工作。


Ending!!十二月要争气鸭!

你可能感兴趣的:(论文阅读:《Few-Shot Unsupervised Image-to-Image Translation》)