其他
你的红色高跟鞋,AI 换脸技术初体验
点击上方“Jack Cui”,选择“加为星标”
第一时间关注技术干货!
1
2
3
人脸检测
特征提取
人脸转换
images_A += images_B.mean(axis=(0, 1, 2)) - images_A.mean(axis=(0, 1, 2))
4
大致的原理讲完了,开始进入实战部分,环境搭建。
Faceswap 项目地址:https://github.com/deepfakes/faceswap
Faceswap 这类的换脸算法,计算量很大,强烈推荐使用 GPU 搭建开发环境。
我是 RXT 2060 super ,训练模型都需要 12 个小时以上,如果只用 CPU 训练,那可能需要几个星期的时间才能训练好。
Faceswap 程序,对于 Python 版本、 CUDA 版本和 tensoflow-gpu 版本都有要求。
经过我的熬夜测试,Python 版本必须是 3.6.x,如果是 3.7.x 都跑不起来。
CUDA 版本也得是 10.0 或 9.0,版本高了,比如 10.2,训练的时候会出现 gpu 用不起来的情况。
我的运行环境是:
CUDA 10.0
Python 3.6
tensorflow-gpu 1.14.0
还是推荐使用 Anaconda 配置环境,直接创建一个 Python 3.6 的环境,然后在里面折腾:
conda create -n tf python==3.6
只要这几个基础库版本没有问题,其他就好说了,根据项目的 requirements.txt 直接安装第三方库即可:
python -m pip install -r _requirements_base.txt
除了这些第三方库,官方还少统计了一个 pynvml,直接用 pip 安装即可。
python -m pip install pynvml
此外还需要配置一下 FFmpeg,安装好后记得配置环境变量。
下载地址:
http://ffmpeg.org/
5
faceswap 有一个强大的 GUI 。
输入如下指令,打开 GUI。
python faceswap.py gui
主要提供了四个功能:
Extract:数据集制作,可以自动提取视频或图片中的人脸。
Train:训练模型,有多种算法可供选择。
Convert:换脸,使用训练好的模型对图片或视频换脸。
Tools:工具,很多图像处理小工具。
数据集制作
想要训练换脸模型,首先要处理数据集,可以用 Extract ,比如下载一些宋小宝的高清视频,然后使用 Extract 处理。
指定好视频路径和输出图片路径,点击 Extract 即可处理图片。
Extract 除了会生成参见后的人脸数据意外,还会生成 alignments.fsa 文件,也就是人脸对齐文件。
这个提取,是提取视频中所有的人脸,所以提取完之后,需要使用人脸识别接口或者人工清晰一遍数据,将无用的数据删除。
删除图片之后,需要根据剩余的图片重新生成 alignments.fsa 文件。
这时候,就需要用到 Tools 里面的功能。
选择 Tools 标签下的 Sort 选项,Input 填写为刚刚处理完图片的文件夹,Output 填写新的文件夹,其余选项默认,点击 Sort 执行按钮,对所有图片进行重新排序。
图片名处理完了,再选择 Tools 标签下的 Alignments,job 选项 Remove-Faces:
其中 Alignments files 是 Extract 后生成的对齐文件,Faces Folder 是我们刚刚 Sort 后的输出目录。设置完毕后点击Alignments 即可。
这样我们就获得了,重新排序好,干净的宋小宝人脸数据集和人脸对齐文件。
另外一个数据集,处理方法同理。
数据集要保证一下几点:
图片要高清!模糊的图片训练效果欠佳。
图片要多样化!仅仅一个处理一个视频得到的图片是不够的,要找足够多样丰富的图片作为数据集。
数据集 A 和 数据集 B 越多越好,至少各 1000 张左右。
模型训练
训练模型不麻烦,选择数据集 A 和 数据集 B 的地址,以及两个数据集对应的人脸对齐文件。
最后再指定一个模型保存地址即可。
数据集 A 和 数据集 B 要区分一下,谁替换谁。
比如,我是要将《红色高跟鞋》的刘敏涛替换为宋小宝。
那么,数据集 A 就是刘敏涛的图片,数据集 B 就是宋小宝的图片。
点击 Train 就可以开始训练了。
训练过程中,点击 Preview,可以看到中间的训练结果。
点击 Analysis 可以看到 Loss 的收敛情况。
你需要的,它都有,就问你香不香!
训练的时候,可以选择多种算法,也有各种训练参数,了解一下每个算法的特点,每个训练参数的含义,怎么训练的更好,可以去官方论坛,看一下英文教程。
论坛地址(需翻墙):https://forum.faceswap.dev/
官方文档,很全面。
6
模型训练可能需要花费一天的时间。
训练好模型后,就可以直接搞起了。
首先,需要指定需要想要替换的视频,以及对应的人脸对齐文件(可以使用 Extract 生成)。
点击 Convert 开始转换!
换脸大功告成,再看一下效果!
7
切勿滥用技术,切勿商用。
算法的魅力无处不在,多多学习背后的技术。