说明
Linux系统下FSGAN的部署
提供video2video的fake视频生成
一、github链接
https://github.com/YuvalNirkin/fsgan
二、环境配置
1.要求
- 具有至少 11GB DRAM 的高端 NVIDIA GPU。
- Linux 或 Windows。我们建议使用 Linux 以获得更好的性能。
- CUDA 工具包 10.1+、CUDNN 7.5+ 和最新的 NVIDIA 驱动程序。
2.安装
git clone https://github.com/YuvalNirkin/fsgan
cd fsgan
conda env create -f fsgan_env.yml
conda activate fsgan
pip install . # Alternatively add the root directory of the repository to PYTHONPATH
fsgan_env.yml 文件里有一些库的版本要求
3.注意事项
github提供了链接填写form去下载预训练的模型
要访问 FSGAN 的预训练模型和辅助数据,请填写此表格。 然后,我们将向您发送指向 FSGAN 共享目录和下载脚本的链接。(收到邮件的时间大概在两天之内并且他的模型是在持续更新的)
运行github中的download_fsgan_models.py这个脚本可用于直接服务器上下载模型,一共十五个预训练模型(这个脚本也是在提交form的表格后邮件里的)。
python download_fsgan_models.py # From the repository root directory
此处提供2023.11.23获得的预训练模型网盘链接
链接:https://pan.baidu.com/s/1NKj3T2z-XnLIT5SATTZesA
提取码:asdf
--来自百度网盘超级会员V5的分享
3.使用
首先确保 fsgan/weights 目录中有所有最新版本的模型
文件夹的docs目录里是提供的示例
conda activate fsgan
cd /home/xxx/fsgan/fsgan(你自己的目录)
为了获得最佳质量,请遵循以下示例:
# From FSGAN's root directory
python fsgan/inference/swap.py docs/examples/shinzo_abe.mp4 -t docs/examples/conan_obrien.mp4 -o . --finetune --finetune_save --seg_remove_mouth
FineTune:启用 Reenactment Generator
的初始微调阶段 finetune_save:将微调权重保存到缓存目录
seg_remove_mouth:从分割掩码中取出嘴巴的内部
此脚本进行了换脸并启用驱动去进行换嘴部表情
原视频、目标视频、输出路径格式为如下
python swap.py SOURCE -t TARGET -o OUTPUT [FLAGS]
作者还提供了一个更细致的使用,但是根据模型的更新日期和脚本的更新日期来看,更新了Face Swapping Inference并未更新 Paper Models Inference,使用的的时候需要修改引用库的位置,不过即使修改了库的引用位置仍然存在问题如下类似报错:
size mismatch for enhancer1.flat_block.model.1.model.5.weight: copying a param with shape torch.Size([256, 256, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 128, 3, 3]).
查了一些资料发现这个问题是由于 PyTorch 模型的参数大小不匹配而引起的。具体来说,在模型中,enhancer1.flat_block.model.1.model.5.weight 这个参数的形状是 torch.Size([256, 256, 3, 3]),但在加载模型的时候,检查点中相应参数的形状为 torch.Size([128, 128, 3, 3])。这可能是因为模型的结构发生了变化,导致加载的检查点与当前模型不兼容。可能的原因包括模型架构的修改、输入维度的变化等。
去weights目录下也可以看到这些预训练模型都是256的。
如果有知道怎么解决欢迎评论私信,十分感谢!!!
在使用时有可能会遇到module不存在的报错
其中要注意
face_alignment库有版本要求(这很重要其他版本一些字段名进行了修改)
pip install face_alignment==1.1.1
如果遇到报错为 AttributeError: partially initialized module ‘cv2’ has no attribute ‘gapi_wip_gst_GStreamerPipeline’ (most likely due to a circular import)
pip uninstall opencv-python
pip uninstall opencv-contrib-python
pip install opencv-contrib-python==4.5.4.60
pip install opencv-python
使用的服务器配置为2080,生成一个示例的fake视频时间大约是4min左右。