当前位置: 代码迷 >> 综合 >> 论文解读-Controllable Person Image Synthesis with Attribute-Decomposed GAN
  详细解决方案

论文解读-Controllable Person Image Synthesis with Attribute-Decomposed GAN

热度:23   发布时间:2024-02-11 08:15:40.0

论文解读-<Controllable Person Image Synthesis with Attribute-Decomposed GAN>

一、基本情况

题目:Controllable Person Image Synthesis with Attribute-Decomposed GAN 基于属性分解生成对抗网络的可控人像生成
来源:CVPR2020 oral
机构:北京大学、字节跳动
作者:Yifang Men, Yiming Mao, Yuning Jiang, Wei-Ying Ma, Zhouhui Lian
文章:文章地址
代码:github

二、论文解读

1 论文摘要介绍

本篇论文介绍了一种属性分解(Attribute-Decomposed)的生成对抗网络,这个新颖的生成模型能够可控地生成那些你想要的特征(例如姿势、头、上衣和裤子)的真实人像图片。本模型的核心思想是将人体的属性作为单独的编码嵌入到潜空间中,由此通过在完整的Style表征中进行混合和插入来得到自由连续属性变换。另外,本文提出了一种两路编码器组成结构,它们之间通过一系列风格残差块连接,它可以用来将原本困难的映射分解为多个比较简单的子任务。在source这条路径上,我们通过现有的人体部件解析器将各部位提取出来,并将其送入一个共享的全局纹理编码器中(global texture encoder,GTE)以此获取分离的潜码。这个策略使得生成的图像更加真实并且可以自动分离为标注属性的图像。通过实验,其结果证实提出的这个方法比现有方法在姿势迁移上更具优越性,此外它对执行各部位属性的转移这个新任务也很有效率。

2 模型介绍

image.png
本方法的目标是生成高质量的人像图片,并且是可以控制像姿势、头、上衣和裤子这些属性的。和此前一些属性编辑的方法不同,它们需要利用对每个属性进行二值标注的数据集,而本模型实现了自动无监督的分离部位属性、只需要一个包含人体图像的数据集,其中同一个人要有多种姿势。此外,通过现有的姿态估计方法,对这些人体图片分别生成18通道的关键点热力图。即原图像是 I R 3 × H × W I \in R^{3×H×W} ,对应的关键点姿势是 P R 18 × H × W P \in R^{18 \times H \times W} 。在训练中,目标姿势 P t P_t 和原始人像图片 I s I_s 会被送到生成器中,生成合成图像 I g I_g 会拥有 I s I_s 的外观但是遵循 P t P_t 的姿势,并且合成图像将被判别器对真实性进行判别。

2.1 生成器

该方法的生成器将目标姿势 P t P_t 和原始图像 I s I_s 通过两个分别叫做姿势编码和独立部位编码的路径切入到潜码之中。这两条路径通过一系列的Style blocks连接,它可以将原始图像的纹理信息添加到姿势特征中去。最后在通过一个解码器重构人体图像。

姿势编码

目标姿势 P t P_t 通过N个(本文中为2个)下采样卷积层得到姿势编码 C p o s e C_{pose} ,这部分就结束了

分解式部件编码(DCE)

本模块通过现有的人体部位解析器(具体:Look into Person: Self-supervised Structure-sensitive Learning and A New Benchmark for Human Parsing)从原始图像 I s I_s 中提取语义图 S S ,再将 S S 转换为 K K 个(部件个数)通道的热力图 M R K × H × W M \in R^{K \times H \times W} 。对通道 i i 来讲, M i R H × W M_i \in R^{H \times W} 是对应部位(如上衣)的一个二值遮罩。由此得到人体图像分离后各部分的表示:
I s i = I s M i I_s^i = I_s \odot M_i
然后再将上述的各部分输入到纹理编码器 T e n c T_{enc} 中得到对应的样式编码 C s t y i C_{sty}^i ,即:
C s t y i = T e n c ( I s i ) C_{sty}^i = T_{enc}(I_s^i)
这里, T e n c T_{enc} 是共享的。之后将所有的 C s t y i C_{sty}^i 连接起来得到完整的样式编码 C s t y C_{sty}

和常规的直接将整张图像送入编码的方法不同,本文的方法将原始图像分解成多个部分,然后再将它们各自的潜码重新组合再一起得到样式编码。这么做有两个好处:

  1. 加快模型收敛速度并能够在短时间内得到更真实的结果。
  2. 可以对没有任何标注的数据进行自动地、无监督地特征分离。

image.png
对于纹理编码这部分,作者参考了Arbitrary style transfer inreal-time with adaptive instance normalization这篇文章给出的方法。全局纹理编码(GTE)将通过VGG中的各层提取的特征与自己构建的编码器的对应的层的输出特征连接起来,自己的原始编码器中的参数是可学习的,而VGG编码器的参数是固定的。因为VGG是在COCO数据集上训练的,见识过了各种各样的图片,对一些罕见的图像纹理有更好的感知能力,但因为本文需要生成固定的、精准的结果,仅仅使用VGG是不足的,因此还要加上一个可学习的编码器来使模型适应复杂的情况。下图的 ?(d)展示了没有使用这种方法的效果对比。
image.png

纹理样式转移

