
配置人脸替换DeepFakes项目
关于人脸替换,业内鼎鼎有名的deepfakes代表了这个人工智能细分领域的最高水平,旗下的faceswap库正好适合这种视频二次创作的场景。
git clone https://github.com/deepfakes/faceswap.git
随后进入项目的目录:
cd faceswap
确保本地已经配置好python3.10的开发环境。
python3.10 setup.py
这里的setup.py脚本会自动判断系统本地软件环境进行依赖的安装,如果想要手动安装依赖,也可以通过pip命令:
For Nvidia GPU users: pip install -r ./requirements/requirements_nvidia.txt
For AMD GPU users: pip install -r ./requirements/requirements_amd.txt
For CPU users: pip install -r ./requirements/requirements_cpu.txt
这里分为三种用户,N卡用户使用requirements_nvidia.txt,也是最主流的解决方案,其次是A卡用户:requirements_amd.txt,最后是cpu用户requirements_cpu.txt。
所以,玩深度学习,最低的要求就是手里得有一块N卡,不需要太高端,倾家荡产买一块3090或者是4090其实没有任何必要,一块相对亲民的4050或者是4060足矣,当然,有钱任性则另当别论。
构建训练集
让我们再来回顾一下需求场景,现在需要将懂王的脸替换到《卡萨布兰卡》中保罗·亨雷德的脸,所以我们现在需要收集两张脸,即原视频保罗·亨雷德的脸,以及替换者懂王的脸。
由于《卡萨布兰卡》中还有很多别的场景,而我们需要的只是保罗·亨雷德高唱《马赛曲》的面部特写片段,所以需要对素材进行剪辑,这里推荐使用ffmpeg,首先运行安装命令:
winget install ffmpeg
接着将可执行目录配置到系统的环境变量中:
C:\Users\[用户名]\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-6.0-full_build\bin
随后通过命令将片段从原始素材中扣取出来:
ffmpeg -ss 01:34:00 -i 卡萨布兰卡.mp4 -to 01:55:00 -c copy 保罗面部素材.mp4
这里视频素材就保存好了。
python3.10 faceswap.py extract -i ~/faceswap/src/保罗面部素材.mp4 -o ~/faceswap/faces/paul
效果就是将视频逐帧进行保存,只保留面部信息:
至此,训练集就构建好了。
模型训练
运行命令,开始训练:
python3.10 faceswap.py train -A ~/faceswap/faces/paul -B ~/faceswap/faces/trump -m ~/faceswap/mymodel/ -p
这里A数据集为保罗的,B则是懂王,-m参数是模型的保存目录,-p参数则可以对模型效果进行预览。
训练过程中每隔一段时间会保存一次模型,程序中断后再次执行会在上次的模型基础上训练,训练需要手动停止,训练完后模型保存在上面指定的路径下。
本地推理
模型训练完毕后,我们就可以使用模型来进行换脸的推理操作,这里有个问题需要澄清一下,即我们训练的不是通用模型,而是针对训练集的模型,也就是说,这个模型只是为了将原素材中保罗的脸替换为懂王的脸而训练的,并不是在任意素材中都能够这样替换。
所以,我们就可以直接使用训练集数据进行验证,运行命令进行推理:
python3.10 faceswap.py convert -i ~/faceswap/faces/paul -o ~/faceswap/faces/output -m ./mymodel/
这里使用模型针对原训练集数据进行替换。
相同的流程,将片中好莱坞巨星英格丽·褒曼的脸:
最后,只须将《马赛曲》的歌声替换为懂王即可,请移步:AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10),囿于篇幅,这里不再赘述。
结语
看到这里,相信很多朋友都不约而同地有了一些非常大胆却又不太成熟的想法,但请记住,无论何时何地,互联网都并非法外之地,当运行推理脚本的那一刻,需要思考一下自己是不是真的很刑。在Youtube(B站)搜索刘悦的技术博客,即可欣赏复刻版本的《卡萨布兰卡》,欢迎诸君品鉴。
编程笔记 » 音容笑貌,两臻佳妙,人工智能AI换脸(deepfake)技术复刻《卡萨布兰卡》名场面(Python3.10)