ai实现视频通话换脸,伪装成别人

ai实现视频通话换脸,伪装成别人

ai实现视频通话换脸,伪装成别人

今天我们来试试在qq或微信聊天的时候,将自己通过ai换脸伪装成别人,声明:此文仅技术交流,不能使用此技术用于其他非法目的。

原文地址:https://github.com/alew3/faceit_live

一、实验环境

Linux host OS
NVidia fast GPU (GTX 1080, GTX 1080i, Titan, etc ...)
Fast Desktop CPU (Quad Core or more)
NVidia CUDA 9 and cuDNN 7 库已经安装了
Docker 安装了
web摄像头工作在 /dev/video0

我们还要一个虚拟摄像头

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ make && sudo make install
$ sudo depmod -a
$ sudo modprobe v4l2loopback video_nr=1
$ v4l2-ctl -d /dev/video1 -c timeout=3000

这样就创建了一个流 /dev/video1

二、下载faceit

$ git clone --recurse-submodules https://github.com/alew3/faceit_live.git /local_path/

三、创建docker

$ cd /local_path/faceit_live
$ xhost local:root # this is necessary for your docker to access the host interface
$ docker-compose build
$ chmod +x ./run_docker.sh

$ ./run_docker.sh//运行docker

然后创建目录./data/persons,并放置一个包含人员A和人员B的人脸的图像。使用与设置模型时相同的名称。此文件用于从您提供的视频中的任何其他人过滤他们的脸。例如

./data/persons/me.jpg
./data/persons/oliver.jpg

四、捕获webcam生成一段视频

你可以使用cheese或其他程序从你的网络摄像头中捕获视频,并将其用于训练。这比使用手机更好,你将在现实世界的环境中,稍后将用于转换。

$ sudo apt-get install cheese
$ cheese

你至少需要512张图片来训练,所以做一些你自己的视频,移动你的头,做出不同的表情。然后将它们放入文件夹中。 ./data/videos/:

e.g.
./data/videos/myvideo1.webm
./data/videos/myvideo2.webm

对于来自第二个人的训练视频,您可以使用youku上的视频,也可以将其直接放入同一个./data/videos 文件夹中。
将您的模型和训练数据设置在Faceit_Live.py文件的代码中,例如:

#创建模型,三个参数为: 模型名称 人员A的名称 人员B的名称
faceit = FaceIt('me_to_oliver', 'me', 'oliver')

# 从目录/data/videos中读取人员A的视频或者从youku mp4 url中.
faceit.add_video('me', 'myvideo1.webm')
faceit.add_video('me', 'myvideo2.webm')
faceit.add_video('me', 'me_from youku.mp4', 'youku url here')

#跟上面一样,人员b也这样
faceit.add_video('oliver', 'oliver_trumpcard.mp4', 'https://www.youku.com/watch?v=JlxQ3IUWT0I')
faceit.add_video('oliver', 'oliver_taxreform.mp4', 'https://www.youku.com/watch?v=g23w7WPSaU8')
faceit.add_video('oliver', 'oliver_zazu.mp4', 'https://www.youku.com/watch?v=Y0IUPwXSQqg')

五、训练和转换

现在让我们启动Docker容器并运行代码:

$ ./run_docker.sh

然后,对数据进行预处理。这将下载视频,将其分解为帧,并提取相关面。运行脚本后,请转到./data/processed/以确保它不会将其他人的图像提取到培训数据中。如果有,就删除它们。

python faceit_live.py preprocess me_to_oliver

然后训练模型,例如:

python faceit_live.py train me_to_oliver

要查看它的工作效果,请使用:

python faceit_live.py live me_to_oliver

ok,最终的效果如下

ai实现视频通话换脸,伪装成别人

{{collectdata}}

网友评论0

阿里云香港主机,免备案大优惠 打开浏览器开发html,体验云开发的乐趣bfweditor 打开浏览器即可开发php,bfwstudio
其他文章