STGAN

动机

主要比较对象(StarGan, AttGan)

  • 人脸的属性很多,如果使用一个人脸属性编辑模型来处理一种人脸属性编辑问题,那么使用的模型将会指数级地增长(StarGan 和 AttGan都是一个模型)
  • 多数模型使用“编码器-解码器”结构来解决问题,然而只使用编码器解码器结构,容易导致生成的图像的质量不高。如果使用跨层连接,生成质量能够提高,但是属性操纵会不准确(文中通过AttGAN的实验证明这一点)。为了解决这个问题,本文设计了Selective Transfer Units(STU)
  • 在属性编辑问题上,其实只提供待编辑的属性的标签即可。但是,现在的模型都会使用所有的标签,使用额外的标签可能会对生成带来影响。(StarGan使用了所有的属性标签【不只是待编辑的标签,还有些不用编辑的属性的标签】作为输入,AttGan在encoder编码的特征后拼接了目标属性,由于要在一个模型中做多种属性甚至是复合属性编辑,所以不可避免地会用到多个属性的信息,如果在属性编辑的实例中,一个可以编辑n种属性的模型,只用来改变一个属性,仍然带着的其它属性就可能会对属性编辑造成影响)

贡献

  • 在属性嵌入方式上,使用了差分属性,提供了更多的属性迁移的信息(是否迁移,迁移方向,由于提供的信息更加明确,因此也有利于训练)
  • 图像质量和属性操纵上,为了解决生成图像质量和属性操纵准确度之间的矛盾,仿照GRU提出了STU,用于嵌入属性,同时对encoder编码的属性进行转换,使得属性编辑更加准确

模型

在这里插入图片描述
该方法使用了常用的编码器-解码器结构,同时为了提升图像质量,还利用了跨层连接。与一般的跨层连接不同的是,跨层连接经过了STU模块的处理,加入了属性信息。

该方法是从GRU]演化来的,类比地来看 s ^ l + 1 \hat{s}^{l+1} s^l+1可以看成GRU里边的状态输入, f e n c f_{enc} fenc可以看作是外部输入和输出。与原始的GRU相比,有两点不同。

  • 在输入上,为了嵌入特征向量,参与STU单元运算的是 s ^ l + 1 \hat{s}^{l+1} s^l+1而不是 s l + 1 s^{l+1} sl+1,两者之间的关系为:
    s ^ l + 1 = W t   ∗ T [ s l + 1 , a t t d i f f ] \hat{s}^{l+1}=W_{t\ *T}[s^{l+1},att_{diff}] s^l+1=Wt T[sl+1,attdiff]
  • 在输出上, s l s^{l} sl不是在最后和 f t f_{t} ft一起输出的,而是在中间经过遗忘门处理之后直接输出。

训练方法

  1. 重建损失(这个损失在StarGAN里没有发现,STGAN的重建效果好和这个有关系?)
    L r e c = ∣ ∣ x − G ( x , 0 ) ∣ ∣ 1 \mathcal{L}_{rec}=||x-G(x,0)||_1 Lrec=xG(x,0)1
  2. WGAN对抗损失
    max ⁡ D a d v L D a d v = E x D a d v ( x ) − E y ^ D a d v ( y ^ ) + λ E x ^ [ ( ∣ ∣ ∇ x ^ D a d v ( x ^ ) ∣ ∣ 2 − 1 ) 2 ] \max_{D_{adv}}\mathcal{L}_{D_{adv}}=\mathbb{E}_xD_{adv}(x)-\mathbb{E}_{\hat{y}}D_{adv}(\hat{y})+\\\lambda\mathbb{E}_{\hat{x}}[(||\nabla_{\hat{x}}D_{adv}(\hat{x})||_2-1)^2] DadvmaxLDadv=ExDadv(x)Ey^Dadv(y^)+λEx^[(x^Dadv(x^)21)2]
    max ⁡ G L G a d v = E x , a t t d i f f D a d v ( x , a t t d i f f ) \max_{G}\mathcal{L}_{G_{adv}}=\mathbb{E}_{x,att_{diff}}D_{adv}(x,att_{diff}) GmaxLGadv=Ex,attdiffDadv(x,attdiff)
  3. 属性分类损失(StarGAN里也有这个损失)
    L D a t t = − ∑ i = 1 c [ a t t s ( i ) l o g D a t t ( i ) ( x ) + ( 1 − a t t s ( i ) ) l o g ( 1 − D a t t ( i ) ( x ) ) ] \mathcal{L}_{D_{att}}=-\sum_{i=1}^{c}[att_{s}^{(i)}logD_{att}^{(i)}(x)+(1-att_s^{(i)})log(1-D_{att}^{(i)}(x))] LDatt=i=1c[atts(i)logDatt(i)(x)+(1atts(i))log(1Datt(i)(x))]
    L G a t t = − ∑ i = 1 c [ a t t t ( i ) l o g D a t t ( i ) ( y ^ ) + ( 1 − a t t t ( i ) ) l o g ( 1 − D a t t ( i ) ( y ^ ) ) ] \mathcal{L}_{G_{att}}=-\sum_{i=1}^{c}[att_{t}^{(i)}logD_{att}^{(i)}(\hat{y})+(1-att_t^{(i)})log(1-D_{att}^{(i)}(\hat{y}))] LGatt=i=1c[attt(i)logDatt(i)(y^)+(1attt(i))log(1Datt(i)(y^))]

实验

数据集和划分方式

使用CelebA数据集,划分方式为默认方式,同时从validation set里边抽出1000张用于验证,其他的还是用于训练。
图像尺寸: 128 × 128 128\times128 128×128

主观评价

  1. 图像重建实验 Fig.2(Q:实验想证明的是vector的改变有利于保持属性,但是在实验对比中,没有分别使用和AttGAN,StarGAN相同的结构)
  2. 生成图像展示 Fig.1
  3. 和其它方法的对比 Fig.6

在生成任务里,往往重建效果好,生成的特征就不明显;生成的特征明显,重建效果就差。所以1,2,3实验都是必备的(虽然很多论文没有实验1)

客观评价

  1. 图像重建实现的PSNR,SSIM
  2. 属性分类器的准确率

用户评价

消融实验

  1. 在多个模型上应用差分属性向量,使用生成属性的识别率,证明了向量的有效性。
  2. 试验了多种模型的变体,使用生成属性的识别率,证明了STU的有效性。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值