Roop|AI快速换脸技术使用以及部署教程
最近AI实时换脸比较火,有人用roop来搞网络诈骗,本站本次介绍一下该软件项目的安装部署教程,希望大家学会之后不要被骗,更不要尝试去骗别人。
使用该软件,您可以将一段视频中的人脸替换成您选择的人脸,只需要一个所需人脸的图像,无需数据集和训练。
更新说明
现在Roop已停更,如果你想使用换脸功能,那么可以考虑查看Roop的升级版,下面是FaceFusion的升级版链接。
免责声明
在使用他人面部图像前,用户必须得到相关人士的同意,并在发布内容时不得隐瞒它是深度伪造。本站不对最终用户的恶意行为负责。
为了防止滥用,它内置了一个检查程序,防止该程序用于不当媒体。
未来计划
- 提高结果中面部的质量
- 在整个视频中替换选择性面部
- 支持替换多个面部
项目仓库
GitHub:S0MD3V/ROOP:一键式深度伪造(换脸) (github.com)
前置条件
在执行项目安装之前,我们还需要安装Git
和Conda
,还有FFMpeg
,如果您的电脑还未安装这几个软件,请先根据本站所给出的教程安装。
Windows系统安装Git请参阅此文章:
Windows系统安装Conda请参阅此文章:
Windows系统安装FFMpeg请参阅此文章:
Visual Studio
在安装之前我们还需要下载Visual Studio,
下载地址:Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com)
下载并安装Visual Studio 2022
时,只需要勾选通过 Windows 平台开发
项,然后点击安装
,等待完成即可。
网络问题
在安装过程中,你可能即便开启了魔法上网也无法下载一些编程依赖库,关于魔法上网的相关配置问题不方便在站内讲解,请前往查看【魔法上网】的教程内容。
安装教程
如果您是初学者,对于命令行不太理解,那么请按下键盘上的Win键+R键
后,在弹出的新窗口内输入CMD并按下回车,打开CMD窗口,按顺序执行如下的每一条命令。
首先我们需要确认一个工作目录,用来存放roop
的相关环境依赖文件。本站所选择的目录为D盘的根目录下openai.wiki
文件夹,完整路径为:D:\openai.wiki
。
检测D盘
是否在openai.wiki
目录,没有则创建该文件夹。
if not exist D:\openai.wiki mkdir D:\openai.wiki
强制切换工作路径为D盘的openai.wiki\roop
文件夹。
cd /d D:\openai.wiki
拉取Github仓库文件夹,将下载至openai.wiki
文件夹。
git clone https://github.com/s0md3v/roop.git
如果您无法完成此步骤,执行后报错或者无法下载,可以下载该文件将其解压至D:\openai.wiki
即可。
环境部署
在CMD中执行如下命令,强制切换至roop的项目目录。
cd /d D:\openai.wiki\roop
在CMD中执行下面的命令行,创建Conda虚拟环境至该项目的目录中,方便日后重装系统也能够正常使用,无需重新部署环境。
conda create -y -p D:\openai.wiki\roop\ENV python=3.9
初始化Conda环境,避免后续可能报错。
conda init cmd.exe
激活已创建的Conda环境,这样我们可以将我们后续所需要的所有环境依赖都安装至此环境下。
conda activate D:\openai.wiki\roop\ENV
执行如下命令,安装访项目的相关依赖库。
pip install -r requirements.txt
图形加速
其实目前为止,你已经可以正常运行了,但速度会非常慢。如果您有一张好的GPU,你可以按照此处的教程安装GPU加速。
以下是针对各显卡安装图形加速的方法,请根据自身系统进行选择。
在你确认自己的显卡型号之后,在CMD中按顺序执行如下代码即可。
英伟达
- CUDA|Windows安装教程 – openAI
- cuDNN|Windows安装教程 – openAI
pip uninstall onnxruntime onnxruntime-gpu
pip install torch torchvision torchaudio --force-reinstall --index-url https://download.pytorch.org/whl/cu118
pip install onnxruntime-gpu
AMD
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2
pip uninstall onnxruntime
git clone https://github.com/microsoft/onnxruntime && cd onnxruntime
./build.sh --config Release --build_wheel --update --build --parallel --cmake_extra_defines CMAKE_PREFIX_PATH=/opt/rocm/lib/cmake ONNXRUNTIME_VERSION=$ONNXRUNTIME_VERSION onnxruntime_BUILD_UNIT_TESTS=off --use_rocm --rocm_home=/opt/rocm
pip install build/Linux/Release/dist/*.whl
苹果电脑
pip install onnxruntime-silicon
英特尔
pip uninstall onnxruntime
- 安装名为 OpenVINO 的英特尔专用
onnxruntime
模型下载
关于此项目的模型,本站已为您下载好,并提供了国内免会员的网盘下载地址。
下载之后,将该模型移动至roop项目的根目录下即可。
运行方式
在以后每次运行该项目时,只需要先激活Conda环境,然后运行启动文件即可。
在CMD中执行如下命令,强制切换至roop的项目目录。
cd /d D:\openai.wiki\roop
激活已创建的Conda环境,这样我们可以将我们后续所需要的所有环境依赖都安装至此环境下。
conda activate D:\openai.wiki\roop\ENV
执行如下代码,运行roop的GUI界面。
python run.py
使用教程
当我们完成上述步骤中执行python run.py
代码后,将会自动弹出如下界面。
以下是关于各按钮的功能描述:
- Select a face
- 选择面部图片
- Select a target
- 选择需要替换的视频
- Keep frames dir
- 保持框架目录
- Limit FPS to 30
- 将 FPS 限制为 30
- Process all faces in frame
- 处理帧中的所有面孔
- Start
- 开始
- Preview
- 预览
我们需要做的其实非常简单,那就是先点击Select a face
按钮,这会自动弹出一个文件选择的窗口,我们选择一张人物图片
即可,这张图片将会做为替换的素材。
然后点击Select a target
按钮,这会自动弹出一个文件选择的窗口,我们选择一个包含人物的视频,这个视频为被替换面部的视频
。
其它参数保持默认即可,然后点击Start按钮,即可自动开始处理视频了。
命令行参数
以下是额外的命令行参数,一般不需要调整,忽略此部分内容即可。
选项: -h,--help 显示此帮助信息并退出 -f SOURCE_IMG,--face SOURCE_IMG 使用此面部 -t TARGET_PATH,--target TARGET_PATH 替换此面部 -o OUTPUT_FILE,--output OUTPUT_FILE 将输出保存到此文件中 --keep-fps 保持原始fps --keep-frames 保留帧目录 --all-faces 交换帧中的所有面部 --max-memory MAX_MEMORY 要使用的最大RAM量(以GB为单位) --cpu-cores CPU_CORES 要使用的CPU核心数 --gpu-threads GPU_THREADS 要用于GPU的线程数 --gpu-vendor {apple,amd,intel,nvidia} 选择您的GPU供应商
寻找CLI模式?使用-f / –face参数将使程序进入CLI模式。
效果示例
本次示例中我们使用的角色图像都是同一张,所以单独拿出来吧。
示例一
效果极差,大面积的马赛克、闪烁、低画质。
示例二
这个效果还算看的过去,但也并不算近乎于完美,有非常大的进步空间。
总结
值得说明的一点是,我们可以看到两个视频的最终处理效果天差地别,这个原因出在哪里?
本站最开始只是随便挑选了一个视频进行替换,后面也换了几个,但是效果都非常不好。于是研究了一下其它人替换的视频,发现了一个规律,那就是所有被替换的视频素材都非常非常暗。于是站长找了一个视频趋向于黑白,且光线并不是特别好的视频进行测试,发现效果会好很多。
可见这个技术目前还并不是特别完善,远不如【FaceSWAP】的替换效果,但重在操作简单,需要的素材比较少,非常轻量化。
看来现在大部分博主真的很可恶啊,明明不完美,但是他会为了热度而不说这个技术到底怎么样,只告诉你这个怎么怎么厉害,并不会告诉你这个东西的弊端以及限制。
大佬魔法上网那个,咋判断自己是CMD还是Powershell窗口呢
@张疾风 用的是秋叶大佬的部署包
@张疾风 一键包可能存在各种各样的问题,所以我这里没有给出。
@张疾风 一般来说,都是CMD,Powershell不用理会。
@PhiltreX 了解
大佬魔法上网那个,怎么判断自己是CMD还是Powershell窗口呢
谢谢站长的教程。我按照教程走下来输出成功了,但是用GPU输出的时候会有两行报错:
[h264 @ 000002215c4611c0] decoder->cvdl->cuvidCreateDecoder(&decoder->decoder, params) failed -> CUDA_ERROR_INVALID_VALUE: invalid argument
[h264 @ 000002215c4611c0] Failed setup for format cuda: hwaccel initialisation returned error.
不直到是不是这个原因,导致我用GPU输出的时间和CPU差不多。
我的显卡是3060,CPU是12代I7。
希望能得到站长的解答,万分感谢。
@Jie CUDA驱动好像没装对
大佬,按照你的教程走下来,CPU和显卡都可以输出。但是两者用时非常接近。我的CPU是I7-12700H,显卡是3060,一段1分钟左右的视频输出,分别用时36分钟和28分钟。
用python run.py –gpu-vendor nvidia启动时,会出现以下报错:
[h264 @ 000002215c4611c0] decoder->cvdl->cuvidCreateDecoder(&decoder->decoder, params) failed -> CUDA_ERROR_INVALID_VALUE: invalid argument
[h264 @ 000002215c4611c0] Failed setup for format cuda: hwaccel initialisation returned error.
请问是什么原因造成的,该如何修改呢?
你好 在执行这一步的时候出错了 “执行如下命令,安装访项目的相关依赖库。
pip install -r requirements.txt” 报错提示“ERROR: Could not open requirements file: [Errno 2] No such file or directory: ‘requirements.txt” 请问如何解决
你好 按照教程下来在环境部署这一步遇到了问题 具体问题如下 希望有解决的办法 在环境部署的这一步 “执行如下命令,安装访项目的相关依赖库。
pip install -r requirements.txt” 在输入指令后出现红色字体提示报错 报错信息如下:“ERROR: Could not open requirements file: [Errno 2] No such file or directory: ‘requirements.txt’”请问如何解决
@摄绘人 将roopmain的文件放在roop根目录即可
(E:\roop\ENV) E:\roop>python run.py
Traceback (most recent call last):
File “E:\roop\run.py”, line 3, in
from roop import core
File “E:\roop\roop\core.py”, line 13, in
import psutil
ModuleNotFoundError: No module named ‘psutil’
大佬这是什么问题
@kiwi running build_ext
building ‘insightface.thirdparty.face3d.mesh.cython.mesh_core_cython’ extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for insightface
Failed to build insightface
ERROR: Could not build wheels for insightface, which is required to install pyproject.toml-based projects
还装报错
报这个错误奇怪
Exception in thread Thread-5:
Traceback (most recent call last):
File “D:\AI\roop\ENV\lib\threading.py”, line 980, in _bootstrap_inner
self.run()
File “D:\AI\roop\ENV\lib\threading.py”, line 917, in run
self._target(*self._args, **self._kwargs)
File “D:\AI\roop\roop\ui.py”, line 109, in
set_preview_handler(lambda: preview_thread(lambda: test_preview(create_test_preview)))
File “D:\AI\roop\roop\ui.py”, line 103, in test_preview
frame = create_test_preview(preview_frame_slider.get())
File “D:\AI\roop\roop\core.py”, line 248, in create_test_preview
get_face_single(cv2.imread(args.source_img)),
File “D:\AI\roop\roop\analyser.py”, line 16, in get_face_single
face = get_face_analyser().get(img_data)
File “D:\AI\roop\ENV\lib\site-packages\insightface\app\face_analysis.py”, line 59, in get
bboxes, kpss = self.det_model.detect(img,
File “D:\AI\roop\ENV\lib\site-packages\insightface\model_zoo\retinaface.py”, line 211, in detect
im_ratio = float(img.shape[0]) / img.shape[1]
AttributeError: ‘NoneType’ object has no attribute ‘shape’
[ WARN:6@214.051] global loadsave.cpp:244 cv::findDecoder imread_(‘F:/鏂囦欢/澶囦唤/1111/1111/寰俊鎴浘_20230520003909.jpg’): can’t open/read file: check file path/integrity
Exception in thread Thread-6:
Traceback (most recent call last):
File “D:\AI\roop\ENV\lib\threading.py”, line 980, in _bootstrap_inner
self.run()
File “D:\AI\roop\ENV\lib\threading.py”, line 917, in run
self._target(*self._args, **self._kwargs)
File “D:\AI\roop\roop\ui.py”, line 304, in
start_button = create_button(window, “Start”, lambda: [save_file(save_file_handler, target_path.get()), preview_thread(lambda: start(update_preview))])
File “D:\AI\roop\roop\core.py”, line 174, in start
test_face = get_face_single(cv2.imread(args.source_img))
File “D:\AI\roop\roop\analyser.py”, line 16, in get_face_single
face = get_face_analyser().get(img_data)
File “D:\AI\roop\ENV\lib\site-packages\insightface\app\face_analysis.py”, line 59, in get
bboxes, kpss = self.det_model.detect(img,
File “D:\AI\roop\ENV\lib\site-packages\insightface\model_zoo\retinaface.py”, line 211, in detect
im_ratio = float(img.shape[0]) / img.shape[1]
AttributeError: ‘NoneType’ object has no attribute ‘shape’
[ WARN:7@217.364] global loadsave.cpp:244 cv::findDecoder imread_(‘F:/鏂囦欢/澶囦唤/1111/1111/寰俊鎴浘_20230520003909.jpg’): can’t open/read file: check file path/integrity
Exception in thread Thread-7:
Traceback (most recent call last):
File “D:\AI\roop\ENV\lib\threading.py”, line 980, in _bootstrap_inner
self.run()
File “D:\AI\roop\ENV\lib\threading.py”, line 917, in run
self._target(*self._args, **self._kwargs)
File “D:\AI\roop\roop\ui.py”, line 304, in
start_button = create_button(window, “Start”, lambda: [save_file(save_file_handler, target_path.get()), preview_thread(lambda: start(update_preview))])
File “D:\AI\roop\roop\core.py”, line 174, in start
test_face = get_face_single(cv2.imread(args.source_img))
File “D:\AI\roop\roop\analyser.py”, line 16, in get_face_single
face = get_face_analyser().get(img_data)
File “D:\AI\roop\ENV\lib\site-packages\insightface\app\face_analysis.py”, line 59, in get
bboxes, kpss = self.det_model.detect(img,
File “D:\AI\roop\ENV\lib\site-packages\insightface\model_zoo\retinaface.py”, line 211, in detect
im_ratio = float(img.shape[0]) / img.shape[1]
AttributeError: ‘NoneType’ object has no attribute ‘shape’
Preparing metadata (setup.py) … –
到这里怎么搞
非常优秀的文章