Roop:单图换脸离线版软件包及使用方法!
①初始化
这个步骤主要是把一些辅助模型拷贝到对应的位置,如果你电脑有魔法,直接点“启动”也会自动下载。
既然是离线版,肯定要考虑到“局域网”用户,所以我想了个办法,先把东西放在压缩包里,点一下,会自动把文件放到指定位置。这个指定的位置就是你电脑的用户目录。
②启动
点击“启动.exe”就可以启动软件了。
点击之后,会先跳出黑色的命令窗口,等一会儿会跳出一个界面。跳不出来,那就是出问题了,可以反馈给我!
③选择图片和视频
界面出现后,就可以选①照片和②视频了。照片肯定是要选有人脸,清晰,完整,正面的图片(路径和文件名不要有中文,不要有中文,不要有中文)。最好选特征比较明显的人,换脸效果更明显。视频最好是不要整太大,先搞个720P,几十秒钟的练练手。如果要快速体验,可以用我放在demo里的素材。
界面上有两个参数可以设置,一般来说,不要动,用默认。
④开始换脸
设置和照片和视频之后,只要点击③Start 就可以开始了。点击之后会跳出一个窗口,让你选择换脸后的视频放在哪里。设置好存储路径之后,就真的开始处理了。处理过程中这个界面会卡死,命令窗口会有进度。
处理大概分了三个阶段,第一阶段是视频分割,然后处理,最后是合成。在处理阶段会把CPU资源占满,不管你多少的CPU都会爆卡,但是也不用担心CPU会嗝屁。
处理完成后,会看到”Video Saved as ….” 这里可以看到具体的保存路径。
⑤查看效果
通过事先的设置,或者最后的路径提示,找到视频,打开,就可以看到效果了。
换脸效果还是可以的,融合得也不错。就是人脸比较大的话看起来会有些模糊。用来做做小视频,或者搞笑视频,足够了。
侧脸部分,幅度不能太大,太大了会乱飘。多人的场景也会出现混乱,所以最好用来处理单人的视频。
相比DFL来说,操作真的是简单太多,制作也快了很多。但是论可玩性,效果上限,DFL依旧是换脸界的王者。
另外,我这次制作的是CPU版,理论上所有Windows系统的电脑都可以跑。我有测试过AMD和inter的CPU都可以。
GPU版本正在研究,我在3060 12G上能正常运行,但是3070 8G上却一直卡死,这个项目对系统资源的利用相当“残暴”。我看看有啥优化方式,等我搞明白了,再发布。
还有一个问题,roop刚上的时候是没有限制涩涩的,但是很快就加入了NSFW的检测。好多人问,在线脚本为啥不能换素材,就是这个原因。
你们这些lsp都暴露了。
其实这个很好解决,但是我公开发布好像不太合适。我思考一下要不要搞个“真男人” 版本!或者我就告诉你们怎么改…哈哈!
会提示找不到应用的对象是怎么回事
文件名,路径名用英文。
roop
不是在这里输入,是关注公众号“托尼不是塔克”,然后直接发送roop就可以了。
跑不动 显示nonetype object has no attribute
文件名,路径名,用英文。
[ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Exception during initialization: D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_call.cc:121 onnxruntime::CudaCall D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_call.cc:114 onnxruntime::CudaCall CUBLAS failure 3: CUBLAS_STATUS_ALLOC_FAILED ; GPU=0 ; hostname=LAPTOP-JPRFER6T ; file=D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_execution_provider.cc ; line=164 ; expr=cublasCreate(&cublas_handle_);
Processing: 24%|████████████████ | 39/160 [00:18<00:50, 2.37frame/s]2023-06-11 18:57:24.6427477 [E:onnxruntime:, inference_session.cc:1645 onnxruntime::InferenceSession::Initialize::::operator ()] Exception during initialization: D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_call.cc:121 onnxruntime::CudaCall D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_call.cc:114 onnxruntime::CudaCall CUBLAS failure 3: CUBLAS_STATUS_ALLOC_FAILED ; GPU=0 ; hostname=LAPTOP-JPRFER6T ; file=D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_execution_provider.cc ; line=164 ; expr=cublasCreate(&cublas_handle_);
[ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Exception during initialization: D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_call.cc:121 onnxruntime::CudaCall D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_call.cc:114 onnxruntime::CudaCall CUBLAS failure 3: CUBLAS_STATUS_ALLOC_FAILED ; GPU=0 ; hostname=LAPTOP-JPRFER6T ; file=D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_execution_provider.cc ; line=164 ; expr=cublasCreate(&cublas_handle_);
Processing: 25%|████████████████▌ | 40/160 [00:19<00:57, 2.09frame/s]
Stream map '1:a:0' matches no streams.
To ignore this, add a trailing '?' to the map.
大佬这是什么原因
显存不够大。
[ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Exception during initialization: D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_call.cc:121 onnxruntime::CudaCall D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_call.cc:114 onnxruntime::CudaCall CUBLAS failure 3: CUBLAS_STATUS_ALLOC_FAILED ; GPU=0 ; hostname=LAPTOP-JPRFER6T ; file=D:\a\_work\1\s\onnxruntime\core\providers\cuda\cuda_execution_provider.cc ; line=164 ; expr=cublasCreate(&cublas_handle_);
Processing: 12%|████████▎ | 20/160 [00:10<01:11, 1.94frame/s]
Stream map '1:a:0' matches no streams.
To ignore this, add a trailing '?' to the map. 请问这是什么原因
目测是显存显存不够,你看一下你的显卡是不是显存<8GB !
———-托尼不是塔克/tonyisstark.com————
启动中,请稍后…
Exception in thread Thread-1 ():
Traceback (most recent call last):
File “E:\roop\abcd\RoopGPU\RoopGPU_build\RoopGPU_build\bin\env\lib\threading.py”, line 1016, in _bootstrap_inner
self.run()
File “E:\roop\abcd\RoopGPU\RoopGPU_build\RoopGPU_build\bin\env\lib\threading.py”, line 953, in run
self._target(*self._args, **self._kwargs)
File “E:\roop\abcd\RoopGPU\RoopGPU_build\RoopGPU_build\bin\code\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 “E:\roop\abcd\RoopGPU\RoopGPU_build\RoopGPU_build\bin\code\roop\core.py”, line 174, in start
test_face = get_face_single(cv2.imread(args.source_img))
File “E:\roop\abcd\RoopGPU\RoopGPU_build\RoopGPU_build\bin\code\roop\analyser.py”, line 16, in get_face_single
face = get_face_analyser().get(img_data)
File “E:\roop\abcd\RoopGPU\RoopGPU_build\RoopGPU_build\bin\code\roop\analyser.py”, line 10, in get_face_analyser
FACE_ANALYSER = insightface.app.FaceAnalysis(name=’buffalo_l’, providers=roop.globals.providers)
File “E:\roop\abcd\RoopGPU\RoopGPU_build\RoopGPU_build\bin\env\lib\site-packages\insightface\app\face_analysis.py”, line 43, in __init__
assert ‘detection’ in self.models
AssertionError
请问这个问题怎么解决
multi_process_frame(source_path, frame_paths, process_frames, progress)
File “H:\RoopGPU_v1.0.1_build\bin\code\roop\processors\frame\core.py”, line 48, in multi_process_frame
future.result()
File “H:\RoopGPU_v1.0.1_build\bin\env\lib\concurrent\futures\_base.py”, line 458, in result
return self.__get_result()
File “H:\RoopGPU_v1.0.1_build\bin\env\lib\concurrent\futures\_base.py”, line 403, in __get_result
raise self._exception
File “H:\RoopGPU_v1.0.1_build\bin\env\lib\concurrent\futures\thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
File “H:\RoopGPU_v1.0.1_build\bin\code\roop\processors\frame\face_enhancer.py”, line 62, in process_frames
result = process_frame(None, temp_frame)
File “H:\RoopGPU_v1.0.1_build\bin\code\roop\processors\frame\face_enhancer.py”, line 55, in process_frame
temp_frame = enhance_face(temp_frame)
File “H:\RoopGPU_v1.0.1_build\bin\code\roop\processors\frame\face_enhancer.py”, line 45, in enhance_face
_, _, temp_frame = get_face_enhancer().enhance(
File “H:\RoopGPU_v1.0.1_build\bin\env\lib\site-packages\torch\utils\_contextlib.py”, line 115, in decorate_context
return func(*args, **kwargs)
File “H:\RoopGPU_v1.0.1_build\bin\env\lib\site-packages\gfpgan\utils.py”, line 111, in enhance
self.face_helper.get_face_landmarks_5(only_center_face=only_center_face, eye_dist_threshold=5)
File “H:\RoopGPU_v1.0.1_build\bin\env\lib\site-packages\facexlib\utils\face_restoration_helper.py”, line 139, in get_face_landmarks_5
bboxes = self.face_det.detect_faces(input_img, 0.97) * scale
File “H:\RoopGPU_v1.0.1_build\bin\env\lib\site-packages\facexlib\detection\retinaface.py”, line 203, in detect_faces
image = image – self.mean_tensor
RuntimeError: CUDA error: no kernel image is available for execution on the device
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
这个提示咋整用的CPU版本跑的, GT720 I5 9600K 32g内存
用CPU版也会提示CUDA么? 正常来说,这个提示只会出现在GPU版本才对。
GPT720配置不太够。
ImportError: dlopen(/Users/lancer/.local/lib/python3.10/site-packages/insightface/thirdparty/face3d/mesh/cython/mesh_core_cython.cpython-310-darwin.so, 0x0002): tried: ‘/Users/lancer/.local/lib/python3.10/site-packages/insightface/thirdparty/face3d/mesh/cython/mesh_core_cython.cpython-310-darwin.so’ (mach-o file, but is an incompatible architecture (have ‘x86_64’, need ‘arm64’)), ‘/System/Volumes/Preboot/Cryptexes/OS/Users/lancer/.local/lib/python3.10/site-packages/insightface/thirdparty/face3d/mesh/cython/mesh_core_cython.cpython-310-darwin.so’ (no such file), ‘/Users/lancer/.local/lib/python3.10/site-packages/insightface/thirdparty/face3d/mesh/cython/mesh_core_cython.cpython-310-darwin.so’ (mach-o file, but is an incompatible architecture (have ‘x86_64’, need ‘arm64’))
mac m1 conda env python310
提示说这个包需要在arm64上,但是现在这个是x86, 看下安装包的问题。
File “E:\anaconda\envs\deepfake2\lib\site-packages\setuptools\archive_util.py”, line 129, in _unpack_zipfile_obj
with open(target, ‘wb’) as f:
FileNotFoundError: [Errno 2] No such file or directory: ‘C:\\Users\\Administrator\\AppData\\Local\\Temp\\pip-install-ymrai5t6\\basicsr_d6309a425f2a4b03ad19d8a5f59ab7e9\\.eggs\\torch-2.0.1-py3.10-win-amd64.egg\\torch\\include\\ATen\\ops\\_fake_quantize_per_tensor_affine_cachemask_tensor_qparams_compositeexplicitautograd_dispatch.h’
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
有没有大佬能解释一下阿?在pip install -r requirements.txt中遇到的。我是用的anaconda prompt
安装的时候编译失败了,大概率找不到适合你电脑硬件或者软件版本的依赖包。
onnxruntime.capi.onnxruntime_pybind11_state.InvalidProtobuf: [ONNXRuntimeError] : 7 : INVALID_PROTOBUF : Load model from /root/.insightface/models/buffalo_l/1k3d68.onnx failed:Protobuf parsing failed.
TONY大佬,请问运行时提示这个是什么原因呢?
这个是模型加载失败了,应该是模型文件有点畏难而退。从新下载下。
roop
不是在这里,是在公众号:托尼不是塔克 上发送。