专栏首页人工智能前沿讲习CVPR 2019 | STGAN: 人脸高精度属性编辑模型

CVPR 2019 | STGAN: 人脸高精度属性编辑模型

AttGAN和StarGAN在人脸属性编辑上取得了很大的成功,但当人脸属性之间相互交集或者目标人脸属性比较复杂时,这两种方式对于控制属性的标签上的精细化就显示了些许的不足。STGAN是一个建立在AttGAN基础上的人脸属性编辑模型,通过差分属性标签下选择性传输单元的跳跃连接实现了人脸高精度属性的编辑。

前言--ATTGAN

判别器D:

属性分类限制

classification也要训练的,和auto-encoder一起训练,介样练:

生成器:

重建误差

对抗误差

总误差(分为两步)

ATTGAN 模型都是架构在编码器 - 解码器上,同时将源图像和目标属性向量作为输入,AttGAN不是对潜在表示施加约束,而是对生成的图像应用属性分类约束,以保证所需属性的正确变化,同时引入重建学习以保留属性排除细节。StarGAN只用一个generator网络,处理多个domain之间互相generate图像的问题,这是比AttGAN更深一步的人脸属性迁移。

不过,我们今天要介绍的是 STAGN:

STGAN 用的的是一个类 UNET 的网络结构做生成器,在 skip-connection 的时候使用了一个叫 STU(提出了选择性传输单元) 的操作,来自适应地选择和修改编码器特征,其进一步与解码器特征连接以增强图像质量和属性操纵能力,相当于给生成器加上了硬解耦的作用.

选择性传输单元

在介绍选择性传输单元之前,我们先把文章对目标属性和源属性的标签处理交代一下。StarGAN 和AttGAN 都将目标属性向量AtttAttt和源图像x作为输入到生成器。实际上,使用完整目标属性向量是多余的,可能对编辑结果有害。如果目标属性向量AtttAttt与源AtttAttt完全相同,此时,理论上输入只需要对图像进行重构即可,但StarGAN和AttGAN 可能会错误地操作一些未更改的属性,比如把原本就是金色头发变得更加的金色。

对于任意图像属性编辑,而不是完整目标属性向量,只应考虑要更改的属性以保留源图像的更多信息。因此,将差异属性向量定义为目标和源属性向量之间的差异是合适的:

比如男性有胡子戴眼镜的源图编辑到男性无胡子戴眼镜秃头目标图,这里面仅仅是添加了秃头这一属性,减少了胡子这一属性,其它的可以保持不变。AttdiffAttdiff可以为指导图像属性编辑提供更有价值的信息,包括是否需要编辑属性,以及属性应该改变的方向。然后可以利用该信息来设计合适的模型,以将编码器特征与解码器特征进行变换和连接,并且在不牺牲属性操纵精度的情况下提高图像重建质量。

选择性传输单元(STU)来选择性地转换编码器特征,使其与解码器特征兼容并互补,而不是通过skip connection直接将编码器与解码器特征连接起来。这个变换需要适应变化的属性,并且在不同的编码器层之间保持一致,作者修改GRU[3]的结构以构建用于将信息从内层传递到外层的STU。

我们来看一下STU的结构:

其中[⋅,⋅][⋅,⋅]表示为concatenation操作,∗T∗T为转置卷积,然后,STU采用GRU的数学模型来更新隐藏状态slsl和转换后的编码器特征fltftl:

if use_stu:
            self.stu = nn.ModuleList()
            for i in reversed(range(self.n_layers - 1 - self.shortcut_layers,\
                                    self.n_layers - 1)):
                self.stu.append(ConvGRUCell(self.n_attrs, conv_dim * 2 ** i, \
                                 conv_dim * 2 ** i, stu_kernel_size))

模型结构

有了上述的分析,我们再看模型的结构则是比较容易理解了:

实验

