不好意思了,一篇文章带了三个热点:朱茵、杨幂以及波多野结衣。
我就说吃瓜群众平常要多关注科技新闻,一个在科技界已经诞生了一年多的“老技术”Deepfake 居然因为“明星换脸”的视频火出了圈。
起因是这样的:一个热心网友运用 Deepfake 把《射雕英雄传》里黄蓉的脸由朱茵变成了杨幂,然后这个小视频就在网上火了,一些酸溜溜的评论就出来了:
呵,我们杨女士早就拿过国际影后了好吗。
言归正传,视频里换脸后人脸的轮廓、表情都一样,动起来的效果也很真实,几乎看不出破绽。高阶的换脸技术也引来了一些恐慌:“怎么实现的换脸?如果这一技术被用在其他地方,会怎么样?我会不会被别人假冒了都不知道?”
不用恐慌,因为早就发生了。
AI 换脸术诞生后,造出了无数假视频,并且还被用到了制作“不可描述”视频,各种“不可描述”视频被换上了好莱坞女星的脸,比如《神奇女侠》的女主角盖尔·加朵( Cal Gadot )的脸就被嫁接到一个成人电影女星的身上。
所以,在视频里化身波多野结衣也不是不可能?这种“想看谁演AV就看谁演AV”的技术好像还真有点危险,不过雷锋网作为一个优秀的科技媒体,已经报道了太多关于 Deepfake 的新闻,让我们回顾一下:
一、换脸术在技术上如何实现?
博客平台“medium”有位作者就描述了把尼古拉斯凯奇的脸,放在川普的头上的过程,最后效果如下↓↓↓
雷锋网发现,实现这个效果分三步:
1.收集凯奇的照片并选择要修改的视频区域。
由于只需换脸,所以第一步就是要识别图片上的脸部,找到要替换的位置,确定方向和大小。如下图,就像照片的像素一样,现在的人脸被分解为很多个像素,你要找出替换的像素区域。
2.使用方向梯度直方图(简称HOG)得到凯奇的脸部特征。
把梯度方向平均划分为多个区间,在每个单元里面对所有像素的梯度方向,在各个方向区间进行直方图统计,得到一个多维的特征向量,每相邻的单元构成一个区间,把一个区间内的特征向量联起来得到多维的特征向量,用区间对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了人脸的特征。
3.使用特征数据,训练一个自动编码器。
自动编码器是一种神经网络学习工具(深度学习背后的计算系统)。
通过在目标图片上训练模型,以保证即使输入的是一个不同的面孔,模型也会把它转换成原来的面孔。现在可以在目标视频中识别人脸(视频只是一堆图片),然后通过训练模型将川普转换为凯奇。
最后,合并图像,大功告成。
原文:除了一键生成明星色情片,“AI 换脸术”的应用场景还有很多
二、详解技术细节
Deepfake 的整个流程包括三步,一是提取数据,二是训练,三是转换。其中第一和第三步都需要用到数据预处理,另外第三步还用到了图片融合技术。所以我在技术上主要分三个方面来剖析:图像预处理、网络模型、图像融合。
1. 图像预处理
从大图(或视频)中识别,并抠出人脸图像,原版用的是 dlib 中的人脸识别库(这个识别模块可替换),这个库不仅能定位人脸,而且还可以给出人脸的 36 个关键点坐标,根据这些坐标能计算人脸的角度,最终抠出来的人脸是摆正后的人脸。
2. 网络模型
Encoder: 64x64x3->8x8x512
x = input_
x = conv(128)(x)
x = conv(256)(x)
x = conv(512)(x)
x = conv(1024)(x)
x = Dense(ENCODER_DIM)(Flatten()(x))
x = Dense(4 * 4 * 1024)(x)
x = Reshape((4, 4, 1024))(x)
x = upscale(512)(x)
Decoder:8x8x512->64x64x3
x = input_
x = upscale(256)(x)
x = upscale(128)(x)
x = upscale(64)(x)
x = Conv2D(3, kernel_size=5, padding='same', activation='sigmoid')(x)整个网络并不复杂,无非就是卷积加全连接,编码->解码,但是仔细研究后发现作者其实是匠心独运的,为什么我不急着说,我们先看看 con 和 upscale 的内部实现:
def conv(filters):
def block(x):
x = Conv2D(filters, kernel_size=5, strides=2, padding='same')(x)
x = LeakyReLU(0.1)(x)
return x
return blockdef upscale(filters):
def block(x):
x = Conv2D(filters * 4, kernel_size=3, padding='same')(x)
x = LeakyReLU(0.1)(x)
x = PixelShuffler()(x)
return x
return blockconv 是中规中矩的卷积加 relu 激活函数,upscale 中有个函数叫 PixelShuffler,这个函数很有意思,其功能是将 filter 的大小变为原来的 1/4,让后让高 h、宽 w 各变为原来的两倍,这也就是为什么前面的卷积层的 filter 要乘以 4 的原因。
经过测试对比,比如拿掉 upscale 换成步长为 2 的反卷积,或者简单 resize 为原来的两倍,实验的效果都大打折扣,结果是网络只能自编码,而得不到需要的人脸。虽然作者没有说这样设计是引用那篇论文的思想,笔者也未读到过直接讨论这个问题的论文,但是有一篇论文可以佐证:Deep Image Prior,包括 Encoder 中的全连接层都是人为打乱图像的空间依赖性,增加学习的难度,从而使网络能够更加充分地理解图像。所以 Encoder 中的全连接层和 PixelShuffler 都是必不可少的。经笔者测试,在不加 Gan 的情况下,去掉这两个要素,网络必定失败。
3. 图像融合
图像融合放在技术难点分析中讨论。
原文:深度解密换脸应用 Deepfake
三、“AI 换脸术”还能怎么用
除了被用于色情内容,这项技术其实也许还应该有更宽泛的应用场景。
比如在电影《速度与激情7》中,主演保罗·沃克在 2013 年 11 月因车祸逝世,当时电影还没有拍完,
当时外界猜测可能会有三种弥补方案,一,原剧本拍摄,找替身,使用 CGI 特效,让沃克把戏“演”完。 二,重新修改剧本,把保罗所饰演的角色写死,或者让他消失。三,重新找男一号,重头拍摄。
在当时,后两种成本都很高,修改剧本,把保罗所饰演的角色写死,缺少对死者和影迷的尊重。而如果重新拍摄,损失太惨重。
最终,制片公司找到了保罗的弟弟,让他饰演保罗的角色,然后用 CGI 动作捕捉技术,加上保罗之前拍过但没使用的素材,把弟弟的脸变成保罗的脸,观众在看电影时基本看不出来。
如果这部电影放在今天,也许可以尝试文章开头所用的技术。
其实,关于类似人工智能技术在视频制作领域的应用,以制作图形处理器而闻名的英伟达已经在尝试了,去年12月,它就发布了一款图像算法,可以改变视频中的天气或时间。
汽车明明行驶在阳光明媚的道路上,而经过 AI 的改变,视频居然呈现出了夜晚的景象。不仅汽车的尾灯清晰明亮,就连原本没有路灯的道路两旁,都出现了真实的灯光效果。
时间再往前推,在2016年,还有一项更牛气的技术,一位来自德国纽伦堡大学的教授 Justus Thies 带领团队,做了一个能实时进行面部转换的模型,叫Face2Face。
使用者选择一个目标角色,比如川普,Face2Face会将他和川普的面部特征重构并追踪,当他做出一个面部表情时,比如大张嘴,模型会重新渲染川普的脸的形状和光影,并对背景进行修改。
他们还拿普京做目标,效果看来也不错。
原文:除了一键生成明星色情片,“AI 换脸术”的应用场景还有很多
四、DeepFake 现在怎么样了
谁被和谐都能接受,你偏偏跟我说这次是GitHub?不对不对,这也对不上号呀!为啥这么说?我们先来看看GitHub是个啥吧:
雷锋网得知,GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。而DeepFake则是GitHub的一个开源项目代码仓库,按照正常状态来说,即使在尚未登录的情况下该库也是对外开放的。然而,就是这样一个不黄、不赌也无毒的东东在一篇来自Hacker News的帖子里被曝出——当在隐身模式下以未登录的方式访问DeepFake的GitHub 仓库时,页面的显示结果却如下图示:
没错,待审核。正如上面说的,DeepFake是一个开源的项目代码仓库,如今却被提示处在审核状态,那不就是被“和谐”了吗?好端端的DeepFake为啥会遭到这般“待遇”呢?对此,该贴吧中开发者们展开了激烈的讨论,这块编辑会在文章的后面详细讲到。那么,能肯定的是这个DeepFake开源项目还真不一般,那它究竟是干啥的呢?实际上,这里面的程序代码的确能够让人们实现“换脸”的操作。
原文:DeepFake疑遭审查,网友:此乃它“干爹”所为
五、被黑灰产应用?
这一技术的应用会引发何种问题?
阿里安全图灵实验室高级算法专家觉奥表示,除了换脸引发的道德和伦理问题,黑灰产利用 AI 换脸,是目前常见的一种攻击手段,“在人脸识别系统中,识别换脸的技术叫活体检测技术,这是一个攻防对抗技术,即用 AI 的手段来解决 AI 的攻击。”
举个例子,2017 年 11 月下旬,阿里安全图灵实验室就发现,有犯罪团伙通过 3D 软件控制人脸照片进行攻击操作,共发起过几百次攻击,导致近百名受害人驾照分被盗刷。通过 3D 合成“假脸”认证账号注册或登陆后,黑灰产人员可在受害人毫不知情的情况下,用于黑卡虚假注册、刷单、薅羊毛、诈骗等不法行为。
基于安全 AI 的方法来很好地解决这一攻击问题。“通过深度学习技术,训练模型,来通过两者的纹理、肤色、反光等特性的不同而识别出来。”觉奥表示,可实现在毫秒级时间内揪出假人脸,目前识别准确率达到 99.9 %。