InsightFace:5 行代码检出人脸、比对是否同一人
2026/9/9 17:08:22 网站建设 项目流程

InsightFace:5 行代码检出人脸、比对是否同一人

【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface

InsightFace 是一个开源的 2D/3D 人脸分析项目,把人脸检测、人脸识别、关键点对齐、属性分析打包成一个可安装的 Python 包,不用自己训练模型就能在本地跑起人脸比对和人脸框提取。

它适合什么活

最常见的用法是身份核验:手上有两张照片,要判断是不是同一个人,数据全程留在自己的机器上,不管是相册整理还是照片查重都用得上。另一类活是批量出人脸框:一张图里几十上百张脸,需要自动把每张脸框出来并附带关键点,供后续裁剪、打码或 3D 重建使用。InsightFace 把高精度的轻量检测器 SCRFD(一种专门做人脸定位的网络)、ArcFace 识别模型、106/68 点关键点标定和性别年龄属性打进 buffalo_l 这类模型包里,调一次FaceAnalysis就能走完检测、对齐、识别、属性的整条链路。

安装:环境要求与两条命令

仓库里的训练模块基于 PyTorch 1.6+ 和 MXNet 1.6~1.8,但只跑 Demo 的话用不到这些。Python 库从 0.2 版本起改用 onnxruntime 做推理后端:只用 CPU 就装onnxruntime,要 GPU 得自己装onnxruntime-gpu

pip install -U insightface

需要仓库源码(示例图片、脚本)时再克隆一份:

git clone https://gitcode.com/GitHub_Trending/in/insightface

第一次人脸分析怎么跑

仓库自带示例图 t1.jpg(里面有 6 个人),拿来直接验证。首次运行会自动把 buffalo_l 模型包(约 326MB)下载到~/.insightface/models/

import cv2 from insightface.app import FaceAnalysis app = FaceAnalysis(name='buffalo_l') app.prepare(ctx_id=-1) faces = app.get(cv2.imread('python-package/insightface/data/images/t1.jpg')) print(len(faces), faces[0].bbox, faces[0].embedding.shape)

app.get返回一个 Face 对象列表,每个对象里装着边界框、5/106 点关键点、性别年龄,以及一个 512 维的 embedding——可以把它理解成这张脸的"数字指纹"。把结果再传回app.draw_on(img, faces)就能画出框、关键点和属性文字,cv2.imwrite存盘即可。做 1:1 比对时,分别取两张照片的face.embedding,算余弦相似度再和阈值比较就能判断是否同一人。仓库示例 examples/face_recognition/insightface_app.py 默认阈值取 0.65,并提醒按自己的业务场景调整;一图多人时记得显式选定要比的那张脸(示例取第一张检出的人脸)。

数据与选型:检测器选哪个、模型包选哪个

检测侧用的是 SCRFD,下表是仓库公布的 WIDERFace 精度数据,均在 VGA(640×480)分辨率单尺度测得,出处见 detection/scrfd/README.md:

模型Easy (mAP)Medium (mAP)Hard (mAP)参数量 (M)耗时 (ms)
SCRFD-0.5GF90.5788.1268.510.573.6
SCRFD-2.5GF93.7892.1677.870.674.2
SCRFD-10GF95.1693.8783.053.864.9
SCRFD-34GF96.0694.9285.299.8011.7

识别侧,默认的 buffalo_l 配 SCRFD-10GF 检测 + ResNet50@WebFace600K,MR-ALL 得分 91.25、LFW 99.83、IJB-C(E4) 97.25;轻量包 buffalo_s(SCRFD-500MF + MobileFaceNet)MR-ALL 为 71.87,够算力受限的场景用。结论很直接:默认用 buffalo_l;端侧或低配设备换 buffalo_s;只要检测和识别、不要对齐和属性,16MB 的 buffalo_sc 最小,完整清单在 model_zoo/README.md。

使用 InsightFace 的常见问题

问:画面角落的小脸总是漏检? 答:v1.0 起prepare()默认走 Auto 检测尺寸,先用 128×128 和 640×640 两档分别检测、再统一 NMS 合并,小脸和大脸都能覆盖。只有在追求速度时才改回固定 input_size。

问:装了 onnxruntime,GPU 却不生效? 答:onnxruntime本身只带 CPU 推理,CUDA 要另装onnxruntime-gpu,并在FaceAnalysis里指定providers=['CUDAExecutionProvider']

问:比对阈值 0.65 必须照抄吗? 答:不是,那只是示例默认值。调低会多出误认,调高会多出漏认,稳妥的做法是攒一批业务里的真实坏例来回调。

问:能用于商用吗? 答:代码是 MIT 协议,不限商用;但附带的预训练模型(buffalo 系列等)仅限非商业研究使用,商用需另行获取授权,README.md 里写得很明确。

问:有没有不想写代码的入口? 答:1.0.1 起附带本地桌面应用 InsightFace Evaluation Studio,支持 1:1 比对、1:N 检索和相册聚类,数据和报告默认存在本地~/.insightface/gui,不会自动上传,详见 python-package/README.md。

仓库里还能干什么

  • 人脸交换示例 inswapper:examples/in_swapper/
  • ArcFace 识别训练,PyTorch/MXNet/Paddle 多实现与 Partial FC:recognition/
  • SCRFD 检测训练与 WIDERFace 评测:detection/scrfd/
  • 容器化的 Web UI + REST API,可直接搭人脸搜索服务:server/README.md

从 buffalo_l 和 embedding 出发,本地的人脸检测与比对就转起来了。之后想往深处走,可以顺着 SCRFD 的训练代码或 3D 重建模块 reconstruction/ 继续拆,InsightFace 基本能跟着你的项目一起长。

【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询