通用环境配置
nvidia-smi
nvidia-smi
是N卡驱动附带的命令行指令,可以查看当前的GPU信息:
其中 Driver Version
是当前NVIDIA显卡驱动版本,CUDA Version
是该驱动可用的CUDA版本上限
CUDA
CUDA是由NVIDIA推出的通用并行计算架构,使GPU能够解决图像以外的计算问题。
已安装的CUDA会附带nvcc -V
命令行指令,用于查看版本
pytorch
pytorch是基于torch的开源机器学习库,支持跨平台:Windows(CUDA,CPU)、MacOS(CPU)、Linux(CUDA,ROCm,CPU)
pytorch的包名就叫torch
pytorch和CUDA版本对应关系可见官网链接:https://pytorch.org/get-started/previous-versions/。通常高版本的pytorch可以兼容低版本的CUDA。
- 下载安装
在官网首页生成下载链接,或者在pytorch下载列表中找到符合的版本下载后再手动通过pip载入。其中cu为cuda版本,torch为torch的版本,cp为python版本。
注意直接通过pip install torch
安装的默认是CPU版。可通过import torch; print(torch.__version__)
确认是CPU还是CUDA版。
可通过import torch; print(torch.cuda.is_available())
确认当前已安装的torch版本是否能与本机CUDA正常协作。
AnimeGAN人脸动漫化
一个私人的人脸动漫化库。
二代开源,但仅能处理正面大头贴,当出现侧脸或半身/全身人像时效果极差。
三代效果更好且有更多滤镜(迪士尼等),但似乎已停更,且多数功能未开源。
在线预览
- https://huggingface.co/spaces/akhaliq/AnimeGANv2
- https://huggingface.co/spaces/TachibanaYoshino/AnimeGANv3
git仓库
- 3代(仅exe,且git仓库内只包含2种模型,还不支持二次开发)
- 2代
-
2代 pytorch 版
其中weights文件夹下,celeba_distill.pt和paprika.pt是风景动漫迁移的模型,而face_paint_512_v1.pt和face_paint_512_v2.pt是人脸动漫迁移的模型。注意人脸卡通化时,输入图片应保持512*512,且不应有太多人脸之外的内容。
显存占用取决于图片大小
Roop
照片/视频换脸
操作说明可见本人仓库的fork。
DeepFaceLab
照片/视频换脸
可参考官方文档和入门视频。
相比 Roop,DeepFaceLab更重(需要接收原始/目标人脸的多角度图片/视频以训练成模型,训练需要耗费大量时间)但效果更好。
- 此外还有个实时换脸的扩展库DeepFaceLive用于直播推流
- 注意,python 库 deepface 和 DeepFaceLab无关,是个轻量级人脸识别和人脸属性分析(年龄、性别、情感和种族)框架
安装
通过README中的下载链接下载,包含几个exe安装包,根据本机GPU选择合适的安装包。
比起直接git pull
源代码,这种方式下载的内容开箱即用,不用配置环境、安装CUDA等了。安装完成后包含以下内容:
-
_internal
目录集成了环境、源码(DeepFaceLab目录)等 -
workspace
目录用于存放模型、数据集、导入导出文件 -
.bat
文件,集成了各种功能,直接使用即可。数字从1~8代表换脸的8个步骤
事先准备
- 脸部来源图片:
workspace/data_src/
或视频:workspace/data_src.mp4
总计3000~8000张包含人脸的图片
应尽量覆盖所有待替换脸部中出现的人脸角度、光照条件
应包含尽量丰富的面部表情
内容应尽量保持一致,如清晰度、胡子造型、妆容、发型(且优先选择短发) - 待替换脸部图片:
workspace/data_dst/
或视频:workspace/data_dst.mp4
操作流程
若来源和目标都是图片,则只需要 1、4、5、6、7
若来源和目标都是视频,则需要全部的 1~8
clear workspace.bat (清理重置workspace目录)
extract images from video data_src.bat(从
data_src.mp4
视频提取图片)
默认全帧率,选择较低帧率会更快(建议5~10)
jpg 速度更快,png 保留的图片信息更多-
extract images from video data_dst FULL FPS.bat (从
data_dst.mp4
视频提取图片)- 3 cut video (drop video on me).bat 用于视频截取+转码
-
data_src faceset extract.bat(从src图片中提取脸部图片)
结束后log显示图片数和人脸数
face type:建议使用whole face,包含额头- 4 data_src faceset extract MANUAL.bat 手动提取
- 4.1 data_src view aligned result.bat 打开一个看图软件浏览
workspace\data_src\aligned
内的图片,方便手动删除低质量或错误人脸 - 4.2 data_src sort.bat 按指定方式排序,配合4.1使用,删除低质量或错误人脸。默认选项5:按人脸相似度排序。
-
data_dst faceset extract.bat(从dst图片中提取脸部图片)
- 5 data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG
用于在自动提取后,手动重新标记。使用前应先删除aligned_debug目录中标线有问题的图片 - 5.Xseg 进阶用法:人为告诉模型,哪些部分是人脸,哪些不是
- 5 data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG
-
train Quick96.bat (使用H64开始训练模型,不会自动结束!)
当预览窗口中第二列和第一列一样清晰,且最后一列也已清晰,则手动退出即可。
此时loss值(即命令行窗口中最后一个数字)通常应低于0.02。
选择不同的训练方式,参数和消耗时间会有所不同。
SAEHD:高清,至少需要6G显存
AMP:新模型,类似SAEHD,但还不完善
Quick96:低端但快速,固定为96×96px,建议仅用于快速测试- Batch_size 取值为2的n次方,数字越大效果越好但性能要求也越高
- Face Type:
h(half):半脸,嘴到眉毛
mf(mid half face):中半脸,比前者多30%
f:脸,但不包括额头。适用于SRC或DST中有刘海覆盖额头的情况
wf(whole face):包括额头和耳朵
head:整个头部,包括头发。适用于SRC和DST都是短发的情况 - DF / LIAE:选择架构及一些额外参数。其中LIAE更重(更高的VRAM使用),并且在复杂角度上表现更好。通常用默认的
LIAE-UD
即可。 - Place models and optimizer on GPU:将负载都放在GPU,默认为y。当显存不够又不想降低质量时,可以禁用该属性,通过降低速度来实现效果。
-
merge Quick96.bat(使用训练好的模型对图片进行换脸)
注意需选择和步骤6中一样的模型- Choose blur mask modifier:遮罩平滑度,可用50~100。过高会导致结果趋近DST。
- Apply color transfer to predicted face:通常选择RTC或LCT,用于处理SRC和DST肤色差距较大的场景
- merge to mp4.bat(将已经换好脸的图片转换成视频)
MVE(Machine Video Editor)
一个搭配deepfake使用的视频/图像编辑+项目管理工具,文档见此处
可用于多视频来源等场景