112

关于Ai换脸开源项目roop源码的研究

乐果   发表于   2024 年 03 月 21 日 标签:ai

前几天的折腾中,终于把基于英伟达 GPUCUDA 计算引擎推理模型环境搭建起来, 相比 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

0

文章评论