Controllable Person Image Synthesis with Attribute-Decomposed GAN(CVPR20)
3. Method Description
framework中涉及到pose 表示为18通道的heatmap
3.1. Generator
Generator的输入为source person image 和target pose ,输出为generated image
一个常见的做法是将和拼接起来送入生成器
本文将和编码为latent code,分别叫做pose encoding和decomposed component encoding
3.1.1 Pose encoding
如Fig.2上方所示,target pose 输入pose encoder(是一个2层down-sampling convolutional layers结构),得到pose code
3.1.2 Decomposed component encoding(DCE)
对source person image 提取semantic map ,将表示为通道的heatmap ,为human parser的分割类别(实验中,包括background, hair, face, upper clothes, pants, skirt, arm and leg),每一个通道是一个binary mask ,与进行点乘,就得到了decomposed person image,即通过分割mask完成了source image每一个component的分解
然后将每一个送入texture encoder ,得到style code
将style code 拼接到一起,得到full style code ,见Fig.2中的操作
In contrast to the common solution that directly encodes the entire source person image, this intuitive DCE module decomposes the source person into multiple components and recombines their latent codes to construct the full style code.
仔细想想,DCE的做法其实是等价于local patch的做法的,都是分离出不同的部分,单独进行处理
作者认为DCE有2点好处
- 能加速模型收敛
- 这是一种无监督的attribute separation方式,semantic map是human parser白送的,不需要任何annotation
下面介绍texture encoder的结构,如Fig.3所示,texture encoder其实包含了2个encoder,Learnable Encoder和VGG Encoder(pretrained on the COCO dataset),这种双Encoder的方式称为global texture encoding(GTE)
Fig.4展示了DCE和GTE的效果
3.1.3 Texture style transfer
Texture style transfer的目标是将source image的texture迁移到target pose上,是联系style code和pose code的桥梁
transfer network级联了若干个style block,内部细节见Fig.2黄色框
对于第个style block,输入是前一个feature map 和full style code ,通过残差的方式得到输出的feature map
令,总共设置8个style block
Fig.2中的表示affine transform,输出scale 和shift 用于执行AdaIN
Fig.2中的方框Fusion表示fusion module,包含3个fully connected layer,前两个layer用于select the desired features via linear recombination,最后一个layer用于维度变换
3.1.4 Person image reconstruction
将最后一个style block的输出送入decoder,得到生成结果
3.2. Discriminators
参考文献[46],设置2个判别器和,用于使具备target pose ,用于使的texture与相似
对于,假样本定义为,真样本定义为
注:数据集的特点是同一个人穿某件衣服,摆出不同pose,所以其实是ground-truth