AI换脸学习总结
开源项目
- DeepFaker / DeepFaceLab
- FaceSwap
- Openfaceswap
- Fakeapp
- Myfakeapp
比较
DeepFaceLab和FaceSwap是两个非常强大的面部交换软件,它们都使用深度学习技术来实现高质量的面部交换。以下是它们之间的一些主要区别:
支持的算法:DeepFaceLab使用TensorFlow框架,支持S3FD、SSD、RetinaFace等多种面部检测算法,并支持DeepFake算法;而FaceSwap使用PyTorch框架,只支持MTCNN面部检测算法和H128模型。
功能和易用性:DeepFaceLab具有更多的高级功能和选项,如视频转换、面部变形等,但也更加复杂和难以使用。FaceSwap则相对简单易用,适合初学者。
社区支持:DeepFaceLab拥有更大的社区,有许多教程、视频和论坛可供参考。FaceSwap的社区较小,但也有一些资源可供使用。
因此,选择哪一个更好取决于你的需要和技术水平。如果你是一名经验丰富的用户,需要更多的高级选项和控制,那么DeepFaceLab可能更适合你。如果你是初学者或需要一个更简单易用的工具,那么FaceSwap可能更适合你。
云开放服务
- 阿里云
- 百度云
- 旷视Face++
- 腾讯云
- 未来应用(http://h5case.com.cn/)
流程
- 图片、视频素材,视频素材需要FFmpeg为图片
- 提取人脸关键帧
- 训练模型,或者直接使用预训练模型
- 观察loss值,满足则结束训练
- 转换最终结果,实现换脸
注意
- 每一次换脸都要执行全过程操作,包括准备源素材,提取关键帧,训练模型,生成合成图。并不是我把模型训练好了,后面可以不用训练,直接进行换脸操作。不过是后面的全过程执行的时间非常短,一下子就能生成合成图了。每一次换脸必须执行全过程操作,包括预处理图片、提取人脸关键帧数据、训练、合成输出等过程。
- 基于集成工具或开源工程跑AI都可以,主要看后期需求。如果后期需要基于现有工程继续优化,做二次开发,那就必须使用源代码工程跑。如果后期没有二次开发的需求,那建议使用集成工具,搭建快速,使用方便。有没有二次开发的需求主要从两方面看,一是团队有没有能力去二次开发,另一个是有没有必要做优化,开源的工程或许就满足业务需求了。不过,在集成工具中,完全图形化的集成工具并不适合做成项目模块,因为业务程序和图形化的软件交互会非常困难。Linux版本的、bat脚本执行的集成工具会方便高效很多。
- 操作系统选择上,建议选择Linux系统,因为还要部署与后端的交互项目。尽量用Window来测试效果,而不用于生产环境。
- 表情包换脸的训练策略,训练的时候到底是多脸对一表情包,还是一脸对多表情包呢?最终实现的效果就是用户任意上传一张脸,然后替换到选定的表情包上。我猜测是多脸对一表情包训练模型,因为脸是任意的,表情包模板是唯一的,所以脸对表情包应该是多对一的关系。
- 那表情包换脸模型,能不能多模板共用一个模型呢?还是必须一个表情包模板对应一个模型呢?我觉得,每一次训练都会生成新的内部参数,不同的内部参数有不同的场景。一般通用参数的模型精细度都比不上专用参数的模型精细度。在多模板的场景中,应该单独训练,得到多组内部参数,对应多个模板。使用的时候,根据选择的模板置入相应的模型,快速训练,得到合成结果。
- 原理简单讲:一共有3个模型,一个做特征编码,将人脸编辑成一串特征,一个做特征解码,将特征还原为人脸,一个做判别,看人脸是原始的还是编码生成的。换脸实际上就是将人脸编码成特征,然后对两个特征做混淆和替换,再用替换后的特征生成新的人脸,然后再用判别模型去判定人脸是生成的还是原始的。
问题
在AI换脸(图片一对一)中,
- DeepFaceLab使用中,求教全部过程参数的经验值。
- DeepFaceLab在Linux上通过Shell脚本调用,完成整个换脸过程。现在封装所有过程脚本为expect脚本,实现全过程的自动化交互,也支持外部参数输入,如源图路径、过程参数、目标图路径等。这种的话,Java代码可以通过RunTime走操作系统底层直接调用expect脚本,实现Java代码与模型的交互。但是这种性能低,想着应该跳过Shell,直接跟Python交互,才是最优的选择。是这样的吗?但是这种,目前不知道怎么把Shell交互的输入参数搬到Python中。在Python交互中,如果要支持过程参数输入,应该需要直接跟源码做交互吧。这样理解对吗?
Python加载TensorFlow模型很慢,这是从诞生起就一直存在的。需要走TensorFlow部署的方案提高性能,以接口的形式提供对外访问,不用每次调用都加载一次模型。 - 训练一换一人脸的策略不是很清楚,买到预训练模型之后,训练策略是这样的吗?先多对多训练,再一对多训练,再多对一训练,最终拿到多对一的dst模板,上传任意的人脸,选择模板,马上合成。训练策略是这样的吗?
名词解释
GPU
显卡就是平时说的 GPU,现在大多数的电脑使用 NVIDIA 公司生产的显卡;常见的型号有 Tesla V100,GTX950M,GTX1050TI,GTX1080 等。
nvidia-smi
nvidia-smi 全称是 NVIDIA System Management Interface ,它是一个基于 NVIDIA Management Library (NVML) 构建的命令行实用工具,旨在帮助管理和监控 NVIDIA GPU 设备。
显卡驱动Driver
特指 NVIDIA 的显卡驱动程序。
建议通过安装CUDA来安装NVIDIA Driver。
CUDA
CUDA 是显卡厂商 NVIDIA 推出的运算平台。CUDA™是一种由 NVIDIA 推出的通用并行计算架构,是一种并行计算平台和编程模型,该架构使 GPU 能够解决复杂的计算问题。CUDA 英文全称是 Compute Unified Device Architecture。
官方说:CUDA 是一个并行计算平台和编程模型,能够使得使用 GPU 进行通用计算变得简单和优雅。
CUDA 和 CUDA Driver 显卡驱动不是一一对应的,比如同一台电脑上可同时安装 CUDA 9.0、CUDA 9.2、CUDA 10.0 等版本。
CUDA Toolkit
CUDA 工具包的主要包含了 CUDA-C 和 CUDA-C++ 编译器、一些科学库和实用程序库、CUDA 和 library API 的代码示例、和一些 CUDA 开发工具。(通常在安装 CUDA Toolkit 的时候会默认安装 CUDA Driver;但是我们经常只安装 CUDA Driver,没有安装 CUDA Toolkit,因为有时不一定用到 CUDA Toolkit;比如我们的笔记本电脑,安装个 CUDA Driver 就可正常看视频、办公和玩游戏了)
在安装 CUDA 时一定要注意其与英伟达显卡驱动以及 Linux 系统和 GCC 版本的对应关系,如果版本之间不匹配,是安装不成功的。
CUDA Toolkit and Corresponding Driver Versions
Native Linux Distribution Support in CUDA
NVCC
NVCC 就是 CUDA 的编译器,可以从 CUDA Toolkit 的 /bin 目录中获取,类似于 gcc 就是 c 语言的编译器。由于程序是要经过编译器编程成可执行的二进制文件,而 cuda 程序有两种代码,一种是运行在 cpu 上的 host 代码,一种是运行在 gpu 上的 device 代码,所以 nvcc 编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行。
cuDNN
cuDNN 的全称为 NVIDIA CUDA® Deep Neural Network library,是 NVIDIA 专门针对深度神经网络中的基础操作而设计基于 GPU 的加速库。cuDNN 为深度神经网络中的标准流程提供了高度优化的实现方式,例如 convolution、pooling、normalization 以及 activation layers 的前向以及后向过程。
CUDA 这个平台一开始并没有安装 cuDNN 库,当开发者们需要用到深度学习 GPU 加速时才安装 cuDNN 库,工作速度相较 CPU 快很多。
Tips
安装 CUDA 就是安装 CUDA Toolkit(CUDA 是运算平台名称、CUDA Toolkit 是工具包),就是从官网下载 CUDA Toolkit 安装.run 文件(如 cuda_9.0.176_384.81_linux.run)进行安装。
安装成功后,在 /usr/local 路径下才会有 cuda-x.0 文件夹,且同时才可以使用 nvcc -V
可以查询到 CUDA 版本
CUDA 有两种 API,分别是运行时 API 和驱动 API:Runtime API 与 Driver API。
nvidia-smi 是 CUDA Driver API(驱动 API)的版本,也是当前驱动支持的最高 CUDA 版本。
而 nvcc 的结果是对应 CUDA Runtime API(运行 API)的版本。
Conda安装cudaoolkit,也会提供一个 cudatoolkit 工具包,其中包含了CUDA的运行API,主要是一些动态链接库文件 libXXXX.so.xxx 等。在运行Python代码时会优先使用 conda 提供的 cudatoolkit 包,而忽视 Nvidia 官方的 CUDA Toolkit。但conda 安装的 cudatoolkit 包只占 Nvidia 官方 CUDA 的一小部分,且没有安装开发工具包和驱动程序。
Conda安装的CUDNN同理。
建议:保持 conda 安装的 cudatoolkit 版本和 cudnn 版本与系统自带版本 (nvcc -V
查看) 一致。
lab安装
注意:Check latest cudnn and cudatoolkit version for your GPU device,注意cudnn等依赖和GPU、驱动Driver、算力平台CUDA的版本匹配关系。否则调用GPU会失败,会使用CPU计算。
操作系统<–>GPU<–>驱动Driver<–>Linux<–>GCC<–>GPU CUDA<–>CUDNN<–>TensorFlow<–>Python
手动安装CUDA和CUDNN,同时参考以下两篇文章:
在安装 CUDA 时一定要注意其与英伟达显卡驱动以及 Linux 系统和 GCC 版本的对应关系,如果版本之间不匹配,是安装不成功的。
不过,购买云服务器一般可以指定安装好GPU驱动和CUDA和CUDNN。但是CUDA没有添加到环境变量,直接添加到环境变量就可以使用。
查看NVIDIA驱动:
nvidia-smi -L (必须安装好nvidia驱动)
查看CUDA可用:
nvcc -V
安装lab所需应用
设置Conda、pip国内镜像
1
2
3
4
5 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
创建lab虚拟环境,安装lab依赖。
1 | 基于原有环境复制新环境 |
拷贝仙丹,执行训练,执行合成。
1 | SCP命令快速上传文件至服务器 |
解决Ubuntu GPU服务器无法使用GPU问题
查看NVIDIA显卡基本信息
nvidia-smi
获取CUDA版本信息。注意:此时显示的 CUDA 版本跟实际安装的 CUDA 版本可以不一样,此处的 CUDA Version 表示显卡驱动版本对应的 CUDA 版本应为 11.2 及以上。不代表电脑里已经安装了 CUDA。
查询CUDA版本
nvcc -V
// 如果显示Error,执行以下命令安装CUDA,指定版本
apt install nvidia-cuda-toolkit
参照GPU支持,获取应该安装的TensorFlow和cuDNN版本信息。
卸载Python包下原来的TensorFlow、cuDNN、cudatoolkit。
conda uninstall cudnn
conda uninstall cudatoolkit
conda uninstall tensorflow
重新安装三者。安装cuDNN时,会顺便安装cudatoolkit。指定版本
conda install cudnn
conda install tensorflow
也可以直接使用搭建好环境的专用GPU容器服务器。智星云
lab使用教程
见图
Linux
脚本中为执行命令,已指定资源的输入输出位置和模型位置。如果需要自定义,需修改脚本为可以输入参数到脚本运行,或者直接运行执行命令。同时,自定义还可以实现并发请求。
1 | 进入 scripts 目录,执行视频转图片的脚本 |
参数说明
参考文章:https://zhuanlan.zhihu.com/p/595669364
提取人脸的Face Type
Face Type是指训练用的人脸类型,也就是从原图中截取的人脸框大小。f、wf、head分别代表:
- f:full-face,全脸,只替换到眉毛上方一点点。
- wf:whole-face,整脸,覆盖额头和胡子。
- head:最大的带整个头的人脸。
不同的Face Type会影响换脸的效果和范围。一般来说,wf比f替换面积更大,更适合有刘海或胡须的人物。head比wf替换面积更大,更适合有帽子或头发遮挡的人物。你可以根据你的需求和目标视频中人物的特征选择合适的Face Type。
提取人脸的Image Size
提取人脸的Image Size参数是指从原图中截取的人脸框的大小,单位是像素。这个参数会影响提取人脸的质量和速度。一般来说,Image Size越大,提取出的人脸越清晰,但是也越耗时。Image Size越小,提取出的人脸越模糊,但是也越快速。你可以根据你的硬件配置和目标视频的分辨率选择合适的Image Size。
训练模型的训练模型的Autobackup every N hour
Autobackup every N hour参数的作用是设置每隔多少个小时自动备份一次模型。这样可以防止训练过程中出现意外或者数据丢失。你可以根据自己的需要修改这个参数,一般建议设置为1或者2小时。
训练模型的Write preview history
Write preview history 是一个参数,用于控制是否在训练过程中保存预览图像的历史记录。如果你想看到模型的训练进度,你可以将这个参数设置为 True。但是,如果你更换了源或目标图像,而模型已经有了预览历史记录,那么它会继续写入历史记录,可能导致混乱。所以,建议你在开始新的训练时将这个参数设置为 False。
训练模型的Target iteration
训练人脸的Target iteration是指你想要训练模型的迭代次数,也就是模型更新的次数。这个参数会影响训练的时间和效果。一般来说,Target iteration越大,训练时间越长,效果越好。Target iteration越小,训练时间越短,效果越差。你可以根据你的硬件配置和目标视频的质量选择合适的Target iteration。
训练模型的Flip SRC faces randomly
训练人脸的Flip SRC faces randomly参数是指是否随机地左右翻转源视频中的人脸,以增加数据的多样性。这个参数有利于提高训练效果,但也有一些缺点。如果源视频中的人脸左右不对称,比如一边有痣,一边没有,那么开启这个参数会导致生成的人脸两边都有模糊的痣。你可以根据你的源视频和目标视频的特点选择是否开启这个参数。
训练模型的Flip DST faces randomly
Flip DST faces randomly参数是DeepFaceLab中的一个选项,它可以控制是否随机翻转目标人脸。这个选项的作用是让预测的人脸看起来更自然,但是要求源人脸集合能覆盖所有的人脸方向。
训练模型的Batch_size
Batch_size参数是DeepFaceLab中的一个常见参数,它表示一次处理的图片张数。这个参数会影响模型的训练速度和效果,一般来说,batch_size越大,训练越快,但是也需要更多的显存。你可以在启动训练程序时设置batch_size的值,或者使用默认值。
训练模型的Eyes and mouth priority
Eyes and mouth priority参数是DeepFaceLab中的一个选项,它可以让模型重点优化眼部和嘴部的区域。这个选项的作用是让换脸的效果更自然,但是要求源人脸集合有足够多的闭眼和张嘴的素材。你可以在启动训练程序时选择是否开启这个选项,或者使用默认值(否)。
训练模型的Uniform yaw distribution of samples
Uniform yaw distribution of samples参数是DeepFaceLab中的一个选项,它可以让模型根据人脸角度来挑选素材,让大角度人脸样本得到较好的训练。这个选项的作用是解决由于源人脸集合中正脸图片居多,俯仰脸侧脸数量较少,导致换脸后侧脸模糊的问题。你可以在启动训练程序时选择是否开启这个选项,或者使用默认值(否)。
训练模型的Blur out mask
Blur out mask参数是DeepFaceLab中的一个选项,它可以让你在合成图片时调整目标遮罩的平滑程度。这个选项的作用是让换脸后的边缘更自然,但是也可能导致源脸模糊或者失真。你可以在启动合成程序时设置blur out mask的值,或者使用默认值(0)。
训练模型的Use AdaBelief optimizer
Use AdaBelief optimizer是一个训练模型的参数,它是一种改进的Adam优化器,可以在一些任务上提高性能和稳定性。AdaBelief的核心思想是利用当前梯度与其滑动平均差值的二阶动量来调整学习率。AdaBelief可以根据任务的需要调节自适应程度,通过设置一个较大或较小的epsilon值。
训练模型的Use learning rate dropout
Use learning rate dropout是一个训练模型的参数,它可以在使用GAN或Adabelief优化器时防止模型崩溃。Use learning rate dropout的作用是在每个迭代中随机地将学习率降低一半,从而减少梯度爆炸的风险。Use learning rate dropout可以设置为y或n,如果设置为y,那么每个迭代有50%的概率使用学习率dropout。
训练模型的Enable random warp of samples
Enable random warp of samples是一个训练模型的参数,它可以在每个迭代中随机地对样本进行扭曲变形,从而增加数据的多样性和鲁棒性。Enable random warp of samples可以设置为y或n,如果设置为y,那么模型会使用随机扭曲的功能。Enable random warp of samples对于一些任务可能有帮助,但也会增加训练时间和内存消耗。
训练模型的Random hue/saturation/light intensity
Random hue/saturation/light intensity是一个训练模型的参数,它可以在每个迭代中随机地对源脸部数据集的色调、饱和度和亮度进行调整,从而增加数据的多样性和鲁棒性。Random hue/saturation/light intensity可以设置为0.0到0.3之间的一个值,值越大,变化越明显。Random hue/saturation/light intensity只对源脸部数据集有效,不影响目标脸部数据集。
训练模型的GAN power
GAN power是一个训练模型的参数,它可以控制使用GAN(生成对抗网络)的强度,从而提高生成图像的细节和质量。GAN是一种机器学习算法,它通过让两个神经网络互相竞争,来生成逼真的图像。GAN power可以设置为0.0到1.0之间的一个值,值越大,使用GAN的强度越大。GAN power需要较高的显存和计算资源,而且可能导致模型崩溃或不稳定。
训练模型的GAN patch size
GAN patch size是一个训练模型的参数,它可以控制使用GAN时的感知域尺寸,也就是GAN网络处理的图像区域的大小。GAN patch size可以设置为3到640之间的一个值,值越大,感知域越大,生成图像的质量越高,但也需要更多的显存。GAN patch size可以影响生成图像的边缘锐度和细节。GAN patch size需要和GAN power和GAN dims一起调整,以避免模型崩溃或不稳定。
训练模型的GAN dimensions
GAN dimensions参数是DeepFaceLab中用于控制生成对抗网络(GAN)的一个选项。GAN可以生成细节更丰富的图像,但也需要更多的显存和训练时间。GAN dimensions参数的值越大,GAN的感知域尺寸就越大,也就是说,它能够影响图像中更大范围的像素。
训练模型的’True face’ power
‘True face’ power是DeepFaceLab中用于控制生成图像与源图像相似度的一个参数。它可以使生成的脸部更像源脸部,而不是目标脸部。’True face’ power的值越大,生成的脸部就越接近源脸部。
训练模型的Face style power
Face style power是DeepFaceLab中用于控制生成图像与目标图像相似度的一个参数。它可以使生成的脸部更像目标脸部,而不是源脸部。Face style power的值越大,生成的脸部就越接近目标脸部。
训练模型的Background style power
Background style power是DeepFaceLab中用于控制生成图像与目标图像背景相似度的一个参数。它可以使生成的脸部边缘和背景更适应源脸部。Background style power的值越大,生成的背景就越接近目标背景。
训练模型的Color transfer for src faceset
Color transfer for src faceset是DeepFaceLab中用于控制源脸部图像颜色转换的一个参数。它可以使源脸部图像的颜色更适应目标脸部图像的颜色。Color transfer for src faceset有五种模式:rct / lct / mkl / idt / sot,它们分别代表不同的颜色转换算法。
不同的颜色转换算法有以下区别:
- rct (Reinhard color transfer) 是一种基于全局统计量的颜色转换方法,它可以保持源图像和目标图像的亮度和对比度。
- lct (Linear color transfer) 是一种基于线性变换的颜色转换方法,它可以保持源图像和目标图像的色调和饱和度。
- mkl (Monge-Kantorovitch linear) 是一种基于最优传输理论的颜色转换方法,它可以最小化源图像和目标图像之间的颜色差异。
- idt (Iterative distribution transfer) 是一种基于迭代优化的颜色转换方法,它可以逐步调整源图像和目标图像之间的颜色分布。
- sot (Sliced optimal transport) 是一种基于随机投影的颜色转换方法,它可以快速近似源图像和目标图像之间的最优传输。
训练模型的Enable gradient clipping
Enable gradient clipping是一个用于防止梯度爆炸的技术,通常用于很深的网络,尤其是循环神经网络。DeepFacelab是一个用于人脸交换和编辑的软件,它使用了生成对抗网络(GAN)来生成逼真的人脸图像。在训练GAN时,如果梯度过大或过小,可能会导致模型崩溃或无法收敛。Enable gradient clipping参数可以限制梯度的范围,使其不超过一定的阈值,从而提高模型的稳定性和效果。
训练模型的Enable pretraining mode
Enable pretraining mode是一个用于提高模型性能的技术,它可以让模型先使用一些预训练的数据进行学习,然后再使用你自己的数据进行微调。预训练的数据通常是一些包含多种人脸特征的图像,例如名人的人脸。这样可以让模型学习到更多的人脸知识,从而生成更逼真和自然的人脸图像。
转化人脸的Choose mode
这些参数都是用于调整人脸合成的效果的,它们分别有不同的含义和作用:
- original:这是最基本的模式,它只是将预测的人脸直接覆盖到目标图像上,不做任何颜色或边缘的处理。
- overlay:这是一种简单的颜色转换模式,它会根据目标图像的亮度来调整预测的人脸亮度,使其更适应目标环境。
- hist-match:这是一种更复杂的颜色转换模式,它会根据目标图像的颜色分布来调整预测的人脸颜色,使其更接近目标人物。
- hist-match-bw:这是一种黑白化的颜色转换模式,它会将预测的人脸转换为灰度图像,并根据目标图像的亮度来调整灰度值。这个模式适合一些老电影或照片。
- seamless:这是一种边缘平滑模式,它会使用泊松编辑算法来消除预测人脸和目标图像之间的边缘差异,使其更自然和无缝。
- seamless-hist-match:这是一种结合了seamless和hist-match两种模式的综合模式,它既可以平滑边缘,又可以匹配颜色。这个模式通常可以生成最好的效果。
- raw-predict:这个模式会输出预测人脸的原始图像,不包含任何遮罩或透明度信息。这个模式适合一些想要自己后期处理的高级用户。
- raw-rgb:这个模式会输出预测人脸的RGB图像,包含一个白色的遮罩层。这个模式可以让你看到预测人脸的边缘和形状。
转化人脸的Choose mask mode
Choose mask mode是一个用于选择人脸遮罩的参数,它可以让你选择不同的遮罩类型来控制预测人脸的覆盖范围:
dst:这个模式会使用目标图像的遮罩,也就是目标人物的脸部区域。这个模式适合一些源图像和目标图像的人脸形状相似的情况。
src:这个模式会使用源图像的遮罩,也就是源人物的脸部区域。这个模式适合一些源图像和目标图像的人脸形状不相似的情况。
learned-prd:这个模式会使用预测人脸的遮罩,也就是模型学习到的人脸区域。这个模式适合一些想要更精确和自然的效果的情况。
learned-dst:这个模式会使用目标图像和预测人脸共同生成的遮罩,也就是结合了两者信息的人脸区域。这个模式适合一些想要更平滑和无缝的效果的情况。
full: 使用完整的源脸作为遮罩。
XSeg-prd: 使用训练好的XSeg模型来生成预测遮罩。
XSeg-dst: 使用训练好的XSeg模型来生成目标遮罩。
以上参数可以组合使用,例如learned-prd * learned-dst表示两个遮罩的交集,learned-prd + learned-dst表示两个遮罩的并集,XSeg-prd * XSeg-dst * learned-prd * learned-dst表示四个遮罩的交集。
不同的参数组合会影响合成效果,你可以尝试不同的模式看哪个适合你的场景。一般来说,dst或者XSeg-dst效果比较好。
转化人脸的Choose erode mask modifier
Choose erode mask modifier参数是用来调整目标遮罩的大小的。
如果你设置一个正数,比如50,那么目标遮罩会缩小,这样可以减少源脸在边缘处的溢出。
如果你设置一个负数,比如-50,那么目标遮罩会扩大,这样可以增加源脸在边缘处的覆盖。
不同的场景需要不同的参数值,你可以根据合成效果进行调整。一般来说,如果源脸和目标脸很相似,那么你可以设置较小的值。
转化人脸的Choose blur mask modifier
Choose blur mask modifier参数是用来调整目标遮罩的平滑度的。
如果你设置一个较大的正数,比如100,那么目标遮罩会变得更模糊,这样可以减少源脸和目标脸之间的边缘差异。
如果你设置一个较小的正数或者负数,比如0或者-100,那么目标遮罩会变得更清晰,这样可以保持源脸和目标脸之间的细节对齐。
不同的场景需要不同的参数值,你可以根据合成效果进行调整。一般来说,如果源脸和目标脸很相似,那么你可以设置较小的值。
注意:有时候调整这个参数会影响合成图像的亮度。 这可能是一个bug。
转化人脸的Choose motion blur power
Choose motion blur power参数是用来调整合成图像的运动模糊效果的。
如果你设置一个正数,比如1或者5,那么合成图像会增加运动模糊,这样可以增加动态感和真实感。
如果你设置一个负数,比如-1或者-5,那么合成图像会减少运动模糊,这样可以保持清晰度和细节。
不同的场景需要不同的参数值,你可以根据合成效果进行调整。一般来说,如果源视频和目标视频有较大的运动差异,那么你可以设置较大的值。
注意:有时候在交互模式下切换帮助菜单会导致程序崩溃。这可能是一个bug。
转化人脸的Choose output face scale modifier
Choose output face scale modifier参数是用来调整合成图像的源脸大小的。
如果你设置一个正数,比如10或者20,那么合成图像的源脸会放大,这样可以适应目标脸的尺寸。
如果你设置一个负数,比如-10或者-20,那么合成图像的源脸会缩小,这样可以避免目标脸的变形。
不同的场景需要不同的参数值,你可以根据合成效果进行调整。一般来说,如果源脸和目标脸有较大的尺寸差异,那么你可以设置较大的值。
转化人脸的Color transfer to predicted face
Color transfer to predicted face 是一个参数,用于控制是否对预测的人脸进行颜色转换,以适应目标图像的颜色分布。你可以选择以下几种模式之一:
- rct: Reinhard color transfer,基于图像的亮度、对比度和饱和度的统计信息进行颜色转换。
- lct: Linear color transfer,基于图像的均值和协方差矩阵进行颜色转换。
- mkl: Monge-Kantorovitch linear color transfer,基于图像的直方图匹配进行颜色转换。
- idt: Image dependent triangular color transfer,基于三角形映射进行颜色转换。
- sot: Sliced optimal transport color transfer,基于最优传输理论进行颜色转换。
- mix-m: Mix match color transfer,基于多种模式的混合进行颜色转换。
- mkl-m,idt-m,sot-m 是在 mkl,idt,sot 的基础上加入了一个 mask 参数,用于控制颜色转换的范围。如果你想只对人脸的某些部分进行颜色转换,你可以使用这些模式。
不同的模式可能会产生不同的效果,你可以根据自己的需求和喜好选择合适的模式。
转化人脸的转化人脸的Choose sharpen mode
Choose sharpen mode参数是用来调整人脸的锐化程度的。有三种模式可以选择:
- box: 使用方框滤波器进行锐化
- gaussian: 使用高斯滤波器进行锐化
- none: 不进行锐化
不同的模式会影响人脸合成的质量和效果,你可以根据自己的需求和喜好进行选择。
转化人脸的Choose blur/sharpen amount
Choose blur/sharpen amount参数是用来调整人脸的模糊或锐化的强度的。这个参数的取值范围是1-3,数值越大,效果越明显。你可以根据人脸的相似度和细节程度进行调整。
转化人脸的Choose super resolution power
Choose super resolution power参数是用来提高人脸的分辨率和细节的。这个参数的取值范围是0-100,数值越大,效果越好,但也会增加运算时间和内存消耗。你可以根据人脸的清晰度和质量进行调整。
转化人脸的Choose image degrade by denoise power
Choose image degrade by denoise power参数是用来降低人脸的噪声和模糊的。这个参数的取值范围是0-100,数值越大,效果越强,但也会损失一些细节。你可以根据人脸的噪声和模糊程度进行调整。
转化人脸的Choose image degrade by bicubic rescale power
Choose image degrade by bicubic rescale power参数是用来使用双三次插值算法模糊人脸的。这个参数的取值范围是0-100,数值越大,效果越强,但也会损失一些细节。你可以根据人脸的清晰度和质量进行调整。
转化人脸的Degrade color power of final image
Degrade color power of final image参数是用来降低源脸的色彩值的。这个参数的取值范1围是0-100,数值越大,效果越强,但也会影响合成图像的自然度。你可以根据源脸和目标脸的色彩差异进行调整。
解决漏额头问题
如果你想解决额头未替换的问题,你可能需要调整一些参数或选项,比如:
- 选择合适的模型,比如SAEHD12,它可以处理更大的人脸区域。
- 调整mask模式12,比如DF-M、DF-MD、DF-UD等,它们可以影响额头和下巴的替换范围。
- 调整dst mask blur size12,它可以控制目标视频中人脸边缘的模糊程度。
- 调整dst mask erode size12,它可以控制目标视频中人脸边缘的收缩程度。
merge_SAEHD调参解决
- Choose mode: (1) overlay
- Choose mask mode: (3) learned-dst
- Choose blur mask modifier ( 0..400 ) : 300
- Choose sharpen mode: (2) gaussian
FaceSwap使用
1 | [1] |