前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >拯救北京卫视!如何用Deepfakes把“吴秀波”的脸换掉

拯救北京卫视!如何用Deepfakes把“吴秀波”的脸换掉

作者头像
大数据文摘
发布2019-03-04 13:07:12
2.3K1
发布2019-03-04 13:07:12
举报
文章被收录于专栏:大数据文摘大数据文摘

大数据文摘出品

作者:李可、Conrad

北京卫视可能是本次春节最苦的剧组了。

众所周知,吴秀波事发之时,北京卫视春晚也已经完成了录制,吴秀波有一个唱歌节目,而且还是主持人之一,有大量的群体镜头。

当大家都抱着吃瓜的心态看戏时,北京卫视已经急疯了,连夜在内部紧急商讨应对方案。

毕竟,之前浙江卫视综艺《王牌对王牌》剪辑师花了3天3夜才把吴秀波的镜头剪没。

那么作为北京卫视春晚的主持人,尤其还是站在C位,吴秀波到底镜头会剩下多少,甚至是如何删减都成了网友关注的焦点。

结果网友们惊奇地发现,北京卫视春晚用了最狠的一招——

主持人串场都剪掉了,正常的节目一个接一个地表演。

此外,能放大画面的放大画面把波叔框出去,能贴观众反应镜头的贴上,能剪掉的串场互动全删。

擦除,复制,翻转,粘贴。四个动作,涉及大概几百帧(1秒25帧)。

后期的小伙伴,花多长时间做的呀?

网传浙江卫视《王牌对王牌》的P图技术

这个时候,文摘菌特别想为北京卫视安利一波最近大火的换脸技术

-Deep fakes,给带有吴秀波的视频一键“换脸”。

这篇文章我们也简单介绍一下这款换脸神器,并手把手告诉你,如何把“吴秀波”或者任何人,一步步换掉。

关于Deep fakes

Deep fakes 是一种使用AI深度学习,能够将一张图片中人的脸换到其他人的图片上的技术。通过这种技术,我们可以创建一个非常逼真的“假”视频或图片,“换脸”因此得名。

研究人员使用自动编码器神经结构,使这一想法成为现实。基本思路非常简单:对于每张脸,我们都训练一套编码器和相应的解码神经网络。编码时,使用的是第一个人的图片。而解码时,却是使用第二个人解码器。

对于训练部分,试试这菜需要搜集每个人几百张不同姿势的图片,用吴秀波这种明星来做训练很容易,毕竟有大量的网络公开图片视频。

图片不足时,我们还可以从现有视频中提取。在神经网络训练并学习了关于每个人面部的特征之后,它自己就能预测想出这个人还没摆出来的姿势。

比如,训练生成John Oliver。

在此技术出现之前,人们想换个脸只能依赖手动PS。这就要花费很多人工和时间,而且想在视频里换个脸更难,每一帧都得换。

但自从这个叫做“deep fakes”的软件被匿名开源发布,一切都不一样了。

广受诟病被封杀

2017 年,一个名为Deepfakes的匿名用户在Reddit论坛上公布了一段代码,让不懂视频后期的用户也能轻松通过输入足够样本的图像供机器学习,以此换掉视频中人物的脸。

此后,Deepfakes 在社交网络上大火,有Reddit用户甚至据此开发了一款app,让更多不懂技术的小白用户也可以使用这项功能。但随着技术普及,一些色情视频逐渐成为污名化、骚扰及伤害女性的新武器。

著名演员斯嘉丽·约翰逊成为了被使用最多的女明星,深受其害的她在华盛顿邮报的采访中表示:“让任何一个人成为这项技术的攻击目标只是时间问题。”在过去的一年中,已经被叠加到数十个性爱视频中,其中一个“走光”视频已经在一个主要的色情网站上观看了超过 150 万次。

斯嘉丽·约翰逊的换脸视频

这些问题让Deepfakes因此大受诟病,连一向以开放著称的Reddit社区都表示了谴责,强制把/r/deepfakes subreddit.下线。

之后,包括facebook、twitter和pornhub在内的多家网站都对Deepfakes发布了禁令。

不过,相关的研究还在进行。网友们也找到了越来越多使用这一开源代码自娱自乐的新方式。

除了对已有视频进行“换脸”,网友们还找到了新的应用方式:直播换脸啦!Live Deep Fakes。

某blog博主换脸 John Oliver 逗朋友

faceswap:

https://github.com/deepfakes/faceswap

代码链接:

https://github.com/goberoi/faceit

用这些工具从YouTube视频中提取图像非常容易。

访问github并按照说明操作!我提供了一个Docker文件让它更简单。

https://github.com/alew3/faceit_live

在训练模型超过48小时后,就可以获得非常好的结果了。对于网络摄像头上的实时渲染,它可以非常好地以帧速率工作,在本来就不那么流畅的视频会议中看起来很正常。

动手试一试!

不如自己尝试一下吧。完成这件事的前提是你有一台性能很不错的计算机。

