
SCRFD 人脸检测怎样把一张人群照片的实时推理压进 4 毫秒【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightfaceSCRFD 是 InsightFace 开源项目里的人脸检测模型能在 CPU 或手机上单帧实时框出画面里的每一张脸常被用于安防监控、相册整理和刷脸验证场景。为什么旧方案框 50 张脸会卡想象一个地铁扶梯的场景几十张大小不一的脸近的占屏幕四分之一远的只有几十像素而你必须在 33 毫秒内也就是每秒 30 帧把它们全部框出来。用早期检测器你常常得二选一选轻量网络速度快但小脸频频漏检选重型网络框得准但帧率撑不住 30。问题不在模型不够强而在传统做法把大量算力和冗余候选摊到了每一张图上。InsightFace 在 WIDER Face 基准上的对比就很直观ResNet50 版 RetinaFace 有 2950 万参数单帧推理 21.7 毫秒最难 Hard 集 mAP平均精度均值检测准确率的综合指标只有 64.17。SCRFDSample and Computation Redistribution采样与算力再分配人脸检测的思路是算得更少、花得更准模型缩到原来的几十分之一速度提到原来的 5 倍Hard 集精度反而从 64 涨到 78。SCRFD 三步是怎么工作的把整条推理管线拆开看其实是输入 → 三步处理 → 输出一张原图进去经过三级处理出来的是人脸框加置信度。第一步多尺度锚点分工。锚点anchor就是预先撒在图上的候选脸框。SCRFD 用三档不同密度的网格去撒步长 8、16、32 对应基础尺寸 16、64、256小脸在细网格里找大脸在粗网格里找每一层只负责自己擅长的那个尺寸段。base_sizes[16, 64, 256], strides[8, 16, 32]第二步渐进特征融合。网络会产出从细到粗的 4 层特征图特征金字塔细层保留边缘细节粗层保留这是什么的语义。PAFPN渐进式特征金字塔网络把粗层的语义信息往下送、细层的细节往上传融合后只留 3 层输出而且所有融合层共享 24 个通道把融合的计算开销压到最低——这也是小脸不容易被大脸淹没的关键。第三步ATSS 动态挑正样本。训练时要决定哪个候选框算哪张脸的正样本。传统做法用固定 IOU两个框重叠程度阈值遇到小脸经常误判。ATSS 改成先看统计算出每个网格上候选框的均值和标准差自动圈出合理范围再取前 9 个topk9当正样本正负样本的分布自然就稳了。三步走完输出就是人脸框 置信度带_KPS后缀的版本还会多出 5 个人脸关键点方便下游做对齐。SCRFD 模型选型怎么挑下面的数据来自 detection/scrfd/ 的 README均在 VGA 分辨率640×480下实测模型参数量Hard 集 mAP推理耗时RetinaFace (ResNet50)29.50M64.1721.7msSCRFD_2.5G0.67M77.874.2msSCRFD_10G3.86M83.054.9msSCRFD_34G9.80M85.2911.7ms一句话解读2.5G 版本用 ResNet50 版 RetinaFace 约 1/44 的参数把 Hard 集 mAP 从 64.17 提到 77.87速度还快了 5 倍是多数场景的默认选择追求极限小脸再上 10G只有对 mAP 有硬指标时才值得 34G。SCRFD 五分钟上手克隆仓库3 行跑通第一步克隆仓库并安装 Python 包可执行包在 python-package/ 目录git clone https://gitcode.com/GitHub_Trending/in/insightface cd insightface/python-package pip install -e .第二步3 行推理。首次运行时会自动下载 buffalo_l 预训练模型包内含 SCRFD 检测模型import cv2, insightface app insightface.app.FaceAnalysis(namebuffalo_l, providers[CPUExecutionProvider]) app.prepare(ctx_id-1) for face in app.get(cv2.imread(t1.jpg)): print(face.bbox, face.det_score)踩坑提示onnxruntimeCPU 版和onnxruntime-gpuGPU 版不能共存想上 GPU 要先卸载 CPU 版再装 GPU 版并确保其依赖的 CUDA 版本与你环境里的驱动匹配否则写了CUDAExecutionProvider也会静默回落到 CPU。CPU / GPU / 边缘设备部署调优速查CPU 服务器直接用 CPUExecutionProvider把推理线程数拉到核数级别即可。官方参考数据SCRFD-0.5GF 在 AMD Ryzen 9 3950X 单线程下处理 640×480 图片耗时 28.3ms单路监控完全够用。GPU 高并发把 ONNX 转成 TensorRT 引擎并开 FP16半精度数值减半、速度约翻倍再叠加多路摄像头流处理。手机 / 边缘设备用tools/scrfd2onnx.py导出 ONNX支持动态输入尺寸再配合 INT8 量化部署SCRFD_500M 在 GPU 上单帧 3.6ms能塞进移动 App。trtexec --onnxscrfd_2.5g.onnx --saveEnginescrfd_2.5g.trt --fp16它不止于检测整条人脸流水线的起点SCRFD 在 InsightFace 里的定位是接力赛第一棒python-package/insightface/app/ 中的 FaceAnalysis 先用它找出人脸框和 5 个关键点再把对齐后的人脸交给 ArcFace 提识别特征、做性别年龄属性估计更下游的 reconstruction/PBIDR/ 3D 人脸重建也是拿它的检测输出当输入——框不准重建的几何信息就全歪。换句话说检测这一环做对了后面的识别、属性、活体、重建全链路才有可靠的地基。小结SCRFD 用轻 5 倍、快 5 倍、Hard 集精度 13.7 分的结果证明快与准不冲突。现在就可以动手跑通上面的 3 行推理再把测试图换成你手边的人群照片试试。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考