【CVPR 2018】照片闭眼也无妨,Facebook黑科技完美补全大眼睛


新智元报道

来源:TechCrunch,arXiv

编辑:文强,克雷格

【新智元导读】如何将照片中闭着的眼睛“打开”,一直是计算机视觉和图形学中的难题。Facebook提出了一种Exemplar GANs(ExGANs)的方法,在条件GAN的基础上加入参考信息,能合成逼真且自然的眼睛,肉眼几乎无法分辨。

现在有很多方法可以美化照片,让你看起来更好看,简单的,比如消除红眼或者镜头眩光,复杂的,甚至可能让你看起来变了一个人。

但是,到目前为止,还没有一个很好的办法处理照相时眨眼的问题:当拍照的那一瞬间眼睛正好闭上了,那么……就只能重新拍一张。

不过,现在好了,Facebook的一项最新研究可以很好地解决这个问题,而且效果惊艳。

Facebook的新技术让你完美睁眼:第一列和第二列是ground truth(分别对应正常和闭眼的情况);第三列是目前商用软件中效果最好的Adobe Photoshop Elements的结果;第四列是Facebook这次新提出的技术ExGAN。来源:研究论文

深度学习让计算机“脑补”,风格转移合成逼真细节

Facebook在他们发表于CVPR 2018的论文“Eye In-Painting with Exemplar Generative Adversarial Networks”中描述了这项工作。

这里提到的“In-Painting”,也即图像补全,最初是一个传统图形学的问题,在一幅图像上挖一个洞,看如何利用其他的信息将这个洞补全,并且让人眼无法辨别。

这个问题对人类来说似乎很容易,只要稍微想象一下,大家很容易就能脑补出洞里应该有什么。但是,这个任务对于计算机而言却十分困难,因为这个问题没有唯一确定的解,如何利用其他的信息,如何判断补全的结果是否足够逼真,都是要考虑的问题。

近来,深度学习的发展,得益于神经网络对图像中高层特征(high-level feature)的提取能力,研究人员可以将大数据和high-level feature组合起来,使这个十分困难的问题得到了比较好的解决。

例如,2017年,来自伯克利和Adobe等机构的研究人员提出了一种混合优化方法(joint optimization),利用编码器 - 解码器CNN的结构化预测和神经补丁的力量,成功合成了实际的高频细节。

对于给定的一张带有孔洞(256×256)的图像(512×512),算法可以合成出更清晰连贯的孔洞内容(d)。上图展示了混合优化方法与用Context Encoders(b)、PatchMatch(c)这两种方法产生的结果的比较。

类似于风格转移(style transfer),他们的方法将编码器 - 解码器预测作为全局内容约束,并且将孔洞和已知区域之间的局部神经补丁相似性作为风格(style)约束。

补全眼睛,还是个大问题

但是,上述方法还是存在种种局限,其中之一就是对眼睛的补完。

这并不是说眼睛——“人类心灵的窗口”很难模拟。实际上,目前的深度网络已经能在语义上产生逼真的、令人信服的结果。

但是,大多数方法并不能保留照片中人物的“身份”(identity)。DNN可以学习“打开”一双闭合的眼睛,但是模型本身并不能保证新的眼睛对应于这个人的特定眼睛结构。

DNN只会插入一双与训练集中相似的脸相对应的眼睛。这时候,如果一个人有一些明显的特征,比如眼睛的形状比较特别,就不会在生成的部分中得到体现。

Facebook提出ExGAN,比cGAN更具表现力

Facebook作为全球最大的社交网络,每天乃至每一分钟都有大量用户将自己的照片上传,而其中就有很多是闭眼的照片。

坐拥可能是全球最大的闭眼照片数据集,Facebook的研究人员自然会想,能不能在这个基础上做些什么。

于是,有鉴于生成对抗网络(GAN)在生成逼真图像中的应用,Facebook的Brian Dolhansky和Cristian Canton Ferrer提出了一个Exemplar GANs (ExGANs)。

