优秀的图像-图像转换模型需要学习不同视觉域之间的映射,要同时满足以下属性:1)生成图像的多样性和 2)在多个域上的可扩展性。
因此提出了star-GAN v2和动物数据集AFHQ
域:可以分组为视觉上独特的类别的不同组图片
风格:每组图片中的每张图片都有独特的外观,这称之为风格。
比如,可以根据性别将人分为男性和女性两个域,而人物的装扮,胡子,发型等特征可以视为风格。大概就是范围更大的可区分特征叫做域,范围小的叫做风格。
一个理想的图像转换模型应该考虑域内的多样化的风格。但这种模型的设计和学习很困难,因为一种域内可以有大量的任意风格。
为了实现风格多样性。将从标准高斯分布中随机采样的低维隐向量喂给生成器,然后不同域的解码器则从上述向量中取得自己所需的风格内容,然后生成图片,这种一对一的映射会导致实现风格的多样性需要多种生成器,如K域,则需要K(K-1)个生成器。
为了实现可扩展性。star gan通过将输入图片于特定的域标签级联,使用一个生成器实现将输入图片转换到目标域的图片,但是这只是学到了每个域的确定映射(给标签的那一刻就确定了,毕竟是只给了一个one hot的标签),不能学到数据分布多种模态的特性(相当于不能同时转换多种风格)。
因此,如果使用风格特征代替域标签,那么引入的信息会更多。
改进1:将star gan中的域标签用特定域的风格特征(不是单一风格,如这个风格特征保护胡须,发型,性别等风格)代替,实现风格的多样性。使用了风格编码网络(提取目标图片的风格)和maping net(随机高斯噪声转换成目标域的一种随机的风格特征)来实现。当有多个域的时候,每个模块都将有多个输出分支,每个分支表示特定域的风格特征
给出图片x和任意一个目标域的图片y,生成具有x的内容但是包含y的风格的图片。
生成器
保留输入图片x的内容,使用mapping net或者style encoder得到目标域的风格特征s,将x的特征和s通过AdaIN变换,而不是直接级联,然后生成一张具有s风格的图片。
Mapping net
将一个隐向量z映射到不同域的风格特征,相当于mappingNet是一个多任务的全连接网络。训练的时候是随机采样Z中的样本z和随机采样域Y中的一张图片来使得该网络有效的学到所有域的风格表示。感觉有点像VAE?变换个参数(这里是稍微改变z),就可以得到目标域的风格相似的特征,因此可以实现多样性风格生成。
Style encoder
使用一个多任务的风格特征提取网络。因此,使用不同的参考图片训练,该网络可以提供多样性的风格特征。
判别器
多任务分类器,有多个输出分支。每个分支使用一个二进制分类判断真实图片x是否真实以及生成图片是否则真实。使用多个分类器是为了避免笼统地判断生成地是否真实,因为我们要的是生成地图片在特定域上地真实,而不是随便地真实,优化更加具体了。
对抗loss
对抗阶段:从高斯空间中采样得到一个高斯编码z,将该z和目标域的一个随机选取的图片y的风格关联起来。将z通过mapping net映射成一个风格向量,然后将该风格向量与x图片特征通过AdaIN变换融合,然后生成图片。通过判别器和生成器的对抗,一方面是是mapping net 输出更好的Y域风格向量y,另一方面是使得生成器能够学会利用风格向量s来生成Y域内更加真实的图片。
风格重建loss
风格重建:直觉就是,我将x的图片内容和风格y结合生成图片c,这时候我对c提取到的Y域风格特征应和之前的y尽量相同。这里使用了一个L1的loss。
这个loss的目的是为了使生成器在生成图片的时候保留风格y的特征。
本文与其他的风格提取网络的差别是本文的风格提取是多任务的。
风格多样性loss
风格差异:这是为了使得生成器搜素图像空间,发现更有意义的特征来生成多样性的图片,看公式就可以知道这是为了最大化生成图片两个域之间的风格特征的L1 loss。
不以分子分母的形式表示(相当于输入的风格特征的差距作为分母,生成图片的风格特征差距作为分子)是因为分母的轻微变换会导致该分数值很大,训练不稳定,因此才使用了文中的公式。
由于这种最大化是个很难确定的问题,所以这个loss的超参后面会降至0
重建loss
总的loss
star GAN的话只能根据每次变换一种属性风格,当没有属性标签时无法变换;而v2的话是变换域的风格,这是主要的区别。我觉得它就只是将前人的成果融合起来而已,主要的贡献是开源了一个动物数据。
1.Choi Y, Uh Y, Yoo J, et al. Stargan v2: Diverse image synthesis for multiple domains[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 8188-8197.
2.有代码分析[CVPR2020] StarGAN v2
3.论文阅读】StarGAN v2