zoukankan      html  css  js  c++  java
  • DeepFaceLab小白入门(4):提取人脸图片!

    通过上面级片文章,你应该基本知道了换脸的流出,也能换出一个视频来。此时,你可能会产生好多疑问,比如每个环节点点到底是什么意思,那些黑漆漆屏幕输出的又是什么内容,我换脸效果这么差,该如何提升?等等,好奇宝宝已上线,不搞明白睡不着。接下来,我就把每个环节展开说一说。本篇文章主要说“人脸提取部分”。

    DeepFaceLab 更目录如下。

    workspace工作目录如下

    1) clear workspace.bat (清空项目)

    这是一个用来初始化项目目录的文件,由于软件本身自带了一个workspace,所以你第一次使用的时候可点,可不点。点了之后,一个回车,界面如下。

    2) extract PNG from video data_src.bat(视频转图片)

    双击这个文件之后程序就开始运行,会出现一个提示。

    Enter FPS ( ?:help skip:fullfps ) : 

    此时你可以直接回车,这样转换出的图片最多,你也可以输入一个20以内的数字,比如10,这样图片就会少一点,设置5 也可以。输入数字后回车即可。

    运行结束之后出现Done Press any key to continue。 此时在workspacedata_src目录中会出现好多图片,这些图片就是把视频一帧帧分解成图片了。

    3.2) extract PNG from video data_dst FULL FPS.bat(视频转图片)

    这一步和2)的原力是一样的,只是这次操作的视频是workspacedata_dst.mp4,而且默认是全帧率转换,转换完之后workspacedata_dst目录下面会出现很多图片。

    4) data_src extract faces DLIB all GPU debug.bat(切脸)

    这一步的目的是,把图片中的人脸提取出来。双击后自动运行,运行过程分三步走,不需要人为干预。

    结束后会显示Images found 图片数量,Faces detected 检测到的人脸数量。

    运行结束后,提取到人脸保存在workspacedata_srcaligned 目录。

    以4开头的文件非常多,但是并不想每个都点,主要包括了三个提取器DLIB、MT、S3FD,你只需要任选一个即可。差别主要是提取脸部的时间和效果有细微差别,S3FD是新添加的,据说性能比较好。

    4.1) data_src check result.bat (检查提取效果)

    点击这个之后,自动打开一个看图软件,会帮你自动定位到workspacedata_srcaligned目录在这里你可以把不清晰的,或者误提取的图片删除,留下清晰的高质量图片,这个会让你的模型质量更高,转换之后的效果更好。

    4.2.1) data_src sort by blur.bat(排序)

    4.2开头的都是排序工具,根据不同的特性进行排序,比如blur 只是更具清晰度来排序,这个你可以快速找到不清晰的图片删除,还有similar histogram根据相似度排序, face pitch 脸的俯仰,face yaw脸的左右偏移。 基本上只要用到这,排序的目的是去除劣质图片,筛选出优质图片。

    5) data_dst extract faces DLIB all GPU .bat (提取脸部)

    第五部和第四部的功能是一样的,只是一个提取src的脸,一个提取dst 的脸。与第四步不同是,添加了一个手动提取脸部的工具MANUAL RE-EXTRACT DELETED RESULTS DEBUG,还有默认生成aligned_debug。

    ps: 这里用了托尼老师的脸,实际情况应该是变形金刚男主的脸。

    Debug中会有这样的图片,脸部有一个红色框和蓝色框,还有一个绿色的轮廓线。从上面这张图来看,这个提取效果是OK的,如果发现绿色线和脸部轮廓不贴合,那么就需要手动提取这张图片了。由于合成得时候,程序会参考dst中debug的标线,所以修正这个错误很重要。如何修正,请看下一条。

    5) data_dst extract faces MANUAL RE-EXTRACT DELETED RESULTS DEBUG(手动提取脸图)

    这一部的作用就是解决自动提取不准确的情况。使用前先删除DEBUG目录中标线有问题的图片,然后双击这个文件,进入后会出现预览界面,界面上有很多围绕脸部的点,轻轻一动鼠标或者转动鼠标就可以改变选中区域。觉得比较合适了就回车。进入下一张图片的操作。

    效果如上图,窗口上方有操作提示。

    经过上面的步骤,dst和src的脸部提取就全部完成了。

    这个步骤的关键点是保证脸部清晰,以及dst的轮廓识别准确,这样就为后面的步骤打下了坚实的基础。

    扩展:

    如何换一组训练对象

    如果你以及成功跑完所有环节,成功的把小罗伯特唐尼的脸放到了希亚·拉博夫的头上。此时你想换一个人玩玩,该怎么操作?

    操作很简单,把data_dst.mp4和data_src.mp4换成新的视频,把model下面的文件全部删除,然后按上面在步骤再来一次即可。

    如果你的视频太长,希望截取一部分,可以试下面的方法!

    3.1) cut video (drop video on me).bat (视频截取转码,不懂的这一个不要点。)

    双击后,输入开始截取的时间点From time,回车,输入截取结束To time的时间点,回车,回车,输入码率 5,回车,等待结束出现done。

    时间格式按照提示的来,码率一般不需要设置太高,设置成5足够了,你不输入直接回车也可以,默认值为25。默认情况截取的是workspacedata_dst.mp4这个视频,如果你想截取其他视频,可以把待截取的视频直接拖到这个文件上面。

    PS:实际操作这文件不需要点,等到熟练之后,需要截取视频再来用这个功能。

    后续步骤,请看:DeepFaceLab小白入门(5):训练换脸模型!

     

    AI换脸系列文章:

    1. DeepFaceLab软件简介
    2. DeepFaceLab软件安装
    3. DeepFaceLab软件使用
    4. DeepFaceLab人脸提取详解
    5. DeepFaceLab模型训练详解
    6. DeepFaceLab导出视频详解

    更多内容请参考:DeepFakes中文网

    公众号:托尼是塔克

  • 相关阅读:
    关于Certificate、Provisioning Profile
    苹果开发者账号类型
    在 iTunes Connect 中,无法找到“My Apps”选项
    iOS 开发,相关网址
    dart 使用
    initState 必须调用 super.initState(); 否则报错
    TabBar 设置可滚动:isScrollable: true
    flutter 从创建到渲染的大体流程
    获取对象State的方法
    beforeRouteEnter 与 beforeRouteUpdate(watch $route 对象) 的区别
  • 原文地址:https://www.cnblogs.com/wangpg/p/10626076.html
Copyright © 2011-2022 走看看