
InsightFace 人脸检测与人脸识别完整指南Python 库跑通本地 1:1 比对【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface想让一张图告诉你这张图里有几张脸、在哪里或者想回答这两张照片是不是同一个人InsightFace 的 Python 库几行代码就能完成。它背后的 2D/3D 人脸分析链路人脸检测、人脸识别、关键点对齐、性别年龄属性被封装进一个FaceAnalysis接口装好包、跑一次app.get(img)每张脸就带出了边界框、关键点、属性和一根 512 维的 embedding 向量——可以理解为这张脸的数字指纹。全程数据不离开本机预训练模型首次运行自动下载。先给结论如果你的需求是本地人脸比对、批量人脸检测或相册整理直接用 Python 库即可如果已经需要 Web 界面、REST API 或 1:N 人脸搜索服务仓库里的 InsightFace Server 是一个单容器方案如果是要训练新检测器或识别模型仓库同时提供了 SCRFD、ArcFace 的训练代码。安装前先看这张表5 个模型包按体积和精度怎么选模型包model pack 检测 识别 对齐 属性几类 ONNX 模型打成一个 zip解压到~/.insightface/models/就能用。默认包是buffalo_l也是唯一能自动下载的包其余需要手动下载 zip 再解压完整列表见 python-package/README.md模型包检测模型识别模型对齐属性体积自动下载antelopev2SCRFD-10GFResNet100Glint360K2d106 3d68性别年龄407MB否buffalo_l默认SCRFD-10GFResNet50WebFace600K2d106 3d68性别年龄326MB是buffalo_mSCRFD-2.5GFResNet50WebFace600K2d106 3d68性别年龄313MB否buffalo_sSCRFD-500MFMBFWebFace600K2d106 3d68性别年龄159MB否buffalo_scSCRFD-500MFMBFWebFace600K无无16MB否识别侧精度MegaFace MR-ALLgallery1e6LFWIJB-C(E4)buffalo_l 为 91.25 / 99.83 / 97.25buffalo_s 为 71.87 / 99.70 / 95.02buffalo_m、buffalo_sc 分别与 l、s 同精度。选择逻辑一句话桌面/服务端选 buffalo_l端侧或低配机器选 buffalo_s只要框和 embedding、不要对齐和属性的极简场景16MB 的 buffalo_sc 足够。安装 insightface30 秒确认人脸检测生效环境要求Python 3.x。推理后端从 0.2 版本起改用 onnxruntime——只用 CPU 装onnxruntime要 GPU 推理则手动装onnxruntime-gpu。仓库训练模块基于 PyTorch 1.6 和 MXNet 1.6~1.8README.md。git clone https://gitcode.com/GitHub_Trending/in/insightface pip install -U insightface pip install onnxruntime # 要 GPU 改为 onnxruntime-gpu验证脚本用仓库自带的示例图首次运行自动下载 buffalo_l 约 326MBimport cv2 from insightface.app import FaceAnalysis app FaceAnalysis(namebuffalo_l); app.prepare(ctx_id-1) # -1 用 CPU faces app.get(cv2.imread(python-package/insightface/data/images/t1.jpg)) print(len(faces)) # 期望输出 6app.get返回 Face 对象列表每个对象有bbox边界框、det_score检测置信度、kps5 点关键点、gender/age、embedding512 维识别向量。示例图里有 6 张脸仓库人脸交换例子正是用它并断言len(faces)6。把结果交给app.draw_on(img, faces)可画出框、关键点和属性文字。prepare()有个值得知道的默认行为v1.0 起检测尺寸默认 Auto即 SCRFD 先在 128×128 和 640×640 两档分别检测再做统一 NMS 合并见 face_analysis.py 的DEFAULT_DET_SIZES小脸和大图都不容易漏。1:1 比对链路用 embedding 向量判断是否同一人流程固定对每张照片取face.embedding算余弦相似度和阈值比大小。仓库示例 examples/face_recognition/insightface_app.py 默认阈值取 0.65注释里明确写了要按你的业务场景调整import numpy as np emb1, emb2 face1.embedding, face2.embedding score np.dot(emb1, emb2) / (np.linalg.norm(emb1) * np.linalg.norm(emb2)) print(score, score 0.65) # 相似度与判定结果一图多人的坑示例默认取faces[0]但第一张检出的脸未必是你想比的那张。仓库 inswapper_main.py 的做法是按框左边缘排序再取faces sorted(faces, keylambda x: x.bbox[0])你可以照抄这个思路。检测精度与推理速度SCRFD 性能数据拆解检测模型是 SCRFDICLR 2022下表 mAP 均在 VGA640×480单尺度下测得出处 detection/scrfd/README.md模型Easy mAPMedium mAPHard mAP参数量(M)推理耗时(ms)SCRFD-0.5GF90.5788.1268.510.573.6SCRFD-2.5GF93.7892.1677.870.674.2SCRFD-10GF95.1693.8783.053.864.9SCRFD-34GF96.0694.9285.299.8011.7CPU 上也有参考值SCRFD-0.5GF 在 640×480 输入下单线程约 28.3msAMD Ryzen 9 3950XOMP_NUM_THREADS1。mAP 是不同置信度阈值下精确率-召回率曲线下的面积Easy/Medium/Hard 对应人脸从清晰到小脸、遮挡的三种难度子集。识别侧的完整榜单含 Glint360K、WebFace600K 等数据集的 R18~R100 ONNX 模型在 model_zoo/README.md训练与评测代码分别在 detection/scrfd/ 和 recognition/ArcFace 的 PyTorch/MXNet/Paddle 多实现、Partial FC。排查手册漏检小脸、GPU 没生效、阈值不合适现象GPU 装了但没跑上 CUDA。原因onnxruntime只含 CPU 推理。处理pip install onnxruntime-gpu构造时显式指定FaceAnalysis(providers[CUDAExecutionProvider, CPUExecutionProvider])——官方 Quick Example 就是这个写法。现象远景小脸漏检。原因检测尺寸或置信度门槛。处理保持prepare()默认 Auto128×128 640×640 双档 统一 NMS别自己传固定小尺寸仍漏检就把门槛从默认 0.5 调低如app.prepare(ctx_id-1, det_thresh0.3)。现象比对结果对不上实际是同一个人。原因0.65 只是示例起点不是普适标准。处理攒一批业务里的同一人/不同人真实样本对打印各自相似度分布从分布的中间空档定阈值调低会增加误认调高会增加漏认。现象首次运行卡住很久。原因在自动下载 buffalo_l326MB到~/.insightface/models/。处理看该目录体积变化确认进度网络差就手动下载 zip 解压到同一目录再运行。现象想把预训练模型用到商业产品里。⚠️ 原因代码是 MIT 协议但 buffalo 系列等预训练模型仅限非商业研究使用README.md License 一节。处理商用需按 README 中给出的联系渠道单独获取授权或训练自有数据模型。不止脚本桌面 GUI、1:N 搜索服务与换脸入口要界面不要写代码1.0 版本附带跨平台桌面 GUIInsightFace Evaluation Studiopip install insightface[gui] insightface-gui支持本地 1:1 比对、1:N 图库搜索、相册按人聚类DBSCAN 默认余弦阈值 0.48、换脸试验入口用户数据默认存在~/.insightface/gui不自动上传注意 GUI 不自动下载模型要在 Models Downloads 里手动拉取详见 python-package/README.md。需要团队共用的服务看 InsightFace Server一个 Linux x86_64 容器装下 Web UI、snake_case REST API 和 Python 客户端覆盖检测、比对、注册和 1:N Person 搜索向量索引支持 FP32/FP16/BF16/INT8官方数据为单张 RTX 5090 上 INT8 存 5890 万根 512 维向量、10M 规模 Top-5 查询 p50 3.84ms换脸inswapper在 examples/in_swapper/要求insightface版本 0.73D 重建、视线估计等进阶方向在 reconstruction/。下一步建议很具体拿你自己相册里的几组确定同人/确定不同人照片对把上面的 1:1 比对脚本跑一遍把相似度分数全部打出来。你会发现同一人分布和不同人分布之间往往有一段空档——阈值就从空档中间取0.65 只是你校准前的起点。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考