您现在的位置是:首页 >技术杂谈 >单张图片一键换脸(github爆火工程——roop)网站首页技术杂谈

单张图片一键换脸(github爆火工程——roop)

北洋树人 2024-09-08 00:01:03
简介单张图片一键换脸(github爆火工程——roop)

roop 单张图片一键换脸

工程简介

在这里插入图片描述

该工程实现的功能为:提供单张源人脸图像,可实现一键替换目标视频中的人脸,输出替换人脸后的视频,替换前后效果见上述动图。
在这里插入图片描述

该工程基于tkinter库设计了简洁的GUI界面,用以选取源人脸图像和目标视频,操作简介。
程序的使用有两种方式:CPU方式和GPU方式。CPU方式环境安装简单,但运行较慢,GPU方式环境安装相对而言较为复杂,但运行速度非常之快。
项目地址:https://github.com/s0md3v/roop

免责声明

本文只对roop工程进行介绍,不承担任何责任,请读者合理合法的使用工程。以下为源工程的免责声明:
比这更好的 deepfake 软件已经存在,这只是我为了学习 AI 而创建的一个业余项目。用户在使用自己的脸之前必须征得相关人员的同意,并且在网上发布内容时不得隐瞒这是一个深度造假的事实。我不对最终用户的恶意行为负责。
为了防止误用,它有一个内置的检查功能,可以防止程序在不合适的媒体上运行。

程序安装

本文只介绍Windows系统下的程序的安装与使用,Linux和MacOS用户请参考源工程。

CPU版本

1.安装python3.10以上,需要安装有python的pip工具。建议采用conda创建虚拟环境进行安装。
2.安装ffmpeg多媒体处理工具,并设置环境变量。
3.安装Visual Studio(包括桌面开发C ++),尽可能安装较为新的版本(本人测试VS2019可以)。
4. 下载仓库:https://github.com/s0md3v/roop,进入roop目录并执行命令 pip install -r requirements.txt 安装所需的依赖库。(需要能够访问github,如果不能访问可从文末的资源包中免费下载)
5. 从以下网站中下载此文件并将其保存在roop目录中。如果文件名不是inswapper_128.onnx,请将其重命名。镜像1 镜像2 镜像3 镜像4
(访问上述网站需要魔法,也可在我提供的资源包中获取inswapper_128.onnx。获取链接见文末,免费获取。)

GPU版本

本文仅针对Nvidia显卡的用户,A卡请参考源工程。
1.安装CPU版本所需要的工具环境(见上一小节)。
2.安装CUDA和对应的CUDNN。主要CUDA和CUDNN一定要匹配。
3.安装GPU版本的pytorch和onnxruntime-gpu。注意pytorch的安装需要和CUDA版本对应。

pip uninstall onnxruntime onnxruntime-gpu
pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
pip install onnxruntime-gpu

程序运行

1.运行python程序
CPU版本运行:

python run.py

GPU版本运行:添加gpu的选项

python run.py --gpu

除了–gpu选项,程序还提供了其他的选项。

-h, --help:显示帮助信息并退出。
-f SOURCE_IMG, --face SOURCE_IMG:指定要替换的人脸图片的路径。
-t TARGET_PATH, --target TARGET_PATH:指定要被替换的目标图片或视频的路径。
-o OUTPUT_FILE, --output OUTPUT_FILE:指定输出文件的路径。
--gpu:使用 GPU 进行加速处理。
--keep-fps:保持原始视频的帧率。
--keep-frames:保留处理过程中生成的帧的目录。
--max-memory MAX_MEMORY:指定程序可以使用的最大内存(以 GB 为单位)。
--max-cores CORES_COUNT:指定程序可以使用的最大 CPU 核心数。
--all-faces:替换视频中的所有人脸。

注意:这里建议选择–max-memory和–max-cores两个选项,否则可能导致内存或者CPU核心爆掉,出现页面文件太小的error。其中–max-memory代表制定程序可以使用的最大内存(以 GB 为单位)我选用的是8,–max-cores代表程序可以使用的最大 CPU 核心数,我采用的是4。
例如:

python run.py --gpu --max-memory 8 --max-cores 4

2.提供GUI界面进行操作
在这里插入图片描述
点击Select a face 选择一张人脸图像,再点击Select a target选择一段视频,点击Start选择合成视频的输出文件夹,等待程序运行完成,即可获得换脸后的视频。
3.踩坑记录
在程序的运行过程中会自动下载一些文件,但是可能会出现许可证允许、网速太慢等问题导致下载失败。
如果下载失败,可从文末的资源包中下载后放到制指定的文件夹中。

  • buffalo_l.zip:解压,将*.onnx文件放入C:Users你的用户名.insightfacemodelsuffalo_l目录中,该目录需要在运行程序后自动生成。
  • open_nsfw_weights.h5:放入C:Users你的用户名.opennsfw2weights目录中

资源包

链接:https://pan.baidu.com/s/1jtDz5ftf3f_C3_x4u3pCvg
提取码:45te
资源列表:

1. roop-main.zip:工程源文件,解压后进行运行。
2. inswapper_128.onnx:需要放入roop目录中。
3. buffalo_l.zip:程序运行时下载的文件,需解压后放入C:Users你的用户名.insightfacemodelsbuffalo_l目录中
4. open_nsfw_weights.h5:程序运行时下载的文件,放入C:Users你的用户名.opennsfw2weights目录中
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。