(给Python开发者加星标,提升Python技能)
转自:机器之心
近日,测试人类分辨「AI 合成人脸」能力的一个网页吸引了大家的关注。在未看攻略前,也许你也难以分辨真假。
自 2018 年 12 月英伟达推出 StyleGAN 以来,合成人脸已经让人难以轻易分辨。特别是今年年初,英伟达开源了 StyleGAN 的代码,大量真假难辨的人脸被开发者「创造」出来。
近日,有开发者创建了一个网站,让玩家分辨哪张人脸是真实的。如下图所示,打开网站地址,就可以直接玩游戏,选择自己认为的真实人脸。
网站地址:http://www.whichfaceisreal.com/index.php
下面的这些图你能分辨真假吗?(答案见文后)
在未看「攻略」之前,小编依靠本能选择,结果前五轮测试全部错误(这运气也是杠杠的)。但 AI 大牛 Yann LeCun 有妙招。Yann LeCun 在 Twitter 上「傲娇地」表示,他尝试了一些测试,全部选择正确。如果你了解当前的生成模型,就发现图像中的一些明显讯号。
其实仔细总结,我们还是会发现生成图像在细节上有些「痕迹」,而这些「痕迹」就是判别的指南。说不定以后的 GAN能解决掉这些细节,让生成图像真正「欺骗」人类。
真假脸怎么做?
在去年的 12 月中,英伟达发布了一种新型 StyleGAN,它生成的图像极其逼真,如果只看假图的话基本上都不能确定是不是真的。StyleGAN 的生成器架构借鉴了风格迁移研究,可对高级属性(如姿势、身份)进行自动学习和无监督分割,且生成图像还具备随机变化(如雀斑、头发)。
在 2019 年 2 月份,英伟达发布了 StyleGAN 的开源代码,我们可以利用它生成真实的图像。在默认情况下,SyleGAN 训练 1024×1024 分辨率的图片需要使用 8 块 GPU 训练接近一个星期,英伟达研究者在说明文档中劝告所有使用者:使用较少 GPU 可能无法达到最佳效果。
StyleGAN 官方开源地址:https://github.com/NVlabs/stylegan
StyleGAN 合成的逼真人脸图像,图源 Kerras et al. (2018)。
除了生成对抗网络的代码外,英伟达还提供了大量预训练模型,包括室内、汽车和人脸等,我们可以借助它绕过漫长的训练过程。对于这个网站所生成的人脸,英伟达提供的预训练模型是在两个大型人脸图像数据集上训练的,即 CELEBA-HQ 和 FFHQ。其中 CELEBA-HQ 提供数以千计的名人人脸,而 FFHQ 包含发布到 Flickr 的 7 万多张人脸图像。
Flickr FFHQ 数据集上的真实人脸图像,它们会用来训练算法,图像来自 FFHQ 数据集。
在这个网站中,作者每次展示一对人脸图像。其中真实人脸选自 FFHQ 数据集,合成人脸由 StyleGAN 系统生成。这些合成人脸图像同样展示在网站 thispersondoesnotexist.com 中,该网站每 2 秒展示一张由 StyleGAN 生成的伪造人脸。(参见:从此再无真「相」!这些人全部是 AI 生成的)
真假脸怎么辩?
尽管 StyleGAN 非常出色,且只看合成人脸很难相信它们都是伪造的,但是 StyleGAN 同样也会留下一些伪造的痕迹,很多痕迹甚至是生成图像的共性。这些「痕迹」因图像而异,并不是每一张图像都有,也不是所有痕迹都比较明显。但是了解这些技巧后,我们就能快速区分真假人脸,并达到很高的准确率。
水斑
我们并不确定以后的 GAN 是否也会出现这个问题,但是当前 StyleGAN 的一个显著特点是:它有时会产生一些闪亮的斑点,这些斑点看起来有点像旧照片上的水斑。这个特征很容易帮助我们将其判断为生成图像,不过斑点可能会出现在图像的任何地方,且在头发和背景的交界处出现的频率比较高。
背景问题
另一个判断依据是出现在图像背景里的各种错误,因为背景可能包含丰富的语义信息,只要语义信息不连贯,我们就能断定它是假的。神经网络主要用来训练生成面部,它对背景环境的注意力并没有那么多。在最糟的情况下,可能生成的图像如下第一张所示,旁边的人非常奇怪。当然也可能如第二张生成一些混乱的形状或立方体,如第三张生成完全不合理的背景。
眼镜
到目前为止,生成对抗网络很难生成逼真的眼镜。一个常见的问题是生成的眼镜不对称,我们只要看看眼镜的框架结构就能识别出来。很可能左边的框架会采用一种风格,而右边的框架又采用另一种风格;也可能框架的边框产生扭曲或出现锯齿。
其他不对称
总的来说,对称是人脸生成算法面临的一大挑战。除了不对称的眼镜之外,还要注意左右两边脸毛、耳朵、首饰及衣物的不对称。StyleGAN 表示:我容易么我。。
头发
头发很难渲染地很逼真。有时脸上或其他部位会有不连贯的头发(如下面第一张图所示)。还有些时候头发可能会太直、有条纹,正如 Kyle McDonald 所说的,「就像有人用调色刀或一把大刷子弄脏了一块丙烯酸颜料。」如下图中间的图所示。有时头发周围会有奇怪的光晕(如下面第三张图所示)。
Kyle McDonald 识别生成图像的经验:https://medium.com/@kcimc/how-to-recognize-fake-ai-generated-images-4d1f6f9a2842
荧光渗透
一种有趣的现象是,假照片背景里的荧光色彩有时会从背景流到头发或脸上。
牙齿
牙齿不容易渲染,假照片里的牙齿通常很奇怪或不对称。一些照片里的人甚至有三颗门牙(如下面最后一张图所示)。
照片为真的标志
上面介绍了如何识别假照片,我们已经知道神经网络难以生成什么事物。如果遇见渲染准确、各方面都做得很好的照片,你就可以很自信地说那是一张真照片。这些方面包括对称的眼镜和耳环(下图第一张)、旁边有真实无误的同伴(下图第二张)以及充满细节的背景,尤其是旁边还有可以阅读的文字(下图第三张)。
高招
在实际生活中,其实我们可以用一记妙招来可靠地辨别互联网上生成的人是否为真人。方法很简单:StyleGAN 算法不能生成同一个「假人」的多张图像。截至目前,我们还没听说过有哪一款软件可以生成同一个假人多个角度的人像。因此,如果你想确定你在社交网络上的梦中情人是真人,那就跟他多要几张照片。如果他能给出一张大头照和其他照片,那他就是真人。当然,给你发信息的人未必是照片里的人,但照片里的人一定是真人。
软件总有一天会升级,但现在来看,多张照片仍然是证明真实性的有力证据。
答案:第一张右边是真的,第二张右边的是真的,第三张左边是真的
推荐阅读
(点击标题可跳转阅读)
用 Python 全自动下载抖音小姐姐视频
人脸识别的简单介绍
小 200 行 Python 代码做了一个换脸程序
觉得本文对你有帮助?请分享给更多人
关注「Python开发者」加星标,提升Python技能
喜欢就点一下「好看」呗~