前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >业界 | AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣

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

作者头像
AI研习社
发布于 2019-03-14 06:41:05
发布于 2019-03-14 06:41:05
1.7K0
举报
文章被收录于专栏:AI研习社AI研习社

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二、详解技术细节

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。

使用者选择一个目标角色,比如川普,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 %。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
为什么程序员都想拥有一台Mac电脑?
苹果电脑在电子类产品中算是另类了,特别受到程序员的青睐,有一次跟一个刚入行不久的同事聊天,近期准备出手买一个苹果电脑,苹果电脑肯定不是性价比最高的,为啥一定选择买个,做编程的怎么着也得拥有一个Mac电脑,满足自己的那份期待,这是典型的苹果情怀。
程序员互动联盟
2018/09/29
3.4K0
为什么程序员都想拥有一台Mac电脑?
一个月体验,终于懂了程序员为什么喜欢用MacBook!
在没用MacBook之前,一直不知道为什么各种文章说它就是程序员的标配?直到前段时间换了台Macbook,真香~
Python进击者
2019/11/12
4K0
代码我只服雷布斯!分享雷军22年前写的代码
身为小米科技的创始人、董事长和首席执行官,雷军的名字如雷贯耳。其实扒扒雷军的年轻时代,其实他大学读的是计算机专业,是程序员出身,而且一干就是10年。有网友曾说“代码只服雷军”。雷军的代码水平真的很牛吗
顶级程序员
2018/05/03
1.5K0
代码我只服雷布斯!分享雷军22年前写的代码
一个打算写一辈子代码的程序员
很多程序员喜欢称自己是码农,也就是写代码的农民,然而我从来不这么称呼我自己,一方面我觉得我还没有农民伯伯们辛苦,另一方面,我觉得我做的事情更像是一个设计师。
程序那些事儿
2023/03/07
2230
一个打算写一辈子代码的程序员
小米雷军:我的程序员人生
这篇文章是在雷总个人博客看到的,里面聊到了他作为程序员的一些经历、初衷以及思考。写的不错,转来给大家看看。
统计学家
2021/10/11
6030
雷军做程序员时写的博客,真心强啊!
这是「进击的Coder」的第 718 篇技术分享 来源:blog.sina.com.cn/leijun “ 阅读本文大概需要 6 分钟。 ” 这篇文章是在雷总个人博客看到的,里面聊到了他作为程序员的一些经历、初衷以及思考。写的不错,转来给大家看看。 如果程序人生的话,这条路太漫长。 我并非天生喜欢写程序,上高中时也没有想过程序员的生活。 我学电脑非常偶然,小时好友上大学时选择了计算机系,为了和这个朋友有更多的共同语言,我也选择了计算机系,开始步入程序人生的道路。 当我学会一些后,发现自己特别喜欢写程序。我
崔庆才
2022/09/13
9730
雷军做程序员时写的博客,真心强啊!
程序员,你离坐牢还有多远?
程序员是一个令人羡慕的高端职业,从业人员素质很高。一般不会干杀人放火强奸抢劫一类的坏事。所以,一般人认为,程序员与“坐牢”这个词没有什么相干。
用户5997198
2020/06/04
6550
程序员到底如何成为编程高手或以此创业?
每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员。现在大学、软件学院及各种培训机构,每年培养几十万的程序员,毕业的每个人都有同样困恼:找不到好的工作。问题出在哪里呢?
Spark学习技巧
2018/08/01
3450
程序员到底如何成为编程高手或以此创业?
一名普通java程序员如何成为一名高级架构师?
现在普通的java程序员多如牛毛,但真正站在金字塔顶端的程序员少的可怜,可以称之为可遇不可求,要成为一个高级架构师需要很多因素,除了自身因素之外还要需要外界环境激发,一个架构师首先是一个优秀的程序员,从事十几年始终自我定位也不是一个什么优秀的程序员,但有幸的在技术生涯持续过程中遇到几位真正的技术高手,在这尝试总结归纳下编程的习惯。
程序员互动联盟
2018/12/29
9670
作为一个会写代码的人,觉得自己最酷是什么时候?
从入行到现在代码已经十几年了,加入编程行业还是因为自己的一点小兴趣,程序员每个阶段的需求点是不一样的,所以让自己很兴奋的事情也会不相同。刚开始入行阶段,能够用代码写一个非常简单的功能都能兴奋的一晚上不睡觉,这是初级程序员最大的乐趣,毕竟从不会写代码到能写代码这种感觉是最美的,也是最兴奋的,不能称之为炫酷了应该是特别有意思。
程序员互动联盟
2019/06/19
7140
作为一个会写代码的人,觉得自己最酷是什么时候?
程序员最喜欢的五大神器
程序员留给大家的印象,不修边幅,沉默寡言。但程序员对于自己使用的神器,相当舍得花钱。今天咱们梳理下程序员最喜欢五大神器。 1.Mac电脑 Mac电脑在一定程度上体现了极致,高品质,这点和优秀程序员内在气质是吻合的,程序员对于自己代码都会一直不停在优化,重构以期望做到做好。苹果电脑在设计上追求每个细节做到极致,哪怕是外观的点点滴滴,诚然Mac电脑有这样那样的不兼容的因素,但是还是很多人喜欢,特别是有情怀的码农。 2. 码农神器HHBK键盘 这种键盘做了极大的简化,非常适合满足不用IDE编程的程序员,特
企鹅号小编
2018/01/19
1.4K0
程序员最喜欢的五大神器
程序员的江湖,黑话一定要牢记
参考原文:http://www.runoob.com/w3cnote/programmer-word-remember-boss-word.html
AWeiLoveAndroid
2019/03/01
5570
程序员的江湖,黑话一定要牢记
程序员最喜欢的五大神器
程序员留给大家的印象,不修边幅,沉默寡言。但程序员对于自己使用的神器,相当舍得花钱。今天咱们梳理下程序员最喜欢五大神器。 1.Mac电脑 Mac电脑在一定程度上体现了极致,高品质,这点和优秀程序员内在
程序员互动联盟
2018/03/16
1.2K0
程序员最喜欢的五大神器
怎样的程序员才算成功?他真心喜欢写代码吗?【程序员002】
当前在众多人眼中是否成功的重要标准就是是否赚足够多的钱,毕竟“钱”是生存、养家糊口的根本!
刘金玉编程
2023/02/27
2750
怎样的程序员才算成功?他真心喜欢写代码吗?【程序员002】
这个时代,写给我们这些浮躁的程序员
2010 年初写过一篇博客(我们是一群和平年代充满浮躁与抱怨的程序员),一年过去了,社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写 给我们这些刚入行浮躁的程序员,如何成长,以下
春哥大魔王
2018/04/16
9170
这个时代,写给我们这些浮躁的程序员
雷军:我十年的程序员生涯
内容来源:转自链接:http://blog.sina.com.cn/s/blog_4b0e23c90100b2qf.html 阅读字数:2691 | 7分钟阅读 前言 最近,和UCWEB同事讨论,怎么才能把我们的UCWEB做到极致。我说,“手机上的平台非常多,如果想做好,需要足够多、足够优秀的程序员。优秀的程序员如何定义呢?首先必须热爱写程序,其次必须是一个完美主义者。只有这样的人,才能把事情做得极致。” 说着说着,我怀念起我过去写程序的日子,从1987年到1996年,那是一段阳光灿烂的日子。几年前我无
IT大咖说
2018/06/04
4600
程序员,别了校园入了江湖
http://blog.csdn.net/mindfloating/article/details/52434631
bear_fish
2018/09/19
6760
程序员,别了校园入了江湖
程序员必备的8个编程工具
正好最近看到一位国外程序员分享自己同时拥有好几个程序员喜欢的东西是什么体验,结合平时和技术大佬、程序员下属的交流,给大家列几个我觉得不错的东西。
程序员云课堂
2021/11/23
5920
精通数据结构的程序员可以拿到多少工资?
程序员能够拿多少工资不仅仅是数据结构起到的作用,本质上讲是工资的高低还是和创造的价值是直接挂钩,在国内程序员工资相比别的职业稍微高些,主要有以下几个原因
程序员互动联盟
2018/12/07
6590
精通数据结构的程序员可以拿到多少工资?
科研汪4k搞定适合生信分析的笔记本电脑购买攻略~
这个价钱是当时站长能接受的最高价格。就以这个为起点来划分四个档供大家参考。再次注意!不是说设备越好,做分析发文章越厉害!理性消费,从我做起!另外,郑重声明:站长,不是带货的,与以下出现的商家没有任何合作。图片只为了展现样子和型号,买家是否靠谱,建议多平台货比三家,不希望误导大家。
Chris生命科学小站
2023/02/28
5K0
科研汪4k搞定适合生信分析的笔记本电脑购买攻略~
推荐阅读
相关推荐
为什么程序员都想拥有一台Mac电脑?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档