Roop 是一个强大的一键换脸工具,允许用户在视频中替换面部,只需要目标面部的一张图片,无需数据集,无需训练。
相对于之前的 Simswap 来说效果要好很多,不过需要注意的是没有授权不要商用。
文章目录
- 环境搭建
- 使用方法
- 基础功能
- 常用处理生产方法
- 画面预览
- 错误解答
环境搭建
创建虚拟环境。
conda create -n myenv python=3.10.6
项目克隆。
git clone https://github.com/s0md3v/roop.git
激活虚拟环境并安装依赖,补充安装显卡依赖。
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
进入项目后执行命令启动。
python run.py
此时会自动下载各种模型,对于模型不能下载的问题请看最后错误解答部分。
使用方法
基础功能
启动命令之后会看到下面的操作界面
这里分别解释一下他们的作用
- select face 选择要替换的人脸照片
- select targen 选择要被替换的视频
- Keey target fps 和被替换的视频保持一致的帧率
- Keep temporary frames 是否保留替换过程中的图片
- Skip target audio 是否跳过音频(一般不使用)
- Many faces 是否有多张脸(一般不使用)
点击 Preview 预览按钮会弹出预览界面,默认抓取视频中出现的第一个人物的脸部进行替换。
也可以移动视频预览的进度条到想替换的人脸片段,使用方向键 上
或者 下
进行替换。这个是之前锁定的华仔,现在换成了梁仔。
选择好要替换的人物直接点开始就可以了,检查一下显存使用和数据帧生成的情况。
最后会在文件夹目录下生成一个temp.mp4的文件,就是换脸后合成的视频了,发现视频没有声音,画面换的人脸还比较模糊,带有音频的文件保存在start启动之前的路径位置。
常用处理生产方法
只用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
指定帧识别人脸并替换,找到指定的帧数,位置人脸指定是从右向左从0开始计算。
python run.py --execution-provider cuda --reference-face-position 3 --reference-frame-number 166 --similar-face-distance 1.5
画面预览
超分后的画面预览。
错误解答
问题 urllib.error.HTTPError: HTTP Error 401: Unauthorized
由于下载inswapper_128.onnx'
文件没有权限导致的,即没有权限访问蓝色部分网址导致的。这个要自己搜索一下inswapper_128.onnx
文件并下载保存到项目的models
目录下。
问题 http.client.RemoteDisconnected: Remote end closed connection without response
由于下载GFPGANv1.4.pth
没有权限导致的,可以尝试使用一些上网方法下载,或者直接使用别的项目复制过来。如果能正常下载的话模型会自动下载到项目的models
文件夹下。
同时还有可能出现的问题模型还有detection_Resnet50_Final.pth
、parsing_parsenet.pth
处理方法都是一样的,上述模型都是用于画面超分使用的。
问题 Could not locate zlibwapi.dll. Please make sure it is in your library path!
是由于cuda缺少一些依赖文件。
自行百度搜索zlibwapi.dll
会得到一个压缩包自行移动文件到你的NVIDIA GPU Computing Toolkit\CUDA
目录下。