roop 介绍
上面介绍的一键换脸项目叫做Roop,项目官方介绍如下:你只需要一张所需脸部的图像,没有数据集,无需训练,你就可以将拍摄视频其中的面孔替换为你选择的面孔。该工具旨在为快速发展的人工智能生成媒体行业做出富有成效的贡献,它将帮助艺术家完成诸如动画自定义角色或使用角色作为服装模型等任务。本地安装Roop,官方给出了2种选择,基于CPU安装或者基于GPU安装。
1.roop是新开源了一个单图就可以进行视频换脸的项目,只需要一张所需面部的图像。不需要数据集,不需要训练。
2.大概的测试了一下,正脸换脸效果还不错,融合也比较自然。但如果人脸比较大,最终换出的效果可能会有些模糊。侧脸部分的幅度不宜过大,否则会出现人脸乱飘的情况。在多人场景下,也容易出现混乱。
3.使用简单,在处理单人视频和单人图像还是的换脸效果还是可以的,融合得也不错,适合制作一些小视频或单人图像。
roop 安装
获取代码,
sudo apt install git -y git clone --depth 1 https://github.com/s0md3v/roop.git
安装依赖,
cd roop pip install -r requirements.txt # 如遇错误,可依提示。例如: # pip install -r requirements.txt --use-pep517 # 如遇 dependency conflict,可修改依赖版本。例如: # numpy>=1.23.5 # 若配置镜像 pip config set global.index-url http://mirrors.aliyun.com/pypi/simple pip config set install.trusted-host mirrors.aliyun.com cat ~/.config/pip/pip.conf
其实到这里就可以直接运行如下代码进行视频换脸了,首次启动会下载529M的模型文件,目前使用的是CPU,如果你显卡不高不想折腾了的话可以开始体验了。但是我们继续折腾,去开启GPU显卡处理功能。
python run.py
安装CUDA
(1)这是NVIDIA显卡的操作步骤,其它显卡用不了,打开链接:https://developer.nvidia.com/cuda-11-8-0-download-archive,安装程序下载下来之后,直接双击运行安装即可,安装选项选择精简版,安装完成关闭窗口即可。
(2)安装依赖
还在打开Python虚拟环境的cmd窗口中依次输入如下命令并回车,安装依赖,一条命令执行完再运行下一条命令。
pip uninstall onnxruntime onnxruntime-gpu pip install onnxruntime-gpu
然后再输入如下命令即可启动roop操作窗口进行视频换脸了,
python run.py –execution-provider cuda
左侧点击select a face按钮选择一张待使用的人脸,右侧按钮select a target选择待转换的视频,点击start按钮会提示选择输出视频路径,选择完毕后即可开始转换。
roop运行常用指令
只用CPU处理视频:python run.py
使用GPU处理视频:python run.py –execution-provider cuda
图片保存jpg格式 python run.py –execution-provider cuda –temp-frame-format jpg
视频高清化处理: python run.py –execution-provider cuda –temp-frame-format jpg –frame-processor face_swapper face_enhancer
处理脸部跳闪: python run.py –execution-provider cuda –temp-frame-format jpg –frame-processor face_swapper face_enhancer –similar-face-distance 1.5
指定帧识别人脸并替换:python run.py –execution-provider cuda –reference-face-position 3 –reference-frame-number 166 –similar-face-distance 1.5
其他参数
–temp-frame-format {jpg,png} 用于帧提取的图像格式
–temp-frame-quality [0-100] 用于帧提取的图像质量
–output-video-encoder {libx264,libx265,libvpx-vp9,h264_nvenc,hevc_nvenc} 用于输出视频的编码器
–output-video-quality [0-100] 用于输出视频的质量
–max-memory MAX_MEMORY 最大RAM量(单位:GB)
–execution-threads EXECUTION_THREADS 执行线程数量