
SCRFD人脸检测实战5个模型档位性能对比 4种部署场景配置建议【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface一、什么场景下你需要它你的服务要同时处理多路1080P监控流每路每帧的检测耗时必须压在个位数到十几毫秒手机App在纯CPU上做人脸框定位和活体前置检测不能依赖GPU历史人脸图库检索要求召回优先宁可模型大一点也不能漏检。InsightFace 的 SCRFD 人脸检测就是面向这些场景一个从 500M 到 34G FLOPs 可选的单阶段人脸检测模型族精度与算力可以按场景取舍。二、它到底能做什么能力边界输入一张 RGB 图VGA 到 1280×1280 均可输出人脸框[x1,y1,x2,y2]和置信度0~1常用阈值 0.5典型耗时 3.6~11.7ms单核 CPUVGA 输入官方数据选带_KPS的模型时额外输出 5 点关键点双眼、鼻尖、双嘴角可直接用于人脸对齐导出的 ONNX 支持动态输入同一模型运行时切换 320/640/1280 输入尺寸无需重新转换边界Hard 子集小脸、遮挡精度明显低于 Easy500M 档只有 68.51 mAP小于 20px 的远距离小脸不是它的强项建议提高输入分辨率或前置超分它不输出姿态、属性、embedding这些由同项目识别/属性模块完成。三、核心机制拆解只讲两个决定为什么准、为什么快的机制。多尺度锚点 自适应正样本选择为什么准设计思路传统检测器用固定 IOU 阈值划正负样本小脸区域候选框多而准的少样本天然不平衡。SCRFD 把锚点基础尺寸拉开到三档16/64/256并让分配器根据每个特征点位置的候选框分布自适应选正样本。关键配置核心意图是用 3 个 base_size 覆盖从极小到占满画面的脸topk9表示按分布统计取前 9 个候选anchor_generatordict(typeAnchorGenerator, ratios[1.0], scales[1, 2], base_sizes[16, 64, 256], strides[8, 16, 32]) train_cfgdict(assignerdict(typeATSSAssigner, topk9), ...)完整参数见 SCRFD 2.5G 配置。效果影响同样 FLOPs 下SCRFD-2.5G 的 Hard mAP77.87比同量级 ResNet-2.5GF74.47高约 3.4 个点主要增益来自小脸和困难样本。上图是 SCRFD 人脸检测的多人场景样例含不同尺寸与朝向的人脸。anchor_centers 缓存为什么快设计思路推理时每个 FPN 层级都要由特征图坐标还原锚点中心逐帧重算是纯浪费。关键实现tools/scrfd.py 里按(height, width, stride)做键缓存锚点坐标输入尺寸不变的连续帧直接命中缓存后处理阈值过滤 NMS用 NumPy 向量化完成不依赖额外算子库。效果影响VGA 输入下单核 CPU 3.6ms 的推理耗时里网络前向只占一半左右这让 ONNX Runtime 甚至纯 CPU 部署都有实用价值。四、最小上手路径从零到跑通git clone https://gitcode.com/GitHub_Trending/in/insightface.git cd insightface/python-package pip install -e . pip install onnxruntime opencv-python⚠️ 建议 Python 3.8只跑检测装 CPU 版 onnxruntime 即可不需要 GPU 环境。import cv2 from insightface.app import FaceAnalysis app FaceAnalysis(namebuffalo_l) # 检测器即 SCRFD-500M app.prepare(ctx_id-1) # -1CPU0GPU faces app.get(cv2.imread(insightface/data/images/t1.jpg)) print([f.bbox for f in faces])⚠️ 首次运行会自动把 buffalo_l 的 onnx 模型下载到~/.insightface耗时取决于网速之后走缓存。想单独使用 SCRFD 2.5G含关键点from insightface.model_zoo import scrfd_2p5gkps det scrfd_2p5gkps() det.prepare(ctx_id-1) bboxes, kpss det.detect(img, 0.5, input_size(640, 640))五、效果怎么验证用数据说话官方 benchmark 条件640×480VGA输入精度为 WIDER Face 验证集 mAP推理耗时为单核 CPU。模型参数量(M)Easy mAPHard mAP推理耗时(ms)SCRFD-500M0.5790.5768.513.6SCRFD-2.5G0.6793.7877.874.2SCRFD-10G3.8695.1683.054.9SCRFD-34G9.8096.0685.2911.7补充实测AMD Ryzen 9 3950X单线程OMP_NUM_THREADS1SCRFD-500M 在 640×480 输入下 28.3ms320×240 输入下 11.4ms。上图展示模型从训练、压缩优化到多端部署的通用链路。完整对比表含与 RetinaFace、TinaFace 等的对照见 detection/scrfd/README.md不在本文重复贴数。六、按场景选配置决策指南移动端实时检测选 SCRFD-500M_KPS版如需对齐。输入 320×240阈值 0.5。单核 CPU 约 11.4ms/帧官方单线程实测Easy mAP 90.57是移动端精度/速度最平衡的档位。服务器端高吞吐检测选 SCRFD-2.5G输入 640×640onnxruntime 开启 CPU 多线程或 CUDAExecutionProvider。VGA 输入单核 4.2ms多核下吞吐还能再翻倍适合接入 InsightFace Server 这类常驻服务。边缘设备Jetson / 嵌入式选 SCRFD-2.5G 的 ONNX通过官方 C SDK 部署参考 build_linux_tensorrt.sh 构建 TensorRT 后端FP16 起步标定数据足够再上 INT8。具体耗时以目标板实测为准SDK 仓库内附 benchmark 与多平台构建脚本cpp-package/inspireface。高精度检索与底库构建选 SCRFD-10G 或 SCRFD-34G输入 640 以上。10G 只比 2.5G 多 0.7ms 却把 Hard mAP 从 77.87 提到 83.05是精度优先、延迟不敏感场景的首选34G 留作离线建库。七、和周边能力怎么配合SCRFD 在 InsightFace 里是人脸分析链路的第一环检测输出 bbox 5 点关键点对齐后交给 ArcFace 抽 512 维特征一次FaceAnalysis调用即可串起检测与识别from insightface.app import FaceAnalysis app FaceAnalysis(namebuffalo_l) app.prepare(ctx_id-1) for f in app.get(img): print(f.bbox, f.kps) # 检测框与5点关键点 print(f.embedding.shape) # (512,) ArcFace 特征相关模块Python 推理包、ArcFace PyTorch 训练、服务化部署 InsightFace Server。后者的控制台可直接查看检测/识别服务的运行状态与模型信息上图是 InsightFace Server 控制台展示检测、检索服务的运行状态。SCRFD 人脸检测一档可选 FLOPs、配套部署链路齐全的单阶段检测器。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考