1017
关于Ai换脸开源项目roop源码的研究
乐果 发表于 2024 年 03 月 21 日 标签:ai
前几天的折腾中,终于把基于英伟达 GPU
的 CUDA
计算引擎推理模型环境搭建起来,
相比 CPU
一下子快了不少。
在解读 roop
项目源码时,发现它其实引用了一个开源人脸识别库 InsightFace
,
查资料发现背后的团队竟然是国人主导的,并且这个开源项目在github上的关注度非常高,
突然很惊讶,原来国内的人脸识别技术还是全球领先的。
分析源码,整个换脸过程大概分为几个步骤:
- 将视频按帧数要求切成图片
- 对每一张图片进行处理:检测出其中的人脸及其特征,等待程模型推理;在该阶段使用经典的面部处理库insightface进行面部的检测和特征识别;
- 发现存在的源脸和需要更换的目标脸后,针对每一帧进行换脸模型(Inswapper128)的推理,并且引入图像处理(插值&缝合边缘的高斯模糊&…)和面部修复模型(GFPGAN/CodeFormer)来提高最终产生的图像质量;
- 用ffmpeg工具命令将换脸后的图片合成成视频;
roop
项目的换脸实际测试效果确实很不错,如下截图:
因此最关键的还是经典的面部处理库 InsightFace
的使用,在代码初始运行是,它需要下载
算法模型文件,模型文件如下:
用法用例如下所示:
from insightface.app import FaceAnalysis
app = FaceAnalysis(name='buffalo_l', root='算法模型文件夹路径', providers=["CPUExecutionProvider"], allowed_modules=)
app.prepare(ctx_id=0, det_thresh=0.75, det_size=(640, 640))
ret = app.get(img, max_num=10)
乐果 发表于 2024 年 03 月 21 日 标签:ai