ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

InsightFace 人脸检测识别工具箱:8 行代码跑通本地人脸分析

InsightFace 人脸检测识别工具箱:8 行代码跑通本地人脸分析 InsightFace 人脸检测识别工具箱8 行代码跑通本地人脸分析【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface想判断两张照片是否同一人、又想批量框出图里所有人脸但数据不能离开本机InsightFace 把人脸检测、识别、对齐、属性分析打包成可直接安装的 Python 库预训练模型首次运行自动下载无需自己训练。一次配置跑完检测、对齐、识别、属性的完整链路InsightFace 官方模型包buffalo 系列按任务把四个模型捆在一起FaceAnalysis一次配置即可串起整条链路人脸检测内置 SCRFD 检测器输出边界框、5 点关键点与置信度人脸对齐2D 106 点与 3D 68 点关键点标定供裁剪、打码、3D 重建使用人脸识别输出 512 维 embedding 向量支持 1:1 比对与 1:N 搜索属性分析性别、年龄部分模型包还有表情、姿态。检测 → 对齐 → embedding → 属性在app.get(img)一次调用内自动完成不需要逐模型手写流水线。下图是人脸检测、关键点、属性与活体判断等能力的组合效果从零到首次人脸检测识别的三步安装环境要求 Python 3.x推理后端为 onnxruntime——CPU 装onnxruntime即可要 GPU 推理则需手动安装onnxruntime-gpu。pip install -U insightface下面这段脚本把FaceAnalysis的初始化、检测、绘制三步串起来图片用的是仓库自带的六人示例图import cv2 from insightface.app import FaceAnalysis app FaceAnalysis(namebuffalo_l) # 默认模型包 app.prepare(ctx_id-1) # -1 用 CPU0 用 GPU img cv2.imread(python-package/insightface/data/images/t1.jpg) faces app.get(img) cv2.imwrite(t1_output.jpg, app.draw_on(img, faces))跑完之后会看到两件事首次运行自动把约 326MB 的 buffalo_l 模型包下载到~/.insightface/models/之后离线可用t1_output.jpg上画出人脸框、关键点与性别年龄文字。faces是 Face 对象列表每个对象含bbox边界框、kps5 点关键点、det_score置信度、gender/age以及 512 维embedding——可理解为这张脸的数字指纹。核心能力实操检测绘制与 1:1 身份比对批量人脸检测一张图框出所有脸场景一张合照或监控截图里有几十张脸需要自动框出并拿到关键点。关键 API 是app.get(img)返回图中全部人脸的 Face 对象app.draw_on(img, faces)负责画框、标点和属性文字。示例图t1.jpg里有 6 张脸len(faces)即为 6需要限制返回数量或按置信度排序时get()支持max_num与det_metric参数。1:1 身份比对两张照片是不是同一个人场景身份核验、相册整理、照片查重。核心逻辑是取两张照片各自的face.embedding算余弦相似度再和阈值比较sim emb1 emb2 / (np.linalg.norm(emb1) * np.linalg.norm(emb2)) is_same sim 0.65参考实现 examples/face_recognition/insightface_app.py 中 512 维向量已做 L2 归一化点积即余弦相似度相似度越高越可能是同一人默认阈值取 0.65。这个阈值不是万能的调低会增加误认不同人被判成同一人调高会增加漏认同一人被拆开。正确做法是收集业务里的真实正、反例对回看相似度分布在可接受的误认率处切阈值。一图多人时要自己选定要比较的那张脸——参考实现取第一张检出的人脸并打印警告。检测精度与识别包怎么选型检测侧是 SCRFD 不同 FLOPs 档位mAP 为 VGA 640×480 单尺度测试数据出自 model_zoo/README.md 与 detection/scrfd/README.md模型Easy (mAP)Hard (mAP)FLOPs参数量 (M)推理耗时 (ms)SCRFD-0.5GF90.5768.51500M0.573.6SCRFD-2.5GF93.7877.872.5G0.674.2SCRFD-10GF95.1683.0510G3.864.9SCRFD-34GF96.0685.2934G9.8011.7识别侧是 buffalo 系列模型包数据出自 python-package/README.md模型包识别模型MR-ALLLFW大小适用场景buffalo_l默认Auto 下载ResNet50WebFace600K91.2599.83326MB精度优先的本地部署buffalo_mResNet50WebFace600K同 buffalo_l99.83313MB同精度、更小的检测器buffalo_sMBFWebFace600K71.8799.70159MB端侧、算力受限buffalo_scMBFWebFace600K同 buffalo_s99.7016MB只要检测识别默认推荐buffalo_l精度最高且支持自动下载。端侧或低算力场景换buffalo_s只跑检测和识别、不要对齐与属性时用 16MB 的buffalo_sc。注意各包的 East Asian 分数明显偏低buffalo_l 为 74.96业务以东亚人脸为主时建议用自有数据验证后再定阈值。用之前必须知道的五条限制License 边界代码是 MIT 协议学术与商用均无限制但 buffalo 系列预训练模型自动下载或手动下载都一样仅限非商业研究用途商用需另行获取授权详见 README.md。GPU 后端别装错onnxruntime只含 CPU 推理。要跑 CUDA 必须手动安装onnxruntime-gpu并在FaceAnalysis(providers[CUDAExecutionProvider, ...])里显式指定否则 GPU 白装。首次运行会下载约 326MB 的 buffalo_l 包下载到~/.insightface/models/。纯离线环境需先手动下载 zip 包解压到该目录再运行详见 python-package/README.md。小脸召回依赖 Auto 检测尺寸v1.0 起prepare()默认用 128×128 与 640×640 双档检测、统一 NMS 合并追求速度改成固定input_size会牺牲小脸召回。阈值是双向的det_thresh默认 0.5调高减少误检但漏检更多调低反之比对阈值 0.65 同理都要用业务里的真实坏例来回调。进阶路径与资源索引识别训练ArcFace 的 PyTorch/MXNet/OneFlow/Paddle 多框架实现与 Partial FC 大规模身份训练recognition/检测训练与 NASSCRFD 训练代码、WIDERFace 数据准备与自动搜索脚本detection/scrfd/人脸搜索服务容器化的 Web UI REST API Python SDK单机支持千万级向量检索server/桌面 GUIInsightFace Evaluation Studio跨平台的本地比对、相册聚类与企业级评测报告python-package/docs/gui.md人脸交换inswapper 单行调用示例examples/in_swapper/3D 重建与视线估计单目 3D 重建、纹理补全、视线估计等进阶方向reconstruction/。回到开头的问题——数据留在本机、模型开箱即用从 buffalo_l 跑通第一张图开始就可以顺着 SCRFD 训练代码或 InsightFace Server 往生产方向深挖了 【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表