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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 功能测试框架

    功能测试框架测试用例的编写需要按照一定的思路进行,而不是想到哪写到哪,一般测试机制成熟的公司都会有公司自己自定义的测试用例模板,以及一整套的测试流程关注点,当然我们自己在测试生涯中也应当积累一套自己的测试框架,所有功能性的测试都可以依据框架的思路来进行,达到事半功倍的效果。功能测试框架可以包括:界面友好性测试、功能测试、链接测试、容错测试、稳定性测试、常规性能测试、配置测试、算法测试等等。1.1.1界面友好性测试1.风格、样式、颜色是否协调2.界面布局是否整齐、协调(保证全部显示出来的,尽量…

    2022年7月13日
    18
  • 安装HAXM「建议收藏」

    安装HAXM「建议收藏」老师给的是在网上下载HAXM。但事实上打开这里你会发现Android已经自动下载了HAXM因此你要做的是找到HAXM路径,然后继续安装它。我的路径是C:\Users\DELL\AppData\Local\Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager…

    2022年6月28日
    101
  • 【C/C++面试必备】volatile 关键字

    【C/C++面试必备】volatile 关键字????作者:Linux猿????简介:CSDN博客专家????,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!????关注专栏:C/C++面试通关集锦(优质好文持续更新中……)????本文来讲解一下C/C++中的关键字volatile。在日常的使用中很少使用到,但是,在面试中经常被提起,下面具体来看一下。volatile的作用是什么呢?volatile意思是易变的,是一种类型修饰符,在C/C++中用来阻止编译器因误认某段代码无法被代码本身所改变,而造成的

    2022年7月27日
    4
  • docker dockerfile详解_docker常用命令

    docker dockerfile详解_docker常用命令前言Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列

    2022年7月29日
    3
  • PCIe扫盲——Flow Control基础(一)

    PCIe扫盲——Flow Control基础(一)FlowControl即流量控制,这一概念起源于网络通信中。PCIe总线采用FlowControl的目的是,保证发送端的PCIe设备永远不会发送接收端的PCIe设备不能接收的TLP(事务层包)。也就是说,发送端在发送前可以通过FlowControl机制知道接收端能否接收即将发送的TLP。在PCI总线中,并没有FlowControl这样的机制,因此发送端并不知道当前时刻,接收端能否接收对应的TLP。因此,发送端只能先尝试发送,期间可能会被插入多个等待周期(接收设备尚未就绪等原因),甚至是重发(Re

    2022年5月15日
    28
  • Jlink或者stlink用于SWD接口下载程序「建议收藏」

    Jlink或者stlink用于SWD接口下载程序「建议收藏」最近要使用stm32f103c8t6最小系统板,直接ISP串口下载程序太麻烦,就想着使用swd接口来调试。结果:通过SWD接口下载程序成功,但调试失败,还不知原因,会的的人麻烦交流一下。SWD接口:3.3VDIO(数据)CLK(时钟)GND1.首先声明jlink和stlink都有jtag和swd调试功能。jlink接口如下:如图,我使用的就是VCC…

    2022年4月25日
    94

发表回复

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

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