内容简介:本文为 AI 研习社编译的技术博客,原标题 :What’s In a Face (CVPR in Review V)
本文为 AI 研习社编译的技术博客,原标题 :
What’s In a Face (CVPR in Review V)
作者 | Sergey Nikolenko、Anastasia Gaydashenko
翻译 | 老赵 校对 | 酱番梨
整理 | 菠萝妹
原文链接:
https://medium.com/neuromation-io-blog/whats-in-a-face-cvpr-in-review-v-3086f60e1f1c
人脸有什么(CVPR 摘要第五部分)
我说她没有面孔; 但那意味着她有一千个面孔......
- C.S. Lewis,直到我们面对面
今天我们向你介绍另一部分,我们将深入了解CVPR 2018(计算机视觉和模式识别)会议的一些论文的细节。 我们已经有四个:关于计算机视觉的GAN,关于人类的姿势估计和跟踪,关于合成数据,以及最后关于域适应。 特别在第四部分中,我们提出了三篇关于同一主题的论文,这些论文实际具有数字可比性。
今天,我们转向一个不同的问题,也需要进行详细的比较。 我们将讨论面部生成,即从头开始或通过改变真实照片的某些特征来合成人脸的真实图像。 实际上,我们刚刚在关于GAN的第一篇文章中已经触及了这个问题。 但从那时起,生成对抗网络(GAN)一直是机器学习中最热门的话题之一,难怪今天有新的进步等待着我们。 再次,我很高兴介绍Anastasia Gaydashenko,我们与他们共同撰写了这篇文章。
合成面部的GAN和损失函数的重要性
我们已经多次谈到模型架构和良好的数据集对深度学习的重要性。 在这篇文章中,一个反复出现的主题将是损失函数的意义和重要性,即神经网络实际代表的函数。 有人可能会说损失函数是架构的一部分,但在实践中我们通常会分开考虑它们; 例如,相同的基本架构可以提供各种各样的损失函数,只需要很小的改动,这就是我们今天将要看到的。
我们之所以选择这些特别的论文,不仅是因为我们最喜欢它们,还因为它们都使用GAN,并且都在使用它们来修改面部图片,同时保留了人的身份。 这是GAN的成熟应用; 像ADD这样的经典论文用它来预测一个人如果随着年龄的变化而变化,或者如果他们拥有不同的性别,他们会是怎样的面部。 我们今天考虑的论文使这一系列研究更进了一步,以一种可能受到操纵的方式将一个人的外表(例如,化妆或情绪)的某些部分分开。
因此在某种程度上,今天的所有论文也解决了同样的问题,并且可能相互比较。 但问题是,对模型结果的真实评估基本上只能由人来完成:你需要判断新图片的真实程度。 在我们的例子中,具体任务和数据集也有所不同,因此我们不会直接比较结果,而是提取和比较新的有趣想法。
一起看论文吧。
面向开集身份保持人脸合成
第一篇论文的作者,来自中国科学技术大学和微软研究院研究人员的共同工作(完整pdf),旨在从单个面部图像中解开身份和属性。 这个想法是将一个面部的表示分解为“身份”和“属性”,使身份对应人,属性基本上对应于在保留身份的同时可以修改的所有内容。 然后,使用提取的身份标识,我们可以添加从不同面部提取的属性。
像这样:
很有意思吧? 我们来研究他们是如何做到的。 本文中有许多有趣的小技巧,但这项工作的主要贡献是一个新的基于GAN的架构:
在这里,网络将两张图片作为输入:身份图片,和作为除了人的身份之外的所有事物的来源:姿势,情感,照明,甚至背景的属性图片。
该架构的主要组成部分包括:
-
身份编码器 I 产生身份输入 xˢ 的潜在表示(嵌入);
-
属性编码器 A 对输入 xᵃ 的属性执行相同的操作;
-
混合图像生成器 G 将嵌入(连接)作为输入并产生图像 x',该图像应该混合 xˢ 的身份和 xᵃ 的属性;
-
身份分类器 C 检查生成的图片 x' 中的人是否确实与 xˢ 中的人相同;
-
鉴别器 D 试图区分真实和生成的例子,以通常的GAN方式提高生成器性能。
这是用于训练的模型结构; 当所有成分都经过训练时,为了生成本身,只需使用虚线内的部分就足够了,因此网络 C 和 D 仅包含在训练阶段。
主要问题是如何从属性中分离出身份。 我们怎样才能告诉网络应该在 xˢ 应该采取什么措施以及 xᵃ ? 上面概述的体系结构本身并没有回答这个问题,这里的主要工作是通过仔细选择损失函数来完成的。 它们中有不少; 让我们逐一筛选。 NeuroNugget 格式不允许太多公式,因此我们将尝试捕获损失函数的每个部分的含义:
-
最直接的部分是 softmax 分类损失 Lᵢ ,它训练身份编码器 I 识别照片上显示的人的身份; 基本上,我们训练 I 作为人物分类器,然后使用该网络的最后一层作为特征 fᵢ(xs);
-
重建损失 Lᵣ 更有趣; 我们希望结果 x' 无论如何重建原始图像 xᵃ 但这里有两个不同的情况:
-
如果图像 xᵃ 上的人与身份图像 xs 上的人相同,毫无疑问我们应该做什么:我们应该尽可能精确地重建 xᵃ ;
-
如果 xᵃ 和 xˢ 显示两个不同的人(我们知道监督训练阶段的所有身份),我们也想重建 xa ,但对“错误”的惩罚较低(在作者的实验中低10倍); 我们实际上并不想现在完全重建 xᵃ 但仍希望 x' 与 xᵃ 相似;
-
KL分歧损失 Lkl 旨在帮助属性编码器 A 注意属性并尽可能“丢失”身份; 它作为一个正则化器,使属性向量分布类似于预定义的先验假设(标准高斯);
-
鉴别器损失 Lᵈ 是标准的GAN:它显示了 D能够区分真实和假图像; 然而,这里也有一个转折:不仅仅包括鉴别器损失 Lᵈ ,网络开始使用Lᵍᵈ,一个特征匹配损失,用于衡量 D 在 x' 和 xa 的某个中间层上提取的特征有多相似; 这是因为我们不能指望立即愚弄D,在训练开始时鉴别器总是接近完美,我们必须首先解决较弱的损失函数(有关详细信息,请参阅CVAE-GAN论文);
-
并且,同样的技巧适用于身份分类器 C ; 我们使用基本分类损失 Lᶜ ,但也用 C 的某个中间层上 x' 和 xˢ 的特征表示之间的距离 Lᵍᶜ 来增加它。
( 声明 :我为略微弄乱图片中的符号而道歉但是Medium实际上不支持子/上标,所以我不得不使用现有的Unicode符号。)
这是相当多的东西,不是吗?这就是现代基于GAN的架构通常的工作方式:它们的最终损失函数通常是许多不同术语的总和,每个术语都有自己的动机和意义。 但是由此产生的结构非常好; 我们现在可以用几种不同的方式训练它:
-
首先,网络 I 和 C 基本上做同样的事情,识别人; 因此,他们可以共享架构和权重(这简化了训练),我们甚至可以使用标准的预训练人员识别网络作为 I 和 C 的非常好的初始化;
-
接下来,我们将整个事物训练成具有已知身份的人的图像数据集; 正如我们已经提到的,我们可以成对选择 xˢ 和 xᵃ 作为同一个人的不同图像,并让网络尝试精确地重建 xa,或者用不同的人选择 xˢ 和 xᵃ 并以较低的重建损失进行训练;
-
但即便如此也不是全部; 公开提供的人员标签数据集不够多样化,无法对端到端的整个架构进行训练,但幸运的是,它甚至允许无人监督的训练; 如果我们不知道我们不能训练 I 和 C 的身份,那么我们必须忽略他们的损失功能,但我们仍然可以训练剩下的。我们已经看到 I 和 C 是最容易训练的,所以我们可以假设他们在受监督的部分训练得很好。 因此,我们可以简单地从Web抓取一些随机面,并在不知道身份的情况下将它们添加到训练集中。
由于有意识和精确地选择了架构,损失函数和训练过程,结果非常棒。以下是论文中的两个选项。 在第一个中,我们看到从训练集中随机选择的面部变换,其中包含属性的随机面部:
而在第二,身份从未出现在训练集中。 这些是网络完全不为人知的人(“零标识身份”,正如论文所称)......它仍然可以正常工作:
成对循环GAN:用于应用和删除化妆的非对称风格转移
来自普林斯顿,伯克利和Adobe的研究人员(完整的pdf)的合作与前一篇论文的工作方式相同,但解决了更为精确的问题:我们可以在照片上添加/修改化妆而不是同时修改所有属性,而保持脸部尽可能可识别。 这里的一个主要问题是,在机器学习中经常发生的数据:如果我们有一个大型数据集对齐有和没有化妆的面部照片,那么相对直接的方法是很有可能的...但当然我们没有。 那么我们如何解决这个问题呢?
网络仍然获得两个图像作为输入:我们从中获取面部的源图像和我们采用化妆风格的参考图像。 然后模型产生相应的输出; 这里有一些示例结果,它们非常令人印象深刻:
这种无监督的学习框架依赖于循环一致的生成对抗网络的新模型; 它由两个非对称函数组成:前向函数对基于示例的风格转换进行编码,而后向函数则删除风格。 下面是它的工作原理:
图为两个耦合网络,旨在实现这些功能:一个传递化妆风格(G),另一个可以消除化妆(F); 我们的想法是使其连续应用程序的输出与输入照片匹配。
让我们再次讨论损失,因为他们定义了方法并捕捉了这项工作中的主要新想法。 我们需要的唯一符号是 X 是“无化妆”域,Y 是化妆图像的域。 现在:
-
鉴别器 DY 试图区分来自域 Y(带化妆)的实际样本和生成的样本,并且生成器 G 旨在欺骗它; 所以在这里我们使用对抗性损失将 G 的结果限制为类似于域 Y 的化妆面部;
-
由于同样的原因,F 使用相同的损失函数:鼓励它生成与从域 X 采样的无化妆面部无法区分的图像;
-
但这些损失函数还不够; 他们只是简单地让发生器重现与参考相同的图像,而不受源的任何限制; 为了防止这种情况,我们使用 G 和 F 组合的同一性损失:如果我们从 X 对面部 x 施加化妆然后立即将其移除,我们应该准确地取回输入图像 x ;
-
现在我们已经使 G 的输出属于 Y(面部化妆)并保留了身份,但我们仍然没有以任何方式使用参考化妆风格; 转移风格,我们使用两种不同的风格损失:
-
风格重建损失 Ls 表示如果我们用 G(x,y)将化妆从脸部 y 转移到脸部 x,然后用 F(y)从y移除化妆,然后从 G(x,y)应用样式到F(y),我们应该回到 y,即 G(F(y),G(x,y))应该与 y 相似;
-
然后在这一切之上,我们添加另一个鉴别器 DS,它决定一对给定的面部具有相同的构成; 它的风格鉴别器损失 LP 是目标函数的最终元素。
论文不仅仅是损失函数。 例如,另一个问题是如何获取训练集的照片数据集。 作者找到了一个有趣的解决方案:使用来自YouTube的美女博主。 他们从化妆教程视频中收集了一个数据集(在亚马逊机械土耳其人手动验证),从而确保它包含高分辨率的各种化妆风格。
结果再次令人印象深刻:
如果你与艺术模特化妆转移之前的状态对它们进行比较:结果会特别令人印象深刻:
我们有一种感觉,下一个Prisma很可能潜伏在附近的某个地方......
去表达残留学习的面部表情识别
随着今天的最后一篇论文(完整pdf),我们从化妆转向另一种非常特殊的面部特征:情绪。 我们怎样才能解开身份和情感?
在这项工作中,提出的架构包含两个学习过程:第一个是学习通过条件GAN(cGAN)生成标准中性面部,第二个是从生成的生成器的中间层学习。 为了训练 cGAN,我们使用显示一些表情(输入)的面部图像对和相同主题的中性面部图像(输出):
像往常一样学习 cGAN:生成器基于输入图像重建输出,然后将元组(输入,目标,是)和(输入,输出,否)给予鉴别器。 鉴别器试图区分生成的样本和背景实况,而生成器不仅试图混淆鉴别器而且还生成尽可能接近目标图像的图像(复合损失函数再次,但这次相对简单)。
本文将此过程称为去表达(从脸部去除表达),并且其思想是在去表达期间,与实际情绪相关的信息仍被记录为发生器的中间层中的表达组件。 因此,对于第二学习过程,我们固定生成器的参数,并且中间层的输出被组合并用作进行面部表情分类的深度模型的输入。 整体架构如下所示:
在生成中性面部之后,可以通过在像素级别或特征级别比较中性面部和查询表达面部来分析表达信息。然而,由于图像之间的变化(即,旋转,平移或照明),像素级差异是不可靠的。即使表达式没有任何变化,这也会导致较大的像素级差异。特征级差异也是不稳定的,因为表达信息可能根据身份信息而变化。由于查询图像和中性图像之间的差异被记录在中间层中,因此作者直接利用来自中间层的表达成分。
下图说明了去表达残基的一些样本,它们分别是愤怒,厌恶,恐惧,快乐,悲伤和惊讶的表达成分;图片显示了每个表达组件的相应直方图。我们可以看到,表达组件和相应的直方图都是可以区分的:
以下是不同数据集的一些示例结果。 在所有图片中,第一列是输入图像,第三列是同一面部的背景真实中性面部图像,中间是生成模型的输出:
结果,作者都获得了用于去表达的良好网络,即,从脸部移除情绪,并且通过在由去表达网络捕获的丰富特征上训练情绪分类器来改善用于情感识别的现有技术结果。
结语
谢谢你的阅读。 有了这个,我们终于完成了2018年的CVPR。很难对这么大的会议做出正确的判断; 当然,有数百篇非常有趣的论文是我们无法涵盖的。 但是,我们仍然希望它是一个有趣和有用的选择。 我们很快会在下一个NeuroNugget分期介绍中再次见到你。好运。 雷锋网雷锋网雷锋网 (公众号:雷锋网)
Sergey Nikolenko
Chief Research Officer, Neuromation
Anastasia Gaydashenko
former Research Intern at Neuromation, currently Machine Learning Intern at Cisco
想要继续查看该篇文章相关链接和参考文献?
长按链接点击打开或点击【 CVPR 2018摘要:第五部分 】:
http://ai.yanxishe.com/page/TextTranslation/1241
CVPR系列的其他文章(点击可直接跳转):
CVPR 2018摘要:第二部分
CVPR 2018摘要:第三部分
CVPR 2018摘要:第四部分
等你来译:
2018.11十大机器学习热门网文
五个很厉害的 CNN 架构
这5种计算机视觉技术,刷新你的世界观
迁移学习:如何将预训练CNN当成特征提取器
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Haskell School of Music
Paul Hudak、Donya Quick / Cambridge University Press / 2018-10-4 / GBP 42.99
This book teaches functional programming through creative applications in music and sound synthesis. Readers will learn the Haskell programming language and explore numerous ways to create music and d......一起来看看 《The Haskell School of Music》 这本书的介绍吧!