deepfakes怎么用_deepfakes-FaceSwap使用笔记

deepfakes怎么用_deepfakes-FaceSwap使用笔记安装过程需要魔法上网,有些包国内下载太慢了conda环境在AnacondaPrompt里,查看所有环境,两个命令都行condaenvlistcondainfo–envs查看安装的包condalist更换环境,前面的conda不写好像也行condaactivatefaceswap提示nomodulenamedcv2进入相应的环境,安装缺少的包condainstallope…

大家好,又见面了,我是你们的朋友全栈君。

安装过程

需要魔法上网,有些包国内下载太慢了

conda环境

在Anaconda Prompt里,查看所有环境,两个命令都行

conda env list

conda info –envs

dbff4bc9ee45440a682ab53c31c0d655.png

查看安装的包

conda list

fe60df655605eb6f71855b7ec515b841.png

更换环境,前面的conda不写好像也行

conda activate faceswap

f5bcfbacc6c063aa8768952cdfcf7dfc.png

提示no module named cv2

进入相应的环境,安装缺少的包

conda install opencv

提取人脸

9d957ce449e8e435ac6ed22ad159ab33.png

Input Dir可以是视频或者图片文件夹

Output Dir是输出的截取好的人脸图片文件夹

Alignments是对齐文件,用于标注人脸的位置信息,不填的话会默认生成在Input Dir。如果要自定义,需要新建一个.fsa后缀的空文件

下面的Extract Every N是每N张图片截取一张人脸,对视频就是每N帧截取一张人脸。官方建议视频是每半秒或一秒截取一张。比如,60帧的视频,半秒就填30

提取两个人脸的图片。

删除无关图片

提取的人脸图片有的可能不是要进行操作的那个人,比如视频里出现多个人,或者多个人的合照,其他人也会被提取。应该删除无关信息

为了便于操作,可以先进行分类,Data框里的三项都应填入

41980531358546debe53a879797a6e93.png

分类之后,将无关的图片文件删除。然后在Tools – Alignments – Job里选择 Remove-Faces,Data框里的Frames Folder不用填,另外两项需要填。完成后,alignments文件也就是.fsa文件会更新,同时会在同目录生成一个备份文件

3543406ab0078d5d12fab8bafdc3e4a9.png

合并多个alignments

Job选择Merge。Data框里,alignments文件放入一个文件夹,并在Alignments File选择时按Shift或Ctrl选择多个alignments文件。

将所有人脸图片放入一个文件夹,Faces Folder选择该文件夹。Frames Folder不填。合并后会生成一个新的alignments

15473baefdee05bfbf20c90d3e9ae314.png

训练模型

填入Input A/B,以及相应的alignmens文件(在Extract里生成的),然后新建一个模型目录并选择,模型将会存在该目录。显卡比较垃圾的话跑一会就会报错,在Trainer里选择Lightweight。根据预览的图片选择何时停止。我用GTX 1050 2G,训练了一个晚上,loss值看起来已经降不下去了,可能跟我的图片数量太少有关(A:100+张,B:1400+张),生成的视频也还凑合,有时清楚有时模糊。

训练可以随时停止,指向相同的文件夹可以继续接着之前的训练。

ac5ae978c840cd27e5b5982466c596c1.png

生成视频

602a3dafe017f87b6cbbfc42ed0f42a3.png

注意这里的alignmens可能和之前Extract出来的不一样。

可以通过ffmpeg将视频每一帧都抽出来,然后对生成的所有图片进行换脸,然后再将帧合成为视频,再将原来的音频合并。

抽取视频的每一帧

ffmpeg -i /path/to/my/video.mp4 /path/to/output/video-frame-%d.png

将帧合并为视频

ffmpeg -r 60 -f image2 -s 1920×1080 -i video-frame-%0d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p test.mp4

%04d 表示用零来填充直到长度为4,i.e 0001…0020…0030…2000 and so on. 如果没有填充,需要相应更改,如 pic%d.png or %d.png

-r 帧率(fps)

-f image2 图像合成视频默认设置

-crf 画质,数值小意味着画质高,通常设置为15-25

-s 分辨率(1920×1080)

-pix_fmt yuv420p 像素格式

test.mp4 输出在当前文件夹,输出结果为test.mp4

video-frame-%0d.png,这里的%0d是对齐长度。

如果使用这种自行抽帧的方法,需要对抽出的所有图片进行Extract,并且Extract Every N设置为1,这里生成的alignments文件可以用于Convert

或者直接在Input Dir里输入视频文件,并对视频文件进行Extract,且Extract Every N设置为1,生成的alignments文件可以用于Convert。当Input Dir里输入视频文件时,Output Dir里生成的还是图片,是已经换过脸的每一帧的图片,仍然需要用ffmpeg进行合并。

说的好像有点乱,总之就是每一帧都应该有一个有alignment,需要先有这个alignments文件才能Convert。

conda env备份

1、进入虚拟环境后,输入以下命令进行备份:

conda env export > environment.yaml

该虚拟环境的信息便被保存在了 environment.yaml 文件中

2、重装该环境

conda env create -f environment.yaml

离线备份:

直接在conda的envs目录下找到要备份的环境目录,复制一份目录保存下来。用conda env list查看环境目录

离线恢复安装

conda create –name env_name –clone env_path –offline

参考链接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141274.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux修改密码命令passwd_linux重置系统到刚安装状态

    linux修改密码命令passwd_linux重置系统到刚安装状态新建Linux系统修改密码一、首先,打开VMwareWorkstation软件,在自己的界面打开虚拟机二、打开虚拟机后在如下界面单击鼠标左键使鼠标“消失”,按上下键使界面停留在如下所示,白条停留在第一行,再点击“e”键三、单击“e”键后进入如下界面,在linux…quiet这段代码后,initrd之前输入“rd.break”,再按ctrl+x启动进入下一个界面四、在以上界面中依次输入mount-oremount,rw/sysr

    2025年9月22日
    5
  • pycharm默认编码_编码需要注意什么

    pycharm默认编码_编码需要注意什么这两天爬取东西的时候经常出现编码的问题,错误如下:UnicodeEncodeError:’gbk’codeccan’tencodecharacter’\xa9’inposition75:illegalmultibytesequ找了很多资料也没发现有用的,问了一些朋友也不知道,然后自己试着改了下pycharm的一些东西,就好了具体步骤:File–>Se…

    2022年8月27日
    3
  • meta分析一般步骤

    Meta分析总体可分为以下几步:选题,文献检索、数据提取、质量评估、数据整合及结果解读。一,选题对一些大样本,多中心临床合作已经得到明确结论的的,没必要做meta分析。二、文献检索在制定文献检索策略时,总体的要求就是查全和查准。需要考虑如下几个方面:1.圈定搜索数据库(外文有:MEDLINE、theCochranelibrary、医学文摘、TOXLINE、OVI…

    2022年4月9日
    59
  • 详解C/C++中volatile关键字「建议收藏」

    详解C/C++中volatile关键字「建议收藏」一、volatile介绍volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:这段…

    2022年6月1日
    26
  • Hive 时间日期处理总结

    Hive 时间日期处理总结

    2021年11月26日
    46
  • 下载jieba 库[通俗易懂]

    下载jieba 库[通俗易懂]步骤:1.打开命令行2.联网3.在C:\Users\User>后面加语句 pipinstalljieba形成 C:\Users\User>pipinstalljieba然后按回车,然后就开始安装在最后一行出现Successfullyinstalledjieba-0.39 证明安装成功  PS由于我们用pip来安装的jieba库嘛…

    2022年9月21日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号