一键AI换脸,支持图片和视频动态换脸

1,950 阅读6分钟

随着AI技术的普及,AI相关项目越来越受关注和追捧,其中AI换脸无疑是最受欢迎的应用之一。我也看到了很多优秀的项目和工具推荐,今天要介绍的是Roop这个项目,话不多说先上我这边替换的效果。

image.png 整体效果还是不错的,主要是一键更换,不用做训练。

一、Roop简介

Roop是一个由Github用户s0md3v开发和维护的开源一键式人脸替换工具,目前最新稳定版本为1.3.2。

image2.png 主要功能和特点

1、支持单张、多张图片以及视频的人脸替换处理。

2、配备简单易用的图形界面,一键式操作即可完成替换。

3、开源且免费。

4、支持Windows、Mac、Linux等多个操作系统。

5、硬件要求低,支持CPU或NVIDIA显卡运行,最低内存要求16G。

6、可离线运行。

……

项目地址: github.com/s0md3v/roop

二、Roop安装环境准备

2.1 安装Python

Roop是基于Python实现的,因此无论使用什么操作系统,都需要先安装Python环境。建议安装3.10.x及以上版本。这里不详细介绍安装步骤,你可以直接前往官网下载对应系统的版本进行安装。记得在安装过程中将Python添加到系统环境变量中。如有任何问题,欢迎留言或私信咨询~

Python下载地址:www.python.org/downloads/

目前我安装的版本是3.10.11

image3.png

2.2 安装Git

我们需要使用git来获取Roop代码,这样在有新版本更新时,可以通过命令方便地拉取最新代码。

关于Git的安装,这里不做详细介绍。你只需要从Git官方网站下载软件并安装,保持所有配置选项为默认值安装即可。如果安装后在命令窗口找不到git命令,请检查Git是否已添加到系统环境变量中。

Git下载地址:git-scm.com/downloads

2.3 安装FFmpeg

安装Roop前需要安装FFmpeg(建议版本6.0及以上)。FFmpeg有多种安装方式,你可以选择最适合自己的方式安装。无论选择哪种安装方式,都必须将FFmpeg添加到系统环境变量中。

FFmpeg下载地址:ffmpeg.org/download.ht…

image4.png

2.4 安装Visual studio 2022(Window用户)

如果你是Linux/Mac用户,这一步可跳过。 通过安装Visual Studio 2022来配置C++环境,这样可以确保后续项目顺利编译,避免遇到问题。如果你已经安装了C++环境,但在编译过程中出现C++相关错误,建议先卸载,然后按照本步骤重新安装。

visual studio 2022下载地址:visualstudio.microsoft.com/zh-hans/dow…

image5.png 下载安装后,启动visual studio 2022,在顶部菜单栏中找到工具 → 获取工具与功能,在打开窗口中找到使用C++的桌面开发,勾选后在右侧根据自己的环境安装对应的SDK版本。

image6.png

安装完成后,建议重启一次电脑。

到这里基本环境就已经配置好了,我们就可以使用CPU来运行roop了。如果你想用显卡进行GPU加速,就还需要安装CUDA11.8.0.

2.5 CUDA安装

如果你是没有英伟达显卡4G以上,或者不需要进行GPU加速的,这一步可跳过。

cuda11.8下载地址:developer.nvidia.com/cuda-11-8-0…

image7.png

三、Roop安装

整个Roop的安装我们可以完整的按照项目给出的教程一步一步进行。官方文档:github.com/s0md3v/roop…

3.1 下载Roop代码

这里推荐使用git命令直接clone下源码进行编译安装,使用命令:

git clone https://github.com/s0md3v/roop

3.2 创建并激活虚拟环境

推荐通过虚拟环境进行项目编译,安装依赖包,使用虚拟环境的优势:

  • 可以避免与其他项目的依赖包冲突
  • 如果依赖包安装失败,只需删除虚拟环境并重新创建,即可重新开始安装

创建并激活虚拟环境命令:

// 在项目根目录执行 
// 创建虚拟环境 
python -m venv venv 

// 激活虚拟环境 
call venv\Scripts\active.bat

3.3 安装依赖包

安装依赖包,由于项目已经将依赖信息都记录在了requirements.txt文件,我们直接安装就行,具体命令如下:

pip install -r requirements.txt

image8.png

需要注意的是,这一步经常有人因为各种原因报错,需要根据错误信息针对性解决。具体问题如何解决这里不做详细说明,有问题可以留言、评论私我交流。

小提示:

roop的requirements.txt默认的数据源是pypi.org/simple的,国内一般访问比较慢,为了提高依赖包安装速度,可以切换清华、阿里等源,上述截图中我用的就是阿里的。

image.png

3.4 运行Roop

如果仅仅使用CPU进行图片或者视频处理,可以使用以下命令:

python run.py

如果要使用GPU进行图片或者视频处理,可以使用以下命令:

python run.py --execution-provider cuda

如果要提高更换后的图片或者视频清晰度,可以使用以下命令:

//使用CPU 
python run.py --frame-processor face_swapper face_enhancer 

// 使用GPU 
python run.py --execution-provider cuda --frame-processor face_swapper face_enhancer

如果处理后的视频出现人脸闪烁情况,可以使用以下命令优化:

//使用CPU,其中1.5可以根据实际情况调节,默认0.85 
python run.py --frame-processor face_swapper face_enhancer --similar-face-distance 1.5 

// 使用GPU,其中1.5可以根据实际情况调节,默认0.85 
python run.py --execution-provider cuda --frame-processor face_swapper face_enhancer --similar-face-distance 1.5

如果视频中存在多张人脸,可以根据临时文件夹中的图片中的人脸,进行指定人脸替换。使用命令如下:

//使用CPU,2代表人脸在图片中从右往左数第几张脸的位置,从0开始数,10代表临时文件中图片的编号名称 
python run.py --reference-face-position 2 --reference-frame-number 10 

// 使用GPU,2代表人脸在图片中从右往左数第几张脸的位置,从0开始数,10代表临时文件中图片的编号名称 
python run.py --execution-provider cuda --reference-face-position 2 --reference-frame-number 10

image9.png

四、声明

相关技术与工具,仅用于学习,请合理正确使用。如需使用他人面部信息时,请正确征得相关人士的同意,本账号不对恶意使用行为负责。 同时为了防止恶意使用,程序中也存在一定的检查功能,防止该程序用于不当媒体。

五、最后

欢迎大家一起来交流更多AI玩法,如果你有感兴趣的方向,也欢迎留言、私信交流学习~