ExGAN是条件GAN(cGAN)的扩展,利用示例信息,生成高质量、个性化的图像补全。

与以前的条件GAN不同,在判别器网络里插入了额外的参考信息(参考图片或者感知代码),因此ExGAN有更强的表现力。

ExGANs的总体训练流程可以概括为:

  1. 从输入图像中标出眼睛;
  2. 以参考图像(reference image)或感知代码(perceptual code)为指导,对图像进行补全;
  3. 通过输入图像和补全图像之间的内容/重构损失,计算生成器参数的梯度;
  4. 用补全图像、另一个ground truth图像和参考图像或感知代码,计算鉴别器参数的梯度;
  5. 通过生成器反向传播鉴别器的误差。还有可选的一步,用感知损失对生成器的参数进行更新。其中,函数C(I)是身份函数。

ExGAN,让闭眼照片完美“开眼”

ExGAN从样例中,不仅了解了这个人的眼睛看的是什么,还了解了这个人的眼睛的结构、瞳孔的颜色,等等。最终补全的结果非常逼真而且自然。

在测试中,人们误把假眼睛睁开的照片当成真实的,或者有超过一半的时间他们不能确定哪个是哪个。看了上面的实例,除非我知道照片肯定是被篡改过的,不然我在信息流中滚动浏览时我可能根本就不会注意到。

在下图中,左边第一列是ground truth,第二列是其他方法,第三列和第四列都是ExGANs的结果。其中,第三列是使用了参考图像的结果,第四列是使用了感知代码的结果。(图片可以点击放大查看。)

在某些情况下,ExGANs仍然会失败,比如当一个人的眼睛被一缕头发遮住了一部分,或者有时不能正确地着色,就会产生一些奇怪的人工痕迹。但这些都是可以解决的问题。

研究者表示,Exemplar GANs是一个通用的框架,因此可以拓展到其他计算机视觉任务乃至其他领域的问题上。

在这次的研究中,基于参考图片和基于感知代码的两种方法是分开的,因为他们想展示这两种方法都是可行的。未来,他们会研究将这两种方法结合在一起,比如在生成器里使用参考图片,在判别器里使用感知代码,从而生成更加逼真可信的眼睛补全。

不论如何,我们的照片将变得更加自然和漂亮,而鉴别“换脸”或者假视频的任务,也将更具挑战。

相关论文

Eye In-Painting with Exemplar Generative Adversarial Networks

https://research.fb.com/publications/eye-in-painting-with-exemplar-generative-adversarial-networks/

TechCrunch报道:https://techcrunch.com/2018/06/16/facebooks-new-ai-research-is-a-real-eye-opener/


原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2018-06-17

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和未来有约会

silverlight向服务器post数据类

using System; using System.Net; using System.Windows; using System.Windows.Co...

1955
来自专栏跟着阿笨一起玩NET

C# 通过HttpWebRequest在后台对WebService进行调用

http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html

2752
来自专栏菩提树下的杨过

SqlTransaction事务使用示例

using System; using System.Data; using System.Data.SqlClient; using System.Co...

1848
来自专栏c#开发者

jquery easyui datagrid mvc server端分页排序筛选的实现

1自定义一个ModelBinder public class filterRule { public string field { g...

4179
来自专栏码匠的流水账

聊聊EurekaRibbonClientConfiguration

spring-cloud-netflix-eureka-client-2.0.0.RELEASE-sources.jar!/org/springframewor...

1161
来自专栏葡萄城控件技术团队

Table-values parameter(TVP)系列之二: 利用DataTable将其作为参数传给SP

一,回顾         上一部分讲述了“在T-SQL中创建和使用TVP”,通过T-SQL建立如下的对象:         1)Tables ...

2069
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

23510
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2329
来自专栏菩提树下的杨过

winform中linkLabel的用法(示例)

private void Form1_Load(object sender, EventArgs e)         {             this...

1925
来自专栏谈补锅

记录C#常用的代码片段

using Newtonsoft.Json; using Newtonsoft.Json.Linq;

922

扫码关注云+社区