deepfacelive其实操作用法很简单,难的是模型的制作。本帖主要讲deepfacelive(下文简称dflive)软件本身的操作,以及模型怎么从dfl转格式过来,至于模型如何训练才能效果好,请移步教程区,看deepfacelab的详细教程
软件功能
deepfacelive是deepfacelab的配套软件,专注于实时换脸效果,核心算法和dfl是一模一样的,只是针对实时使用场景进行工程优化
可实现对摄像头输入或本地视频的输入,进行实时换脸计算,输出换脸后画面
软件下载
目前软件最新版本是20230709版本
百度盘下载见这个帖子
【最新软件】deepfacelab20211120 deepfacelive20230709-【DFL】软件下载-deepfacelab中文网 - Powered by Discuz!
原始github官方下载地址,自行在页面中查看下载方法,不赘述
GitHub - iperov/DeepFaceLive: Real-time face swap for PC streaming or video calls
电脑要求
1. 显卡N卡、A卡、集显均支持软件运行。 下载链接中有2个版本,N卡下载带NVIDIA字样的版本,A卡和无显卡用户下载带DirectX12的版本
2. 如果要实现摄像头实时换脸运算,对显卡性能有较高要求。具体性能要求和你摄像头分辨率、模型分辨率有关。我用3080ti显卡,跑1080p摄像头实时换脸,模型分辨率256,可以做到每秒30帧的输出。 其他配置没测试过,大家自己配置和运行效果可以留言供别人参考
3. 如果电脑性能不足,deepfacelive也能运行,只是计算速度慢,达不到实时。但也可便捷用于换脸视频制作
软件使用
1. 调整中文界面
软件是开源免费的,且自带中文版本,中文部分是我汉化的。所以不要听信有些黑商打着XX自研的旗号,卖套壳付费汉化版本
默认打开是英文界面,按下图所示,在菜单栏language中选择汉语,即可切换到熟悉的中文界面
2. 基本流程
软件基本流程就3个,选择输入,设置AI换脸运行参数,选择输出。完整流程和界面分区内容如下图所示
其中有2个模块比较特别,就是有个带Insight字样的人脸交换器,和人脸照片驱动器。这两个可以一开始忽略,后面遇到再说。这两个模块实际是其他的换脸算法,实现一张图换脸和让一张图跟随你表情变化的功能。
我们主要先学习deepfacelive正统流程,即如何用deepfacelab训练好导出的DFM格式模型,来实现实时换脸效果
3. 输入设置
dflive支持本地文件输入或本地摄像头输入,通过切换左上角的开关来进行切换
本地文件支持图片文件夹或视频文件作为输入,前者方便你使用dfl切好的序列帧
摄像机有3个选项,
驱动根据你实际情况选,没什么技巧,就看选了哪个更流畅就用哪个
设备序号就是选摄像头
分辨率按需选择,如果画面方向倒了,在选择摄像头后,有旋转按钮可以调节
3. 人脸检测器设置
各个参数意思如下
检测器:选择人脸检测算法,yoloV5和S3FD两个最常用。前者速度快但不准,后者速度略慢但精准
设备:选择什么硬件设备来运算。一般就选你的显卡。如果你有多个显卡,可以分配不同显卡做不同的模块计算工作。其他节点模块的设备选择方式一样,不再重复描述
检测器窗口大小:这个值越大,能识别到人脸尺寸约宽容,但速度越慢。一般200-300足够。如果画面有人脸却检测不到,增大这个值
检测置信阈值:一般默认值就行。高了可以过滤一些非人脸物件
最大人脸数:选择需要同时换画面上几个人脸。一般为1
排序:选择多个人脸中目标人脸的方法,比如选最大、最左、最中等等
时间维度上平滑:减少每帧之间人脸检测的尺寸波动。一般1就行,开太大会导致音画延迟增加
4. 人脸对齐器
这里参数只需要调节人脸覆盖范围和分辨率两个值,其他值基本用不到
分辨率调整成和你加载的换脸模型一致。一般加载模型后会自动调整这个值,不需要手动改。如果没自动变,就手动改一下
人脸覆盖范围保持默认值不变就行,只有当特殊情况,比如人脸特别肥大,或特别瘦的时候(相机焦距超出寻常范围),可以微调下这个值适配下。
4. 人脸标记器
这里参数默认选Google Facemesh就行,又快又准
5. 人脸交换器
这里模型就是选择已经做好的dfm格式模型
dfm格式模型实际就是deepfacelab的模型,但需要通过deepfacelab自带的这两个脚本来转化格式
通常大家说 DF架构和liae架构都是属于SAEHD模型,用“export SAEHD as dfm.bat”来转格式
如果你训练的是AMP模型,就用另一个脚本来转
转化得到的dfm格式模型,会在deepfacelab的workspace/model目录下,手动移动到deepfacelive目录下userdata/dfm_models中,即可在dflive软件里可见
软件模型有一堆英文名字的模型列表,这些模型并不是本地已安装的,使用后会自动开始从官方仓库进行下载。但由于科学上网原因,国内下载会失败。
至于dfm模型自己怎么去训练制作,移步这里进行学习【教程汇总】DFL从入门到精通(持续更新)-【DFL】精品教程-deepfacelab中文网 - Powered by Discuz!
6. 帧调节器
几乎没用的节点
唯一用处,你的换脸模型质量太差,但输入源画面太清晰,导致两者融合不和谐,你可以用这个帧调节器,把原始画面的质量给降下来
7. 人脸融合器
人脸XY方向偏移:基本用不到,除非你的五官位置异于常人,需要调节下换上去的脸的坐标位置
人脸缩放:挺有用,如果你脸庞太大,可以适当用这个参数放大换上去的脸,显得更匹配
人脸遮罩类型:使用dst还是src的遮罩信息。默认勾选前2个就好
遮罩内向缩边:同deepfacelab合成参数里的向内缩边erode,一般开15
遮罩边缘羽化:同deepfacelab合成参数里的边缘羽化blur,一般开15-25
色彩迁移:一般用rct做色彩迁移。如果模dfm模型本身光影效果好,这个可以选none
插值:图像缩放用的插值计算法,保持默认bilinear
颜色压缩:用不到
人脸透明度:debug用,常规用不到。就是让换上去的脸透明一点
8. 视频流输出
源:选择窗口显示的画面,可以选择很多模式。最常用是“合成后画面”与“合成后画面否则原帧”,前者遇到画面没有人脸时,画面会卡住不动;后者画面没检测到人脸时,输出原始画面
窗口显示:把输出画面用单独一个窗口来显示
音画延迟:本地使用用不到,填0。只有当你用udp方式直接推流直播端口时,需要用到此参数。国内直播基本用不着,可以通过obs、直播伴侣等软件来实现推流
保存序列帧:如果需要把输出画面逐帧保存,可以在这里设置一个保存路径。如果不需要,就留空。注意保存图片是很费时的,开启后基本实现不了实时直播
补帧:换脸速度跟不上时,使用用补帧方式来生成未计算出来的画面帧
mpegts: 用udp推流时用。国内基本用不着,可用obs代替
9. 预览区
没什么好介绍的,用来看各个节点的画面效果
特殊的节点:
face swap(Insight)
无需训练dfm模型,直接使用一张参考人脸图进行换脸
和roop,rope等单图换脸工具用的同一个算法,都用的insight项目提供的128分辨率的换脸模型
主打一个方便,但清晰度是真不行,角度大了也不行
要参考的人脸图放到userdata\animatables 中
C,X,Y控制换脸效果的参数,自行调节
特殊的节点:
人脸照片驱动器
就曾经网上活过的“吗咿呀嘿”那种人脸唱歌效果
选择一张要驱动的图,然后你对着摄像头做表情,图中的人物也会对应做表情
接入其他软件
打开输出节点的窗口显示,然后用obs把窗口截取作为输入源,开启虚拟摄像头,就可以在其他需要用摄像头的软件里读取到换脸后的画面了
结语
软件操作很简单,基本默认参数就可以用,选一个模型就行。
难的是dfm模型怎么制作,自己制作可以到论坛教程区学习
【教程汇总】DFL从入门到精通(持续更新)-【DFL】精品教程-deepfacelab中文网 - Powered by Discuz!
也可以到论坛模型区下载别人做好的模型。但注意,如果下载的模型不是dfm格式,需要自行用前文说的deepfacelab脚本做格式转化
模型区模型质量有高有低,注意看别人的使用评价后再下载