CelebA数据集包含裁剪到178×218的202,599个对齐的面部图像,每个图像有40个带/不带属性标签。图像分为训练集,验证集和测试集,文章从验证集中获取1,000张图像以评估训练过程,使用验证集的其余部分和训练集来训练STGAN模型,并利用测试集进行性能评估。实验考虑13种属性,包括秃头,爆炸,黑发,金发,棕色头发,浓密眉毛,眼镜,男性,嘴微微开口,小胡子,无胡子,苍白皮肤和年轻,实验中,每个图像的中心170×170区域被裁剪并通过双三次插值调整为128×128。

定量评估上,文章从两个方面评估属性编辑的性能,即图像质量和属性生成准确性。图像质量上,保持目标属性向量与源图像属性相同,得到了PSNR / SSIM结果:

吐槽:PSNR 和 SSIM 在这里当做评价指标简直是瞎扯淡…...

这个指标还行…...

实验在用户的选择测试上也取得了最佳效果,Ablation Study实验上也证实了模型的每一部分的优势和必要。最后放一张STGAN在图像季节转换的实验效果:

总结

文章研究了选择性传输视角下任意图像属性编辑的问题,并通过在编码器 - 解码器网络中结合差分属性向量和选择性传输单元(STU)来提出STGAN模型。通过将差异属性向量而不是目标属性向量作为模型输入,STGAN可以专注于编辑要改变的属性,这极大地提高了图像重建质量,增强了属性的灵活转换。

作者:知乎-马卡斯·扬

地址:https://www.zhihu.com/people/ba-la-ba-la-82-47

本文分享自微信公众号 - 人工智能前沿讲习(AIFrontier)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于深度学习的艺术风格化研究【附PDF】

    廖菁博士,获浙江大学和中国香港科技大学双博士学位;毕业后曾工作于微软亚洲研究院,担任视觉计算组研究员,主要研究方向为计算机图形学、计算机视觉、图像视频处理等;现...

    马上科普尚尚
  • 思想的碰撞:非局部均值偶遇深度学习(第二部)

    code:https://github.com/SHI-Labs/Cross-Scale-Non-Local-Attention

    马上科普尚尚
  • Shai Ben-David:无监督学习中的鲜花与荆棘

    本次报告,Shai Ben-David教授首先对无监督学习(Unsupervised Learning)的基础性原理进行了阐述,对其一些具体的应用场景进行了介绍...

    马上科普尚尚
  • 零基础学习 Python 之类属性

    如果你看过昨天(写个“类”就是这么 so easy)和前天(我与 “类” 的初次相见)的文章相信你已经对 “类” 有了一些基本的认识,为了能给之后的编程打个稍微...

    Rocky0429
  • JavaScript | 获取数组中的单词并统计出现次数

    HTML5学堂(码匠):如何通过JavaScrip实现数组元素的查找?在一个数组当中,找到所有的单词,并统计每个单词出现的次数。 功能需求 在一个自定义数组...

    HTML5学堂
  • 手把手带你开启机器学习之路——房价预测(一)

    本文我们使用加州住房价格数据集,从零开始,一步一步建立模型,预测每个区域的房价中位数。目的是完整实现一个机器学习的流程。

    超哥的杂货铺
  • 机器学习:半朴素贝叶斯分类器

    主要推送关于对算法的思考以及应用的消息。培养思维能力,注重过程,挖掘背后的原理,刨根问底。本着严谨和准确的态度,目标是撰写实用和启发性的文章,欢迎您的关注。 0...

    double
  • Python 私有属性和私有方法

    其中__secret这个私有方法只能在类中调用,所以外部对象实例想要获取私有方法或者私有属性,那么就需要定义一个公有的方法来传递数值。

    Devops海洋的渔夫
  • Solidity教程系列2 - 地址类型介绍

    Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么

    Tiny熊
  • 贝叶斯分类器

    贝叶斯决策论是一种基于概率的决策理论。当所有相关的概率都已知的理想情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。

    不知雨

扫码关注云+社区

领取腾讯云代金券