独立 MSVC 编译器、库和脚本
https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/(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许可证下发布的。对于学术和商业用途均没有限制。
我们随该库提供的预训练模型仅可用于非商业研究目的,包括自动下载的模型和手动下载的模型。
在最新版本的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 |
| 模型文件名 | 核心功能 | 命名含义 | 核心作用 |
|---|---|---|---|
| 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 图像中检测人脸,并在图像上绘制检测结果。
你只需在~/.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.onnximport 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# 示例代码位置
examples/face_detection/detect.py# 示例代码位置
alignment/coordinate_reg/image_infer.py# 示例代码位置
attribute/gender_age/test.py# 示例代码位置
examples/face_recognition/insightface_app.py # 记得更换成要对比的两张人脸的路径请改用我们的Picsi.Ai换脸产品,以获得更高分辨率的换脸效果。此模型和演示代码已不再维护。
# 示例代码位置
examples/face_compare_web# 示例代码位置
examples/person_detection_video