image.png
本部分将原始图像的纹理信息注入到目标姿势特征中去。本模块包括多个(本文应该是用了8个)级联的style block,每个block由一个fusion module、一个包含AdaIN的残差卷积块组成。对于 t t h t^{th} 个Style block,它的输入是上一个block的输出和样式编码 C s t y C_{sty} ,公式如下:
F t = φ ( F t ? 1 , A ) + F t ? 1 F_t = \varphi(F_{t-1},A) +F_{t-1}
F 0 = C p o s e F_0 = C_{pose}

A A 表示一个学习到的仿射变换参数( μ \mu σ \sigma ),AdaIN中会用到它们,实现了样式的迁移。这两个参数的学习由fusion module(FM)从样式编码 C s t y C_{sty} 中获得。这是一个DCE的重要辅助模块,因为身体各部分的编码是按特定顺序组件样式编码的,所有位置和部位特征之间有很高的相关性。这种很强的人为干预对网络的学习可能会带来影响,所以FM使用了3个全连接层来让网络自由选取特征,然后在最后一层输出我们需要的维度作为参数。下图是一些效果对比
image.png

人像重建

将最后一个style block的输出通过N个反卷积层,得到人像

2.2 判别器

本文采用了两个判别器 D p D_p D t D_t D p D_p 是用来保证生成图片的姿势和目标姿势对齐的, D t D_t 是用来确保生成图片和原始图片之间的纹理相似性。
D p D_p : 正样例对为( P t , I t P_t,I_t ),负样本为 P t , I g ) (P_t,I_g)
D t D_t :正样本为 I s , I t ) (I_s,I_t) ,负样本为 I s , I g ) (I_s,I_g)
两个判别器的具体实现是参考了PatchGAN

2.3 训练

损失函数有四部分构成,分别为对抗损失、重建损失、感知损失、内容损失,具体公式如下:

L t o t a l = L a d v + λ r e c L r e c + λ p e r L p e r + λ C X L C X \mathcal{L}_{total} = \mathcal{L}_{adv}+ \mathcal{\lambda}_{rec}\mathcal{L}_{rec}+ \mathcal{\lambda}_{per}\mathcal{L}_{per}+ \mathcal{\lambda}_{CX}\mathcal{L}_{CX}
对抗损失:
L a d v = E I s , P t , I t [ log ? ( D t ( I s , I t ) ? D p ( P t , I t ) ) ] + E I s , P t [ log ? ( ( 1 ? D t ( I s , G ( I s , P t ) ) ) ? ( 1 ? D p ( P t , G ( I s , P t ) ) ) ) ] \begin{aligned} L_{adv} = & \mathbb{E}_{I_s,P_t,I_t}[\log(D_t(I_s,I_t)\cdot D_p(P_t,I_t))]+ \\ & \mathbb{E}_{I_s,P_t}[\log((1-D_t(I_s,G(I_s,P_t))) \\ & \cdot(1-D_p(P_t,G(I_s,P_t))))] \end{aligned}
重建损失:指导生成图像和目标图像之间的相似性,避免色彩失真,加快收敛。形式上等同于计算生成图和目标图的L1距离。
L r e c = G ( I s , P t ) ? I t 1 L_{rec} = \| G(I_s,P_t)-I_t\| _1
感知损失
L p e r = 1 W l H l C l x = 1 W l y = 1 H l z = 1 C l ? l ( I g ) x , y , z ? ? l ( I t ) x , y , z \mathcal{L}_{per} = \frac{1}{W_lH_lC_l}\sum_{x=1}^{W_l}\sum_{y=1}^{H_l}\sum_{z=1}^{C_l}\| \phi _l (I_g)_{x,y,z} - \phi _l(I_t)_{x,y,z} \|
? l \phi_l 是VGG19网络的第l层输出

内容损失:用于判定两个非对齐图片之间的相似性。
L C X = ? log ? ( C X ( F l ( I g ) , F l ( I t ) ) ) \mathcal{L}_{CX}=-\log(CX(\mathcal{F}^l(I_g),\mathcal{F}^l(I_t)))
F l \mathcal{F}^l 被定义为VGG19中的输出,其中 l = r e l u { 3 _ 2 , 4 _ 2 } l = relu\{3\_2,4\_2\}

3 实验结果

数据集: In-shop Clothes Retrieval Benchmark DeepFashion
评估指标 :IS、DS、CX(CX-GS、CX-GT)

3.1 姿势转移

与现有优秀方法对比

  • 定性

image.png

  • 定量

image.png

3.2 部位属性转移

image.png
样式混合:实现两个人之间的连续变化
C m i x = β C u c 1 + ( 1 ? β ) C u c 2 C_{mix} = \beta C_{uc1} + (1- \beta )C_{uc2}

3.3 失败案例

image.png
在字母、卡通图案、一些罕见的姿势上表现不是很好

三、总结

本篇论文主要贡献如下:

  • 提出了一种新的任务:直接从不同的图片中提取属性并合成图像。本文通过姿势与部件层级属性的复杂操作实现了这一目标
  • 提出了Attribute-Decomposed GAN,实现自由可控的人像属性控制,也对PIS任务有了很好质的提升
  • 使用现有的人体部位解析方法实现了对无标注数据的自动属性分离。

该方法除了应用在PIS(Person Image Synthesis),也可用于其他类型图像的合成。

  相关解决方案