Skip to content

QingYuanQu/insightface

 
 

Repository files navigation

InsightFace学习文档

t1_output

安装

适用于 C++ 的 Visual Studio 生成工具

独立 MSVC 编译器、库和脚本

https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/

image-20251207105724695

准备虚拟环境

(base) PS C:\Users\qingy\Documents> conda create -n insightface39 python=3.9
(base) PS C:\Users\qingy\Documents> conda activate insightface39
(insightface39) PS C:\Users\qingy\Documents> pip install stringzilla --only-binary=stringzilla

下载项目

(insightface39) PS C:\Users\qingy\Documents> git clone https://github.com/QingYuanQu/insightface.gits

安装依赖

(insightface39) PS C:\Users\qingy\Documents> cd .\insightface\

(insightface39) PS C:\Users\qingy\Documents\insightface> pip install -r .\requirements.txt

安装项目

(insightface39) PS C:\Users\qingy\Documents\insightface> cd .\python-package\
(insightface39) PS C:\Users\qingy\Documents\insightface\python-package> python .\setup.py install

安装推理后端

对于insightface版本≤0.1.5,我们使用MXNet作为推理后端。

从insightface版本≥0.2开始,我们使用onnxruntime作为推理后端。

你必须手动安装onnxruntime-gpu以启用GPU推理,或者安装onnxruntime以仅使用CPU进行推理。

许可证

InsightFace Python库的代码是在MIT许可证下发布的。对于学术和商业用途均没有限制。

我们随该库提供的预训练模型仅可用于非商业研究目的,包括自动下载的模型和手动下载的模型。

Model Zoo

在最新版本的insightface库中,提供了以下模型包:

粗体显示的名称是默认模型包。“Auto”表示我们可以通过Python库直接下载该模型包。

手动下载zip格式的模型包后,在调用程序之前,请先将其解压到~/.insightface/models/目录下。

名称 人脸检测 人脸识别 人脸对齐 性别 & 年龄 Model-Size Link Auto
antelopev2 SCRFD-10GF ResNet100@Glint360K 2d106 & 3d68 Gender&Age 407MB link N
buffalo_l SCRFD-10GF ResNet50@WebFace600K 2d106 & 3d68 Gender&Age 326MB link Y
buffalo_m SCRFD-2.5GF ResNet50@WebFace600K 2d106 & 3d68 Gender&Age 313MB link N
buffalo_s SCRFD-500MF MBF@WebFace600K 2d106 & 3d68 Gender&Age 159MB link N
buffalo_sc SCRFD-500MF MBF@WebFace600K - - 16MB link N

buffalo_l 套件中各 ONNX 模型详情表

模型文件名 核心功能 命名含义 核心作用
det_10g.onnx 人脸检测(Face Detection) det=Detection(检测);10g=SCRFD-10GF(轻量高精度检测算法,计算量约10G FLOPs) 定位图像/视频中所有人脸的位置,输出人脸框坐标(x1,y1,x2,y2),是后续所有人脸任务的第一步
2d106det.onnx 2D 人脸关键点检测(2D Face Landmark) 2d=二维;106=106个关键点;det=检测(关键点) 基于人脸框精细化定位106个2D人脸关键点(五官、轮廓等),用于人脸对齐、姿态估计等前置处理
1k3d68.onnx 3D 人脸关键点检测(3D Face Landmark) 3d=三维;68=68个行业通用关键点;1k=训练数据集/参数标识(无核心语义) 输出68个关键点的三维坐标(x,y,z),反映人脸立体结构,用于3D人脸重建、姿态精准估计
genderage.onnx 性别&年龄预测(Gender & Age Estimation) genderage=Gender(性别)+ Age(年龄) 基于人脸特征预测性别(男/女)和年龄(数值估计),属于人脸属性分析任务
w600k_r50.onnx 人脸特征提取/人脸识别(Face Feature Extraction / Recognition) w600k=WebFace600K(约600万张人脸的训练数据集);r50=ResNet50(模型骨干网络) 将人脸转化为512维特征向量,通过对比特征向量相似度实现人脸识别(如人脸解锁、考勤打卡等)

识别准确率:

Name MR-ALL African Caucasian South Asian East Asian LFW CFP-FP AgeDB-30 IJB-C(E4)
buffalo_l 91.25 90.29 94.70 93.16 74.96 99.83 99.33 98.23 97.25
buffalo_s 71.87 69.45 80.45 73.39 51.03 99.70 98.00 96.58 95.02

buffalo_m has the same accuracy with buffalo_l.

buffalo_sc has the same accuracy with buffalo_s.

请注意,这些模型仅可用于非商业研究目的。

对于insightface版本≥0.3.3,一旦我们初始化“app = FaceAnalysis()”实例,模型就会自动下载。

对于insightface版本==0.3.2,你必须先通过以下命令下载模型包:

insightface-cli model.download buffalo_l

https://github.com/deepinsight/insightface/tree/master/model_zoo

快速示例

import cv2
import numpy as np
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image

app = FaceAnalysis(providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=-1, det_size=(640, 640)) # ctx_id: -1 CPU, 0 GPU
img = ins_get_image('t1') # 从虚拟环境`D:\ProgramData\anaconda3\envs\insightface39\insightface\data\images`读取图片。
faces = app.get(img)
rimg = app.draw_on(img, faces)
cv2.imwrite("./t1_output.jpg", rimg)

这个简单示例将从 t1.jpg 图像中检测人脸,并在图像上绘制检测结果。

t1_output

使用您自己的授权模型

你只需在~/.insightface/models/目录下创建一个新的模型文件夹,并将我们提供的预训练模型替换为你自己的模型。然后调用app = FaceAnalysis(name='your_model_zoo')来加载这些模型。

PS C:\Users\qingy\.+insightface\models> ls
d-----         2025/12/7     11:47                buffalo_l
d-----         2025/12/7     16:24                ms1mv2_r50

PS C:\Users\qingy\.insightface\models> ls .\buffalo_l\
-a----         2025/12/7     11:47      143607619 1k3d68.onnx
-a----         2025/12/7     11:47        5030888 2d106det.onnx
-a----         2025/12/7     11:47       16923827 det_10g.onnx
-a----         2025/12/7     11:47        1322532 genderage.onnx
-a----         2025/12/7     11:47      174383860 w600k_r50.onnx

PS C:\Users\qingy\.insightface\models> ls .\ms1mv2_r50\
-a----        2025/11/19     22:06      174383860 ms1mv2_r50.onnx
import insightface

handler = insightface.model_zoo.get_model(r'C:\Users\qingy\.insightface\models\ms1mv2_r50\ms1mv2_r50.onnx')
handler.prepare(ctx_id=0)

调用模型

ONNX(开放神经网络交换格式)是一种开源格式,用于存储和传输训练好的深度学习模型,实现不同框架(如PyTorch、TensorFlow)间的模型互通。 它定义了统一的计算图和张量格式,让模型无需重新训练就能在不同平台或框架中部署。

最新的insightface库仅支持onnx模型。一旦你用PyTorch、MXNet或其他任何框架训练好了检测或识别模型,就可以将其转换为onnx格式,然后就能用insightface库调用这些模型了。

人体检测

# 示例代码位置
examples/person_detection/scrfd_person.py

image-20251208080754505

人脸检测

# 示例代码位置
examples/face_detection/detect.py

image-20251208073304903

对齐2D人脸关键点

# 示例代码位置
alignment/coordinate_reg/image_infer.py

image-20251207232359347

性别年龄判断

# 示例代码位置
attribute/gender_age/test.py

image-20251207233705145

调用人脸识别模型

# 示例代码位置
examples/face_recognition/insightface_app.py # 记得更换成要对比的两张人脸的路径

AI 换脸

请改用我们的Picsi.Ai换脸产品,以获得更高分辨率的换脸效果。此模型和演示代码已不再维护。

小应用

基于Web的人脸对比

# 示例代码位置
examples/face_compare_web

实时流人脸分析

# 示例代码位置
examples/person_detection_video

About

State-of-the-art 2D and 3D Face Analysis Project学习文档

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 70.5%
  • C++ 24.5%
  • C 2.1%
  • Shell 1.5%
  • CMake 0.9%
  • Cython 0.2%
  • Other 0.3%