动手之前我们首先了解一下,目前存在四大主流软件,这里对他们的性能做出简要的介绍:

鉴于这是一项很有趣的业余实验,我们可以探索一下。遗憾的是,目前主流的换脸实践都是在Windows系统内实现的。但不久前有Github大神探索出了DeepFaceLab在Mac上实现的方法。

文摘菌没有windows电脑搭配高性能显卡,仍然使用的是随身携带的MAC PRO。尽管受限于在Mac上无法使用DeepFaceLab的GPU模式,部分操作被剪掉,但大部分核心功能被成功转移。接下来的实验的目的就是复现这位大神在Mac上实现换脸的过程。

1. 首先需要下载或克隆Github作者在网页上发布的文件集。然后找到页面相应按钮下载即可。

github:

https://github.com/iperov/DeepFaceLab/tree/a8694b73f0128cac29c1382721fc60a1ab28e711

建议把解压后的文件夹放在~/Users/(username)路径下,这样可以省略后期的路径查找,比较方便。(username是你的Mac用户名)

代码语言:javascript
复制
$ git clone git@github.com:iperov/DeepFaceLab.git

*备注:我尝试git clone的方法时失败了(无法clone到关键文件Dockerfile.cpu),如果有小伙伴成功了请留言告知,感谢~

2. 打开终端,输入

代码语言:javascript
复制
$ cd DeepFaceLab

3. 安装Docker

https://hub.docker.com/editions/community/docker-ce-desktop-mac

按要求注册、下载、安装即可。

4. 为DeepFaceLab构建Docker镜像

代码语言:javascript
复制
$ docker build -t deepfacelab-cpu -f Dockerfile.cpu.

5. 安装并运行DeepFaceLab

代码语言:javascript
复制
$ docker run -p 8888:8888  --hostname deepfacelab-cpu --name deepfacelab-cpu  -v
$PWD:/notebooks  deepfacelab-cpu

因为你目前的目录是DeepFaceLab,所以-v $PWD:/notebooks,意味着把DeepFaceLab装载到Docker中的notebook里。

代码语言:javascript
复制
The Jupyter Notebook is running at:
http://(deepfacelab-cpu or 127.0.0.1):8888/?token=your token

6. 打开新的terminal页面,在/notebooks运行DeepFaceLab

代码语言:javascript
复制
$ docker exec -it deepfacelab-cpu bash
$ ls-A

7. 在deepfacelab-cpu bash使用jupyter notebook

代码语言:javascript
复制
$ jupyter notebook list

或者你可以直接在浏览器内运行:

代码语言:javascript
复制
http://127.0.0.1:8888/?token=your_token

8. 停止或关掉Docker Container

代码语言:javascript
复制
$ docker stop deepfacelab-cpu
$ docker kill deepfacelab-cpu

9. 开启Docker Container

代码语言:javascript
复制
# start docker container
$ docker start deepfacelab-cpu
# open bash to run deepfacelab
$ docker exec -it deepfacelab-cpu bash

10. Enjoy

代码语言:javascript
复制
# make sure you current directory is `/notebooks`
$ pwd
# make sure all `DeepFaceLab` code is in current path `/notebooks`
$ ls-a
# read and write permission
$ chmod+x cpu.sh
# run `DeepFaceLab`
$ ./cpu.sh

运行小tips

1. 概念

比方说要把照片B中特朗普的脸换成照片A中尼古拉斯-凯奇的脸,那么特朗普的脸便是DST脸,凯奇的脸便是SRC脸。知道这个概念与之后要把照片/视频放到哪个文件夹中密切相关。

2. 使用MTCNN(mt)来提取脸

在提取脸的环节,使用mt方式,而不是dlib(manual)提取法。

3. 使用hist来排序(对图片换脸无意义)

这个过程中你可以删除一些明显不是人脸的图片,但记住都使用hist方法来排序。

4. 使用H64模型来训练模型、换脸(步骤Train和Convert)

因为Mac中只能用CPU来实现DeepFaceLab,而H64是唯一适合这种模式的模型了。当然,你也可以根据自己CPU的情况,选择H128或者DF。但强烈建议H64。

5. 一步一步执行下列命令来探索

root@deepfacelab-cpu:/notebooks# ./cpu.sh

1) clearworkspace

2) extract PNG from video data_src

3) data_src extract faces

4) data_src sort

5) extract PNG from video data_dst 11) quit

6) data_dst extract faces

Please enter your choice:

7) data_dst sortby hist

8) train

9) convert

10) converted to mp4

11) quit

6. 把文件放到workspace的相应文件夹中

照片换脸:DST文件放到data_dst文件夹,SRC文件放到data_src文件夹中。

视频换脸:将两个视频命名好后,都放在workspace目录下即可,DeepFaceLab会在后续步骤中询问你要将哪个视频作为DST、哪个作为SRC。

7. 实现

开始跑吧!

参考资料:

GitHub链接:

https://github.com/iperov/DeepFaceLab

Deepfakes中文网:

https://deepfakes.com.cn

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

本文分享自 大数据文摘 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档