|
简介
FaceAi-ICE(后面简称ICE)是由“教授”独立开发的一个闭源项目,用于视频换脸,使用Python编写,基于Tensorflow框架。
ICE是目前一众换脸软件中最好用的版本之一,甚至在商用换脸上已经是国内独一无二的存在,本文提及的FaceAi-ICE主要指教授免费公布的民用版本,该版本在兼容DFL的SAEHD架构的同时开创了全新的Mulan(木兰)构架,以其逼真的光影学习和超高的炼丹效率,正在换脸圈内冉冉升起,现在还在不断迭代更新。
获取方式
1、ICE官方交流群697716544
注:群内只接受Bug反馈,不提供技术指导,不保留下载链接,也请勿私聊站长获取最新测试版本
2、本站ICE专区下载
https://www.zhatv.cn/forum.php?mod=viewthread&tid=172
注:站内只提供ICE官方授权许可公开发布的版本,不一定是最新版本。
安装教程
安装包已集成软件运行所需的环境,无需单独安装其他环境。软件运行的硬件要求及系统设置参照DFL设置(着重虚拟内存设置)
下载并解压安装包后,切记先运行setup.bat文件对软件进行初始化,后续使用过程中可以再次运行该脚本修改初始设置
入门教程
ICE是软件目录结构及操作方式与DFL无异。主要区别在于其全新的训练器与DFL不同,所以基础操作不再赘述,这里只说二者不一样的地方。
SAEHD构架:
ICE下训练SAEHD的可用参数延续了DFL的UDT系列,此处不做赘述
RG优化器:对训练过程中梯度计算进行优化,有限显存提升模型参数容忍度。
ICE对SAEHD模型完全兼容,并在训练器中增加了独有的RG优化参数,可以略微降低模型对显存大小的需求
实际应用就是当你的BS到达瓶颈后可以尝试着开启RG优化器,然后调高BS值(具体数值请自行尝试)
Loss优化器:启用优化器,将挑选极限角度进行集中训练,并改善扭曲素材间稳定性,提取脸部特征机率更高
ICE在训练器中增加了Loss平滑参数,开启此参数会要求设置Loss值为N,训练中会对每一批BS中loss最高的N张素材进行重复训练,一方面可以有效地避免Loss较低的素材过拟合,一方面整体提升了平均Loss值的下降曲线,便于对整个训练效果的观察和评判
Loss优化器强度:默认值为3(2-8),loss优化器强度取值越大,平滑效果越好,占用资源也更高
实际使用中请根据BS大小适量调整。loss平滑太高会严重影响训练速度。
使用dropout瘦化神经网络,提升模型泛化能力:当面部训练足够,Loss下降不再明显时,可以启用此选项以获得额外的清晰度并减少亚像素抖动,从而减少迭代量。该选项在关闭扭曲和开GAN之前启用。
Mulan构架:
Mulan相较SAEHD并不是简单是优化升级,而是全新的模型构架,内置了大量专属参数。
信仰优化器:在Mulan构架中,教授用AdamW优化器替换了SAEHD中的AdaBelief优化器,使用方式不变,不做赘述
面部注意力:ICE在Mulan构架中把嘴眼优先选项归纳到“面部注意力”选项中,把嘴和眼分开,可以单独进行加强训练,以节省算力开支,并增加rnda选项和skin+选项用于对面部细节进行加强训练。启用选项有助于解决训练中的五官细节正确性
- 随机注意力加速人脸五官部位对齐训练
- 眼睛、嘴巴优先训练,有可能解决眼神和牙齿位置准确问题,如“奇怪眼神”和错误的眼睛方向,也使牙齿更富有细节。
- 皮肤关注,将对纹理和细微表情的帮助,取决于你的素材精细程序,如果素材缺少纹理,皮肤关注反而不适用;
面部注意力在训练过程中可选项目如下(单选)
rnda - 让我更像我,随机对人脸面部五官区域进行排序,进行优先训练,让某些特征区域细节获得最佳状态。
eye - 眼睛优先;
mouth - 嘴部优先;
eye+mouth - 眼睛和嘴部组合优先训练;
skin+ - 皮肤纹理优先(实验)
RO-1优化器:RO-1 优化器是RG优化器的升级版本,在训练过程中将尽量使用内存与GPU进行并行优化,有限显存提升模型对更高参数容忍度,即提高可开启的BS数值。
面部色彩迁移模式:Mulan在ct模式中新增了ict模式,该模式的光效生成面部体感更好,可解决lct在过曝素材下的劣势及rct生成面部油腻的问题。需要强CPU支持,训练周期更长。
ict的开启通过角度光会产生更多细节补充,调节ict强度可增强学习数据,ict<0.5 生成更偏向dst颜色范围ict >0.5生成阴影更接近dst的白平衡, ict开启会导致1,2,5列颜色偏差,加强训练后,关闭ict会自动恢复到迁移色系。
颜色迁移启用面部范围约束:启用面部范围约束,将色彩区域限定为DST面部遮罩区域范围,关闭选项将应用全局区域。
1、应用过遮罩的素材,匹配色彩范围限定于应用遮罩区域,优化计算效果;
2、未应用遮罩素材,匹配范围限定为F 脸型,建议为DST素材应用训练遮罩;
进阶教程
一、参数说明
Mulan构架:
算法分类:
ICE-V3 算法稳定、基本架构脱胎于deepface Me版本,经过大量训练验证;
ICE-V4 (实验)V3算法改进版本,更低运算需求、更深的网络、算法收敛平缓,适合算力紧张,时间换空间。
ICE-V7 (推荐)木兰架构的点睛之作,效果超出预期,精细的面部纹理、高还原度,出效果极快,建议算力充沛素材高清,更适合高分辨率、高参数模型;
ICE-V71(实验)V7 家族中比较轻量算法,有着惊讶的成像速度和细节,这个算法还在测试优化中,请斟酌使用;
ICE-V72(实验)参数富裕、不浪费算力,适合3090 90 24G -48G 显存及算力宽裕设备;
ICE-V73(实验)重量级算法,适合专业多卡训练;
ICE-V8 AVATAR 拼图师;(民用版未开放)
ICE-V9 脸部迭代生成器; (民用版未开放)
Mulan构架的可用参数如下:
模型架构:
'df' 保留了更多源脸特征;
'liae' 对脸型适配更好,但可能不够像;
模型选项:
'-m' 模型收敛曲线更平缓,训练上限更高;
'-s' 模型收敛曲线更陡峭,训练更快;
'-r' 提供更深的神经网络,提取特征视野更大;(实验)
'-u' 增加了脸的相似度
'-p' 提升细节生成能力
'-2' 2x 网络交换通道,极大增加显存消耗(适用GPU 24G-48G)
'-l' 循环生成脸部,通过迭代生成脸扩充表情细节;(实验)
'-d' 使用相同的计算消耗将模型分辨率提高一倍
各版本可用参数选择如下:
ICE-V3 ['d', 'r', 'u', 'm']
ICE-V4 ['d', 'r', 'u', 'm', 'p']
ICE-V7 ['d', 'r', 'm', 'u', 'p']
ICE-V71 ['d', 'r', 'u', 'p', '2']
ICE-V72 ['r', 'u', 's', 'p', '2']
使用示例: df-mud,df-sud,df-surd,liae-sud,liae-u,liae-rd, liae-mrd, liae-rud
推荐参数:V3、V4、V7参数DF-murd,V71参数DF-dup,V72
PS:当前的Mulan构架并非完全体,故不推荐V7和V71之外的模型版本,也不推荐Liae构架
二、官方教程
PS:一切“正确”炼丹方式以官方的标准教程为准
ICE⽊兰训练参考流程 1.71 ver
kingboy 2023
本教程涉及训练参数及相应数值推论于下列环境得出
OS:windows 11、ICE- v1.815 …v1.997
CPU amd R9 7950X、Mem 128g、 GPU 4090
壹. 预训练
训练⽊兰模型推荐进⾏预先训练,预先训练可以提升模型的泛化和训练效率。
预先训练模型步骤
1. 预训练素材准备:
- 推荐使⽤FFHQ⼈像图⽚集合,精简移除带胡⼦、眼镜、遮挡物、刘海、遮罩错误的的⼈脸集,建议保留3万张数量,预处理素材规格与待训练模型分辨率和脸型⼀致;
- ⾃建预训练素材集合:优先筛选⾼清、⻆度全⾯、表情和光影丰富,除重后建议不超过3万张,预先训练以投⼊素材收敛为主线,过多素材影响收敛速度,素材选择宁缺毋滥;
- 建议将素材处理成为5k-10k左右分包喂⼊训练,过多数量⽆益于训练;
- 预训练素材放置, 素材集合或者faceset.pak 放置于ICE⼯作⽬录 workspace\pretrain_faces⽬录下。
2. 本教程涉及的步骤及相关参数推荐值范围以 ICE-V71-df-su架构,围度WF256/256/64/64/16 模型规格为例 ;
3. 建立模型,开启预训练,关闭RO优化器,设置bs=4、其他参数默认,训练5-20万迭代进行数据初始化,本阶段需要快速刷新迭代数据更新优化器训练参数来保证下一阶段训练效率,这个阶段迭代数量视模型参数高低及训练设备能力决定,可查看loss视图曲线下降趋势,从陡峭下降至平缓可提前进入下一阶段实质训练,如出现预览异常或者对loss曲线下降趋势不满意,可以重建模型;
4. DF及S架构, 适⽤于[ ICE- V7、V71、V72…V76,V62B]
① 设置最⼤bs=8…24(低显存窘迫卡可开启RO优化器)训练50w迭代,loss下降⾄0.3左右(v7可能需要更多时间)
② 开启扭曲继续训练50w迭代;
③ 开启眼嘴注意⼒eye+mouth,训练50w结束预训练;
5. Liae架构(参考)
① 设置最⼤bs=8…24 、开启扭曲、其他参数默认,训练50w迭代,
② 开启颜⾊迁移模式:ict=0.5 继续训练50w迭代;
③ 开启注意⼒rnda或者eye+mouth,训练50w;
④ 关闭遮罩训练5k结束预训练
6. 可选项说明及参考
- 关于loss数值,平均loss=0.3,预览图src pred列⼤于0.5素材需要检查遮罩和切脸错误,侧脸loss低,正脸loss⾼,可关闭侧脸优先,正脸权重不断刷新学习有效特征⽐较慢,分批次训练可以部分缓解;
- 素材拆分,可使⽤z2-2.20⽬录排序命令,快速排序算法按5k数量提取分批素材,这个⽅法⻆度权重⽐较均匀,训练效率⽐较⾼,每训练⾄常规脸部loss=0.3更换批次,后续批次训练会⽐前⾯快;
- 开启眼嘴注意⼒可提前训练出明显⽛⻮,但不是必要的,使⽤rnda可加强独⽴特征权重,但会增加训练周期;
- 开启loss平滑后loss均值可能会⾼位波动,但会快速收窄区间loss曲线,loss均值保持下降趋势是训练的基准;使⽤rtm类型素材集合,不建议开启loss平滑,重复训练极端素材极⼤浪费算⼒;
- 每20w迭代关闭遮罩训练5k有助于模型收敛;
- 预训练阶段尽可能最⼤bs训练,忽略迭代延迟,V6系列可设置优化器独占副GPU,提⾼主卡到最⼤bs,不建议开梯度堆叠;
- 不建议⽤连续单⼈套图素材做预训练,容易过拟合,导致模型特征偏向性出⾊,泛化能⼒差,实际应⽤效果表现差;预训练素材⾼离散性有助于提升模型性能。
- 受设备能⼒、模型参数及素材量和复杂度约束,预训练迭代投⼊数量可通过预览图效果来衡量,正常脸部细节清晰即可(眼睫⽑、⽛⻮和基本表情纹路)
- 预训练可以提升推理性能,易于在后续训练中快速获得复杂脸部纹理细节,但需要权衡算⼒投⼊和时间花销,通常⾼算⼒⻓周期训练,能有效改善⽣成脸部细节层次和肤质纹理;
贰. 正式训练
(⼀)、预训练转正训练
重点:转正前备份预训练模型,蓝色字体为木兰模型训练核心内容
1. 正式训练素材要求:因为⽊兰算法机制,会优先转换⽪肤纹理细节和光影,导致⽊兰对src素材要求⽐较⾼,⻆度全⾯及光影丰富是基本要求,⽊兰素材使⽤可以分两个阶段。
A. 粗练阶段,训练src素材尽可能多、丰富,清晰模糊皆可,尽量多提供以保证表情准确全⾯,B. 精炼阶段,使⽤精选src素材提升⾯部精细度,清晰的⾯部纹理、⽛⻮、眉⽑、眼睫⽑的前提是精挑细选⾼质量素材。
2. data_src放置你需要训练的单⼈⻆⾊素材,data_dst放置可放置多⼈或者单⼈素材,src及dst素材都预处理为当前模型分辨率脸型并写⼊训练遮罩;
3. 备份预训练模型,如果是df模型,⼿动删除模型⽂件结尾layers_AB.pth、layers_AB_opt.pth两个⽂件,正训将获得src最⼤相似度。保留AB⽂件⽣成脸与dst更容易融合,⾃⾏斟酌。
4. 启动训练,关闭预训练开关,其他参数默认进⼊训练,如果按p预览窗⼝逐渐有⼈脸,检查src pred、dst pred⼈脸画⾯正常训练保存模型退出,进⼊泛化训练阶段。预训转正训如果出现画⾯异常(纯⾊画⾯、纯⽩、纯红、纯绿等)不要保存模型,ctrl+c 关闭训练,重新转正。
5. mulan 1预训练模型转mulan 2,转正后训练初期脸部会像⾯膜⼀样,覆盖密集⼩排列整⻬点,这是m2采⽤不同数据映射空间缘故,只需训练⼀会⼉⾃动会消除。
6. 1.6版本v4、v7的预训练模型更换到1.815以上版本,请在新版本预训练阶段训练5w后在转正。
(⼆)、泛化训练
1. DF、LIAE 及 S 架构
① 关闭扭曲、默认其他预训练转正参数,训练到src_loss <0.2(没有删除AB跳过)
② 开启扭曲,开启颜⾊转换 ict=0.5(ict、lct、rct 轮换效果更好),继续训练src_loss<0.3 ;
③ 开启loss平滑3,开启ict=1.0 颜⾊转换模式开启范围约束,继续训练 Dec: loss< (0.03,0.03)
④ 关闭loss平滑,开启注意⼒-眼嘴优先,训练到src loss < 0.2
⑤ 关闭扭曲,开启瘦化神经⽹络,继续训练预览效果满意
2. 参数调整参考
泛化训练阶段经常查预览src-Pred 、dst -pred,并根据你素材量和算⼒情况调整以下开关:
- 注意⼒眼睛优先解决可纠正眼神⽅向,rnda训练出来脸更遵从src五官特征细节,但过于保持src的⽐例,在某些dst脸型上显得⾯部突⺎,skin+对于素材要求⽐较⾼,如果素材本身缺少⽪肤细节不建议开启;
- 开启侧脸优先解决死亡⻆度,对于⽊兰侧脸优先不太重要
- ⾊彩转换算法选择,【 ict、lct、rct 、mkl、sot 】选择适合当前素材的算法,不仅限于lct,针对dst的⾊彩情况,可适当调整转换应⽤强度powe,ict的光效⽣成⾯部⽴体感更好,需要强⼒cpu⽀持,训练周期更⻓。
- 不定期关闭遮罩可加强脸部轮廓清晰度;
- loss平滑的有效组合:(1)loss平滑+扭曲 (2)loss平滑+颜⾊迁移
- 当loss平滑=3,平均每个迭代Dec值<0.03,需要关闭loss平滑选项才会训练到所有素材
- 后期训练视情况开启梯度剪裁保证模型不会坏掉
叁. 细节训练
1. 关闭扭曲,可训练眼睫⽑、⽛⻮等细节进⼀步精细度,必须开启瘦化神经⽹络防⽌模型过拟合,关闭扭曲⻓期训练会导致⽣成的脸型与dst⼀致,重新开启扭曲会逐渐回到src脸型(不是每个算法都可以回光返照);
2. 细节训练阶段很容易陷⼊loss不动,预览细节没有进展,
(a) 训练环境⽅⾯可考虑提升设备,提⾼训练最⼤Bs进⾏收敛动作;
(b)V6系列可折叠梯度=3x Bs,折叠值不宜超过5x。 (c) 采⽤多卡位进⾏⾼bs收敛,主卡x2+模型优化器独占副卡;
3. 素材增强⽅⾯可(loss平滑=5 + ict=0.5,使⽤光影丰富的dst )补充细节,ict的开启通过转换⻆度光会产⽣更多细节补充,调节ict强度可增强学习数据,ict<0.5 ⽣成更偏向dst颜⾊范围, ict >0.5 ⽣成阴影更接近dst的⽩平衡, ict开启会导致1,2,5列颜⾊偏差,加强训练后,关闭ict继续训练会⾃动恢复到迁移⾊系;
4. 增补素材、精选部分src⾼清素材,⽪肤纹理,眉⽑和眼睫⽑清晰,强化这部分素材五官学习权重,单独训练的素材不能太少,容易导致模型变的平庸
5. ⽣成脸部清晰度不够通透,开启增强项:脸部迭代模式,开启dst参考,减少抖动,但会增加合成时间延迟;
6. 缺失的细微表情及光影,对于df模型可以通过模型进化,融合部分相近素材解决,并控制光影效果不覆盖原有训练效果;
7. 备份模型,尝试模型增强训练对⽐细节:
(1)光影进化;
(2)真脸及⻛格学习 ;
(3)开启gan训练;
8. 合成对⽐,回退模型,选择合适增强模型继续训练叁. 模型进化
• mulan -df 架构
(⼀)、光影进化训练(1.7以上版本实装)
1. 备份模型
2. 素材准备,模型src素材放置src、准备光影⾊彩饱和度丰富、表情连续单⼀src素材2-3套,脸型接近,放置dst
3. 开启光影进化,按泛化训练⽅法逐步训练,这个过程⽐之前训练快,查看预览明显改善⻆度和脸型就要停⽌训练,可以换多套素材找到最合适融合观感。
4. 关闭光影融合,结束光影融合训练,细节训练恢复五官清晰度。
5. 这个过程可以反复让当前src的脸部融合dst光影,可以通过光短路关闭、继续训练src素材消除部分融合特征,回归到原来的src独有特征权重
(⼆)、光影进化 SRC 2 SRC
1. 备份模型,素材⽬录src放置精选src素材,、dst放置不同拍摄时期src,开启训练,扭曲+ict,开启瘦化神经⽹络,开启光影融合,开启训练ab,关闭训练b,关闭训练dst,关闭src、dst翻转,训练周期10-20万。
2. 训练期间可适当考虑开启face style、bg style查看训练效果
3. 这个阶段可以 gan style;
4. Skin style,妆容src要精选⼀致,并应⽤妆容专⽤遮罩,迁移妆容后回退效果不好。建议开启前要备份模型,模型改名以防误操作。
5. src 2 src 阶段可以关闭扭曲精炼细节,请确保关闭对b通道训练及dst训练。
(三)、模型蒸馏-权重转移(特殊版本)
1. 备份模型
2. 放置教师模型
3. 放置强化学习素材
4. 设置学⽣模型的参数
5. 打开权重开关,选择src和dst的权重⽐例,点击运⾏学习按钮,开始训练⾄loss值0.2
6. 提取学⽣模型,进⾏单独训练,查看训练效果
7. 回退模型,循序权重⽐例重新进⾏强化训练
8. 合成测试
肆. 关于Ai⽬前换脸的⼀点思考
模型收敛
关于ice模型的收敛,要展开来说,会有⼀堆数字或者曲线,简单来说,迭代次数随着训练时间单调递增,当满⾜模型算法的素材⾜够丰富,在有限次的训练之后,loss 最终都会达到⼀个稳态。或者⽤⼀个数学上的说法:该算法是收敛的,⼜或者对这⼀堆数据收敛。 这个loss⼤致上⼏个节点阶段是和测试环境和素材有关的,总的来说我们看是训练loss趋势。
提示:模型收敛不代表训练后loss最低,loss是由⼀系列权重加权后参考值,有时候甚⾄因为遮罩错误loss居⾼不下。
对于⽊兰算法⽽⾔,⽬前训练模型收敛表征:
以五列预览窗⼝为例,通过训练可达到:
- 1,2列,像素位、颜⾊⼀致,视觉⼀致,
- 3,4列,像素位、颜⾊⼀致,视觉⼀致,
- 3,5列,视觉效果五官匹配,颜⾊⼀致。
像 vs 不像
像和不像的前提是源⻆⾊和⽬标⻆⾊脸型⼀致、年代差⼩。
全⾯的源⻆⾊素材和⾜够训练。
全⾯的素材
- 脸部表情丰富、⻆度⻬全,⾯部光影丰富及⽪肤有⾜够纹理细节、⽛唇⽑发清晰。素材量5k-1w。
- 如果达不到素材要求,效果基本不会好!
如果把换脸过程量化=100分,
- 素材收集处理 :50
- 模型训练 :20
- 合成+后期 :30分
每⼀项都很重要,也可以不那么重要,这取决于你的期待值和耐⼼。
使⽤你⾃⼰觉得合适的⽅法也很重要!
kingboy - 2023 / 11
版本差异
ICE1.3版:初代ICE完全体稳定版本,未提供Mulan构架,相比DFL,替换了新的优化器,增加了512遮罩模型的支持,使用方式没有较大差异
ICE1.6版:初代搭载了Mulan架构的ICE稳定版本,增加了1代Mulan模型(V3,V4,V7),合成器增加了双重遮罩功能
ICE1.8版:当前最新民用版本,增加了完整的Mulan模型,在1.6中训练的Mulan模型在此版本中可以进行升级优化,新增了V71模型版本版本
Linux适配版:当前适配Linux的为1.501版本。
Tips:
1、在ICE下训练过的模型因为是joblib方式保存的(DFL用的是pickle),因此DFL会无法读取模型。
2、ICE1.8以下版本训练的模型放到1.8训练/使用时,需要将模型配置文件.dat改成.db才能被1.8版本识别。
3、ICE的内存占用大概会是显存的1.5-2倍。所以在使用前尽可能备好足够的内存空间。
4、在1.8版本的ICE中,Liae的预训练尽可能早的开启扭曲以更新AB通道,V71模型也可以在预训阶段就开启扭曲。
5、原版SAEHD和木兰不是一个类型,训练方法没有参考性,扭曲+ct会让脸型和src完全一样,缺了这两个都不行。
6、rnda这个适合1对1或者1对多,没有预训练开的必要,转正清除连接元后就没效果了,预训练嘴眼或单开嘴和眼就够了。
注意
因ICE版本更新频繁,目前在一直在更新测试版本 以上内容不代表所有版本特性,不具有探索能力的小伙伴静候成品底丹即可 |
评分
-
查看全部评分
Zhatv换脸论坛免责声明
全站默认解压密码:zhatv.cn
【Zhatv】论坛里的文章仅代表作者本人的观点,与本网站立场无关。
所有文章、内容、信息、资料,都不保证其准确性、完整性、有效性、时效性,请依据情况自身做出判断。
因阅读本站内容而被误导等其他因素所造成的损失责任自负,【Zhatv】不承担任何责任。
|