简单介绍SimSwap(类似DeepFaceLab)单张图视频换脸的项目

DeepFaceLab相关文章

一:《简单介绍DeepFaceLab(DeepFake)的使用以及容易被忽略的事项》
二:《继续聊聊DeepFaceLab(DeepFake)不断演进的2.0版本》
三:《如何翻译DeepFaceLab(DeepFake)的交互式合成器》
四:《想要提高DeepFaceLab(DeepFake)质量的注意事项和技巧(一)》
五:《想要提高DeepFaceLab(DeepFake)质量的注意事项和技巧(二)》
六:《友情提示DeepFaceLab(DeepFake)目前与RTX3080和3090的兼容问题》
七:《高效使用DeepFaceLab(DeepFake)提高速度和质量的一些方法》
八:《支持DX12的DeepFaceLab(DeepFake)新版本除了CUDA也可以用A卡啦》

文章目录

  • (一)关于SimSwap
  • (二)安装SimSwap
    • 2.1 克隆代码
    • 2.2 安装Anaconda
    • 2.3 准备Simswap环境
    • 2.4 RTX3000系列显卡的CUDA版本问题
  • (三)使用SimSwap
    • 3.1 简单替换已经脸部对齐的图片
    • 3.2 视频换脸
  • (四)小结

(一)关于SimSwap

从DeepFaceLab官网看到一个相关的项目:
【SimSwap】:Swapping face using ONE single photo 一张图免训练换脸。
简单介绍SimSwap(类似DeepFaceLab)单张图视频换脸的项目_第1张图片

感觉很神奇,百度了解到是上海交通大学和腾讯联合研发的一个框架。
知乎上有介绍,论文链接:Arxiv,ACM DOI。
SimSwap的意思就是Simple Swap,简易的换脸。

似乎没有更多的介绍,于是自己试了一下没有那么完美但似乎还挺有意思,
我放了一个自己做的视频到优酷上面,对比了一下原版DFL和SimSwap的区别:

SimSwap对比视频

(二)安装SimSwap

我不确定这个应该叫安装么……

2.1 克隆代码

首先你得安装了git,准备好目录然后:

git clone [email protected]:neuralchen/SimSwap.git

当然也可以通过其他可视化工具来克隆项目代码,比如Sourcetree,TortoiseGit。
记得pull看是否有新代码提交。

项目依赖:

  • python3.6+
  • pytorch1.5+
  • torchvision
  • opencv
  • pillow
  • numpy
  • imageio
  • moviepy
  • insightface

官方推荐用Anaconda来管理。

2.2 安装Anaconda

Anaconda官网 | The World’s Most Popular Data Science Platform。
是个管理基于Python的开发环境管理平台。主要用于管理和切换多套不同项目环境,主要是解决不同的项目依赖不同版本库的问题。

我下载了Windows的版本:Anaconda3-2021.05-Windows-x86_64.exe。
安装过程就略过吧,懒得写了……

2.3 准备Simswap环境

⭐️打开Anaconda控制台,按照官方写的步骤:

conda create -n simswap python=3.6	#创建名为simwap的环境
conda activate simswap				#激活这个环境
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2 -c pytorch
(option): pip install --ignore-installed imageio
pip install insightface==0.2.1 onnxruntime moviepy

⚠️:使用conda或pip安装时可能会很慢或者失败,请多试几次,或者在更好的网络条件时进行,必要时可以手动用迅雷下载一些实在难以下载的文件……emmm……

⭐️然后需要下载和放置一些预训练的模型:

1)项目使用了insightface 来做脸部识别和对其,进行图像预处理。
需要下载antelope.zip文件解压到./insightface_func/models 目录中,微软网盘。
不要使用其他版本的 insightface 。
更新:应大家要求我也放这里了。

2)项目使用face-parsing.PyTorch进行脸部解析和图像后期处理。
需要下载79999_iter.pth文件到 ./parsing_model/checkpoint 目录中,谷歌网盘。
谷歌咱难以下载,所以我传了一份文件到这里了。

3)还需要两个预训练模型:
拷贝 arcface_checkpoint.tar 到 ./arcface_model 中。
解压 checkpoints.zip 到项目的根目录中 ./
谷歌网盘 或者 百度网盘,密码: jd2v

PS:前面提到的./目录也就是根目录,就是你克隆下来的项目目录,最终目录结构大概如下:
简单介绍SimSwap(类似DeepFaceLab)单张图视频换脸的项目_第2张图片

2.4 RTX3000系列显卡的CUDA版本问题

如果你有个新30系列显卡,那么按前面的步骤完成后,执行命令时会报CUDA版本错误。
那么重新执行一下前面的句,关于cuda和pytorch的安装语句,小改如下:

conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge

顺便提一句,可以通过Nvidia控制面板->系统信息->组件查看你的显卡的CUDA版本。
简单介绍SimSwap(类似DeepFaceLab)单张图视频换脸的项目_第3张图片

(三)使用SimSwap

官方给了一些例子如下。
PS:执行命令前,别忘了用Anaconda控制台,并且激活simswap配置,不要在base下就执行命令。

conda activate simswap

确认是在simswap环境配置下,而不是在base下,进入克隆下来的目录,执行代码。

3.1 简单替换已经脸部对齐的图片

(simswap) C:\SimSwap>python test_one_image.py --isTrain false --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path crop_224/6.jpg --pic_b_path crop_224/ds.jpg --output_path output/

上面的命令,将莱昂纳多的脸,换到了发哥的头上。
是官方的例子,当然自己执行也一样效果。

简单介绍SimSwap(类似DeepFaceLab)单张图视频换脸的项目_第4张图片

3.2 视频换脸

只换一张脸 (the one with highest confidence by face detection).

(simswap) C:\SimSwap>python test_video_swapsingle.py --isTrain false --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --video_path ./demo_file/multi_people_1080p.mp4 --output_path ./output/multi_test_swapsingle.mp4 --temp_path ./temp_results

换视频中所有的脸(非常诡异的效果)

(simswap) C:\SimSwap>python test_video_swapmulti.py --isTrain false --use_mask --name people --Arc_path arcface_model/arcface_checkpoint.tar --pic_a_path ./demo_file/Iron_man.jpg --video_path ./demo_file/multi_people_1080p.mp4 --output_path ./output/multi_test_swapmulti.mp4 --temp_path ./temp_results

简单介绍SimSwap(类似DeepFaceLab)单张图视频换脸的项目_第5张图片
等进度条走完,基本上就完成了。

还可以多种方式,指定脸换脸,去掉logo等,请看原文吧。
大概效果和官方的介绍是一样的。

(四)小结

的确很神奇,大幅度转动头部都可以……

最困难的部分居然是下载那些预训练模型文件(什么是谷歌网盘?微软也不行啊)。
用conda安装各种组件也慢得离谱,经常超时出错,呵呵呵,多试几次就习惯了。

没有Deepfacelab效果那么好,不过速度很快…… 没有训练过程嘛。

和DeepFaceLab相比较,效果不佳大概有两方面原因:

  • 仅仅替换了五官而不是整个脸部。
  • 用到的脸部训练数据大抵也许似乎都是欧美人的数据,不适合咱亚洲人的脸型。

你可能感兴趣的:(人工智能/机器学习,Python)