本地部署 InsightFace:3行代码跑通人脸检测与识别 📅 发布时间:2026/9/9 15:46:26 👁 浏览次数: 本地部署 InsightFace3行代码跑通人脸检测与识别【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface想让两张照片做身份比对、又想让一批图片自动框出人脸同时数据不出本机InsightFace 可以做到装好 Python 库后本地人脸检测、人脸识别、关键点对齐和属性分析全部在 CPU 上跑通预训练模型包自动下载无需训练、无需准备数据。能力全景一次调用串起检测、识别、对齐、属性InsightFace 的完整链路可以拆成四级检测SCRFD 单阶段检测器先找出图中所有人脸的边界框与置信度识别ArcFace 系列把每张对齐后的人脸裁剪图变成 512 维 embedding可理解为这张脸的“数字指纹”对齐模块输出 5 点、106 点与 3D 68 点关键点供裁剪、3D 重建使用属性模块给出性别与年龄。这四个模型不用你手动串联一个FaceAnalysis对象一次调用全部完成一张图进去出来的就是结构化的人脸对象列表直接供下游做比对、聚类、打码或重建。下图是仓库自带的示例图6 个人正好可以验证多人脸批量检测CPU 环境 3 步安装并跑通首次人脸分析环境要求只有 Python 3.x。0.2 版本起的 Python 库改用 onnxruntime 作推理后端只用 CPU 就装onnxruntime要 GPU 需自行安装onnxruntime-gpu。仓库里的训练模块基于 PyTorch 1.6 / MXNet 1.6~1.8纯推理时完全不涉及。git clone https://gitcode.com/GitHub_Trending/in/insightface # 可选浏览示例与训练代码 pip install onnxruntime # CPU 后端GPU 请改装 onnxruntime-gpu pip install -U insightface接着跑最小脚本示例图用仓库自带的那张六人群像import 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))首次运行的预期初始化时会自动把约 326MB 的 buffalo_l 模型包下载到~/.insightface/models/网络慢的话首次会多等一阵。返回的faces是 Face 对象列表每个对象含边界框、关键点、性别年龄和用于比对的 512 维embedding。CPU/GPU 切换只改一处ctx_id-1走 CPUctx_id0走 GPU并传providers[CUDAExecutionProvider]。核心机制拆解一张图如何变成结构化人脸数据人脸检测边界框与 5 点关键点从哪来输入是一张 BGR 图像输出是若干边界框加置信度以及每张脸 5 点关键点用于眼睛、嘴部定位。默认检测器是 SCRFD——ICLR 2022 的单阶段检测器靠“样本与计算再分配”的思路在精度与 FLOPs 之间做权衡提供 0.5GF 到 34GF 共五档规格。可调的关键参数是检测输入尺寸v1.0 起prepare()默认走 Auto 模式用 128×128 与 640×640 两档各跑一遍再统一 NMS 合并专门防小脸漏检 只追求速度时再固定 input_size省一次推理。人脸识别512 维 embedding 是什么、怎么比输入是一张单人的人脸裁剪图库内会依据关键点自动对齐输出 512 维向量同一人跨照片距离近不同人距离远两个向量的余弦相似度就是身份相似度。1:1 比对只需点积归一化后与阈值比较仓库示例 examples/face_recognition/insightface_app.py 用的默认值是 0.65import numpy as np sim np.dot(emb1, emb2) / (np.linalg.norm(emb1) * np.linalg.norm(emb2))下图是一张典型 1:1 比对输入单人、正脸、像素充足检出后直接取face.embedding即可参与计算。关键点对齐与属性106 点、3D 68 点、性别年龄对齐模型走坐标回归路线输入宽松裁剪的人脸直接输出 106 个 2D 点与 68 个 3D 点可喂给裁剪、3D 重建或表情分析管线。属性模型MobileNet-0.25仅 0.3M 参数输出性别与年龄包含在每个 buffalo 模型包里。如果你只要检测和识别可以用allowed_modules关掉对齐与属性或直接换 16MB 的 buffalo_sc 跳过这两类模型。模型包怎么选精度与速度分档看数据检测侧是官方 WIDERFace 基准VGA 分辨率、单尺度测试出处见 detection/scrfd/README.md 与 model_zoo/README.mdSCRFD 规格Easy (mAP)Medium (mAP)Hard (mAP)参数量 (M)推理 (ms)0.5GF90.5788.1268.510.573.61GF92.3890.5774.800.644.12.5GF93.7892.1677.870.674.210GF95.1693.8783.053.864.934GF96.0694.9285.299.8011.7CPU 上更有参考意义的是官方给出的单线程数据SCRFD-0.5GF 在 x86 单核跑 640×480 输入约 28.3ms降到 320×240 只要 11.4ms端侧设备实时跑是可行的。识别侧按模型包分档出处见 python-package/README.md模型包体积MR-ALLLFWIJB-C(E4)buffalo_l默认326MB91.2599.8397.25buffalo_s159MB71.8799.7095.02buffalo_sc16MB71.8799.7095.02buffalo_sc 的识别精度与 buffalo_s 相同只是不带对齐和属性模型buffalo_m 体积居中、精度与 buffalo_l 持平。决策可以分三档做 Demo 或内部工具直接用默认buffalo_l精度和下载体积平衡最好端侧或低配设备选buffalo_s不要对齐和属性就buffalo_sc追求更高识别上限可把包内 ONNX 换成 SCRFD-2.5GF/34GF 检测或 ResNet100 识别模型清单在 model_zoo/README.md。上线前必须确认的 5 个点后端别装错。onnxruntime只含 CPU 推理想用 CUDA 必须安装onnxruntime-gpu并在FaceAnalysis里传providers[CUDAExecutionProvider]否则白有显卡。别把 0.65 当绝对阈值。它只是示例默认值调低会增加误认调高会增加漏认请用业务里的真实坏例来回调。多人脸图要显式选人。一图多人时必须自己决定比对哪张脸示例默认取第一张检出结果实际业务里很容易拿错对象。小脸漏检看检测尺寸配置。默认 Auto 双尺度检测最稳若改了固定 input_size 换速度先单独评估小脸召回。注意 License 边界。代码是 MIT 协议、商用不受限但预训练模型buffalo 系列等仅限非商业研究商用需另行获取授权详见 README.md。仓库里值得深入的目录detection/scrfd/SCRFD 完整训练管线、NAS 架构搜索与 WIDERFace 评测脚本recognition/ArcFace 的 PyTorch/MXNet/PaddlePaddle/OneFlow 多实现以及 Partial FCexamples/in_swapper/单行人脸交换示例基于同一套检测与对齐管线server/README.md容器化 Web UI REST API 的自建人脸搜索服务reconstruction/单目 3D 人脸重建、视线估计等进阶方向python-package/README.md调用自定义 ONNX 模型、手动下载模型包的完整说明下一步可以做什么本地比对 Demo 跑通后自然的延伸是把脚本扩成服务仓库内置的 InsightFace Server 提供容器化 Web UI 与 snake_case REST API单机 CPU 或 GPU 即可运行检测、1:1/1:N 比对与人员检索可以顺着 server/ 目录继续看。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考