AttGAN: Facial Attribute Editing by Only Changing What You Want 论文阅读笔记和AttGan的pytorch代码实现
何莫道 人气:01.总体框架
上面的过程用详细描述即是
Test阶段:
Train阶段:
由于我们无法得知编辑后的image,所以显而易见人脸属性编辑是一个无监督问题,而对于我们的xa需要获得关于b的属性,故利用attribute classififier来约束生成的xb使其获得了b属性;同时adversarial learning可以用来保证生成图片的真实性;此外,我们在进行人脸属性编辑的时候还需要保证只更改了我们需要编辑的属性,所以引入了reconstruction learning。
Reconstruction Loss
关于重建过程,即
这里希望生成的xa^能尽量等于之前未编码的xa,就是一个encoder-decoder结构。
表示为
Attribute Classifification Constraint
为了使生成的xb^确实拥有b属性,我们设置判别器C来鉴别,
(7)式代表最小化所有属性上的二进制交叉熵总和,(8)式为该交叉熵具体表达式。该属性分类器在原始图像上训练其属性:
这两个式子的解释和(7)(8)类似。
Adversarial Loss
引入鉴别器和生成器之间的对抗过程使得生成的图片尽量真实,下面的表示借鉴了WGAN
总体目标
结合上面的三种损失,解编码器要优化的目标如下
判别器和属性分类器要优化的目标如下:
属性样式操纵的扩展
我们生活中可能更关心某人“戴的是什么颜色的眼镜”而非“有没有戴眼镜”。因此这里增添了一个参数theta,用来控制我们编辑的属性。
这时候我们属性编辑的方程就表示为:
我们要优化下面的互信息使其最大化
2.代码粗览
加载全部内容