星级打分
平均分: NAN 参与人数: 0 我的评分: 未评
本帖最后由 qdpushaver 于 2023-7-15 09:59 编辑
20230715学习笔记(三)当dst有多个人物的处理方式
这大概现有最(详细)啰嗦的图文笔记了。主要涉及:提取面部(切脸)流程、aligned和aligned_debug文件夹的作用、排序工具使用、配角脸部图片删除和一些其他方法的介绍。
曲高者和寡,现在经常还能看到相关问题的提问,所以回过头来记录一下详细的学习过程,希望更多朋友坚持学习,共同进步。各步骤结论已经加粗下划线 标注, 也希望大神们指正。
本篇笔记背景:
1.其实,差一点就要放弃了。虽然DFL已经很简单了,但是,仍然会遇到些问题搞不明白,特别是大家的水平都已经挺高了,即便是认真回答,我也听不明白。让我想起了当年上学时,我上的小学不教英语,而其他小学有英语课。初一开学一上英语课,老师稍微一点,大家就都明白了,只有我们几个没上过英语课的一脸茫然,挫败感特别强。好在,英语入门不难,DFL入门也不难,多看多问多做,还是会有所收获,希望在放弃边缘的同学们,一起努力。
2.适用范围:前期已经能按照教程的步骤,将软件(2021_1120版本)自带的马斯克和小罗伯特唐尼完成了一次换脸,熟悉了12345678的流程(可能没弄5、遮罩这一步),对于aligned和aligned_debug(以下简称debug)这俩文件夹的用途也还不是那么明白,然后,按照自己的想法去创作时,遇到和教程不一样的地方就会不知道咋办了。
现将后续学习的心得分享如下:马斯克换钢铁侠是一对一的换脸,算是最为简单的了,主要是为了让大家上手软件。然而,在实际运用中,我们会遇到dst和src的素材存在多对一、一对多、多对多(只需一对一换)以及多对多(多个换多个)情况的场景。那么,先把难度调高一点点,从dst素材有多个人物开始。
准备工作:
软件版本(2021_1120)
Dst素材:周润发电影《赌神》(1989)中1:49:49-1:50:06,踩着专属bgm进赌场片段(专门下了个21GB的蓝光版,但这电影本身画质就是那种带点马赛克风格,截出来只比3GBmkv格式的略清晰而已),可以自己下载一段素材用,不影响本文理解。
Src素材:随意,可以继续用小罗伯特唐尼的,也可以自己搜索。
Model文件夹:随意。如果前期马斯克换钢铁侠是从零开始训练的,可以不动这个文件夹继续试试,但是,西方人的脸型不一定效率高;也可以再从零开始训练;也可以下载大神们的现成好丹。这个地方也很重要,但是涉及内容较多,可以作为进阶练习内容,不影响本文理解。
正式开始。
1.工作空间清理,可以手动把data_dst文件夹里清理掉或者复制一份放到别处;
2.src 视频提取图像 extract images from videodata_src。用原有素材的话此步骤可以省略;
3. dst 视频提取图像(全帧率) extract images fromvideo data_dst FULL FPS,正常执行。最后会生成x张图片,保存在data_dst文件夹下,此时,aligned和debug这俩文件夹应该还是空的;
4.src 自动提取面部 data_src faceset extract,用原有素材的话此步骤可以省略;
5. dst 自动提取面部 data_dst faceset extract,需要关注。
自动提取面部到最后,会提示找到x张图片,找到y个面部。其中:x就是第3步生成的图片的数量x,这里忘记截图了。一对一的情况下,x和y是相等的,多对一的情况下,x小于y。例如,本文所有素材就是395张图片,3131个面部。
插一段,关于这些图片数量关系和各个文件夹功能的直观经验。
(1)data_dst文件夹(不含aligned和debug两个子文件夹)的图片,是对dst素材分解帧所产生,后续还要用来合成视频,所以,这些图片(见图1,文件夹共397个项目,减去2个文件夹,即395张图片),文件名即其时间顺序编号(5位数,从00001开始),不 要 动,否则,合成的视频会丢帧。
(2)接着往下看,打开aligned文件夹(见附图2),里面有3131个项目,这是执行《dst 自动提取面部 data_dst faceset extract》后生成的,这里面出现的脸均默认为要被替换成 src 的脸 。当然,这肯定不是我们想要的,我们一般只想换其中一个,如何删除配角的面部图片,这里列为**问题一**,具体解决方案在后面。
再看一下每张图片的编号,也是5位数,也是从00001开始,但是不同的是后缀不同,有00001_0、00001_1和00001_2,再直接看到最后一个文件,编号是00395_5。看到这个395,应该就明白了,aligned 文件夹里面的图片,与其上一层的 data_dst 文件夹也有对应关系, 具体就是,把上一层395张图片,每张图片里的人脸都单列了出来并加上后缀进行区别(见附图3),所以总数从395张图片变成了3131张。
(3)细心的同学可能已经发现,00001图中,其实是有5个人。推测是脸部角度及亮度影响,软件只识别除了3个。如何来验证我们的判断呢,就得看剩下的这个debug文件夹了。还是先看数量及文件名规律,395个图片,编号从00001到00395,总数及名字与上一层的 aligned 文件夹是对应的。
再打开debug的00001看下,果然有三个人脸识别的框(这些红框是自带的,不是后画上去的)。原来aligned文件夹的00001_1、00001_2和00001_3就是从这里来的(见附图4)。同时,我们也应该注意到,debug的00001里,只有一个面部识别框是对的(即明确圈出了人脸范围和五官位置),其他两个头部识别的蓝框还可以,但是五官识别的绿线是一团糟,推测这就是aligned文件夹图片00001_1和00001_2里人物是歪斜的原因,即 aligned 文件夹中没摆正的图片,大概是软件没有正确识别人脸的 。不能正确识别五官,会影响换脸质量,所以,这类图片建议不要用。那么,如果主角的脸也没识别正确,或者,干脆没识别上,应该咋办,这是**问题二**
了解了每个文件里里图片的来源、作用和相互关系,那么我们就可以开始动手了。
我们处理 dst 素材中有多个 目标 的原则是 ,主角的脸部图片不能少,其他的图片不要留。
**问题一**如何删除配角脸部图片的解决方案。首先是针对上面提到,aligned文件夹里面有3131个项目,软件默认都是要换掉的脸,但我们只想把主角的脸换掉,那么其他人的脸可以删除吗,是可以的。最终合成视频用的是data_dst文件夹下的395张图片,aligned文件夹里的图片只用来换脸,不需要就删掉。删掉之后,软件就知道了,剩下的脸是需要换的,删除掉的脸不用换。那么如何来删除呢。
方法一:一个一个手动去删除。优点是准确率高,缺点是费时费力费眼睛。短视频可以,长视频不建议。
方法二:按照文件后缀去删除,上文提到,每一帧截出来的人脸图片文件名是有帧数+后缀的命名规则的。直接在文件夹中搜索后缀“_4”,然后人工识别,批量删除。这个方法快了一些,但是有时候在不同的帧,人脸数量有变化,主角的后缀会不一样(见附图5),第37帧的时候,主角是_4,到第38帧,又成了_5。这一点要注意,批量删除的时候不要删high了,把主角也删除了。如果不放心,可以自己简单校验一下结果。本文素材为例,总帧数图片有395张,主角是第20帧全脸登场的,那么如果软件提取主角面部全部成功(实际很难,有些大角度得另做处理)的话,删除其他人后,aligned文件夹中主角的脸应该是376张,才能不影响后期合成。
方法三
(1)排序。用软件自带的《dst 面部排序 data dst sort》,这个操作可以让aligned文件夹里的3131张图片,按照某种特征排列起来,方便你删除,一般是用默认的第5种直方图分布。注意:这个操作会改变aligned文件夹里图片的文件名(见附图6),为防止初次操作发生意外, 建议备份一个 aligned 文件夹并记好这是哪一步操作之前 。这种方法比上一种更为集中一些,可以更happy的框选删除了,但是依然请注意,别太high了删多了。你就想,如果这软件足够智能的话,这一步根本都不用人工操作,所以,还是得看好了再动手。
排序操作虽然会改变文件名,但是如果没有其他需要了,可以不用改回来,并不会影响后续的合成步骤。
(2)粗删。删除的过程中也会遇到一些问题,比如:在想删除的配角的图片中能看到主角的脸,或者,图片有主角,但是旋转了,也没铺满。这类拿不准的图片,可以先放着不删,等后面再看。
(3)细删。大部分的配角脸部删除之后,因为这些图片的文件名已经改了,就需要运行《dst 原始文件名恢复 data_dst util recoveroriginal filename》了。运行后,可以发现,剩余图片名字又回到了帧数+后缀的规则下,此时,在恢复完文件名的aligned文件夹中可以看到,第37帧有2个(见附图7),那么_1那个就可以删掉了,以此类推,同一帧里只保留主角脸大清晰的。如果有明显丢了帧,可以从备份aligned文件夹里看看,是主角没出现,还是误删了。最后的aligned文件夹中,应该有376张的主角脸部图片。
至此,问题一关于如何删除和保留就是这样。
**问题二**的主角识别不好的解决方案。
(1)整理debug文件夹。可以手动把debug文件夹里的删掉,但是不推荐。推荐本站的《[易用脚本]按照aligned整理目标aligned_debug》,这样debug文件夹里就变得和aligned文件夹一一对应了。
(2)错误debug文件删除。在debug文件夹里浏览一遍,把主角的脸和五官标的不好的(绿线乱成一团)图片删除掉。
(3)重绘错误debug图片。这里需要注意,软件提取不好是有原因的,可能是角度、清晰度或者背景干扰等。大角度问题算是进阶内容,新手阶段建议放弃 ;清晰度不够,需要用到人脸清晰化工具进行一下预处理,然后运行《dst 手动提取面部(删除 debug 图片后) data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG》。软件会把删除的debug文件夹图片(也就是你在上一步中认为提取脸部不正确的图片)找出来,让你手动提取,软件自带的手动提取不是很好用,具体经验可以参考文末另一篇笔记的附图,不喜欢在一棵树上解决问题的同学,可移步站里关于“手动切脸 +MVE调整”的相关教学,更人性化更高效。
这个操作会把所有步骤中删掉 debug 图片都找出来,不需要提取面部的( 比如本例中没有主角的前十几帧 )直接按空格跳过就好,一旦你重新绘制了,他会记下来,并把相应的面部图片放到 aligned 文件夹里。
提取完成后,dst多对一素材自动提取面部的后续筛选工作就完成了。
课后作业,以本例素材为例,有一部分的主角脸部图片过于模糊,可以用软件自带的《dst 面部排序 data_dst sort》,这次按清晰度排序,把模糊的单独放到其他地方。只用清晰的图片来训练,避免影响模型整体效果 。训练完成后,再把图片放回来再合成。(不确定,正在验证中)