设为首页 - 加入收藏 好传媒门户网 (http://www.sgpv.org)- 打造国内最专业的站长资讯网站!
热搜: 户外广告 荣耀 营销 报纸
当前位置: 主页 > 教程 > 正文

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

发布时间:2019-03-02 00:25 所属栏目:[教程] 来源:雷锋网
导读:副标题#e# 不好意思了,一篇文章带了三个热点:朱茵、杨幂以及波多野结衣。 我就说吃瓜群众平常要多关注科技新闻,一个在科技界已经诞生了一年多的“老技术”Deepfake 居然因为“明星换脸”的视频火出了圈。 起因是这样的:一个热心网友运用 Deepfake 把《

不好意思了,一篇文章带了三个热点:朱茵、杨幂以及波多野结衣。

我就说吃瓜群众平常要多关注科技新闻,一个在科技界已经诞生了一年多的“老技术”Deepfake 居然因为“明星换脸”的视频火出了圈。

起因是这样的:一个热心网友运用 Deepfake 把《射雕英雄传》里黄蓉的脸由朱茵变成了杨幂,然后这个小视频就在网上火了,一些酸溜溜的评论就出来了:

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

呵,我们杨女士早就拿过国际影后了好吗。

言归正传,视频里换脸后人脸的轮廓、表情都一样,动起来的效果也很真实,几乎看不出破绽。高阶的换脸技术也引来了一些恐慌:“怎么实现的换脸?如果这一技术被用在其他地方,会怎么样?我会不会被别人假冒了都不知道?”

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

不用恐慌,因为早就发生了。

AI 换脸术诞生后,造出了无数假视频,并且还被用到了制作“不可描述”视频,各种“不可描述”视频被换上了好莱坞女星的脸,比如《神奇女侠》的女主角盖尔·加朵( Cal Gadot )的脸就被嫁接到一个成人电影女星的身上。

所以,在视频里化身波多野结衣也不是不可能?这种“想看谁演AV就看谁演AV”的技术好像还真有点危险,不过雷锋网作为一个优秀的科技媒体,已经报道了太多关于 Deepfake 的新闻,让我们回顾一下:

一、换脸术在技术上如何实现?

博客平台“medium”有位作者就描述了把尼古拉斯凯奇的脸,放在川普的头上的过程,最后效果如下↓↓↓

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

雷锋网发现,实现这个效果分三步:

1.收集凯奇的照片并选择要修改的视频区域。

由于只需换脸,所以第一步就是要识别图片上的脸部,找到要替换的位置,确定方向和大小。如下图,就像照片的像素一样,现在的人脸被分解为很多个像素,你要找出替换的像素区域。

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

2.使用方向梯度直方图(简称HOG)得到凯奇的脸部特征。

把梯度方向平均划分为多个区间,在每个单元里面对所有像素的梯度方向,在各个方向区间进行直方图统计,得到一个多维的特征向量,每相邻的单元构成一个区间,把一个区间内的特征向量联起来得到多维的特征向量,,用区间对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了人脸的特征。

3.使用特征数据,训练一个自动编码器。

自动编码器是一种神经网络学习工具(深度学习背后的计算系统)。

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

通过在目标图片上训练模型,以保证即使输入的是一个不同的面孔,模型也会把它转换成原来的面孔。现在可以在目标视频中识别人脸(视频只是一堆图片),然后通过训练模型将川普转换为凯奇。

最后,合并图像,大功告成。

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

原文:除了一键生成明星色情片,“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 block

conv 是中规中矩的卷积加 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。

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

使用者选择一个目标角色,比如川普,Face2Face会将他和川普的面部特征重构并追踪,当他做出一个面部表情时,比如大张嘴,模型会重新渲染川普的脸的形状和光影,并对背景进行修改。

他们还拿普京做目标,效果看来也不错。

AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

原文:除了一键生成明星色情片,“AI 换脸术”的应用场景还有很多

四、DeepFake 现在怎么样了

谁被和谐都能接受,你偏偏跟我说这次是GitHub?不对不对,这也对不上号呀!为啥这么说?我们先来看看GitHub是个啥吧:

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章