ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SCRFD 实时人脸检测快速指南:0.5GF 到 34GF 的选型与部署

SCRFD 实时人脸检测快速指南:0.5GF 到 34GF 的选型与部署 SCRFD 实时人脸检测快速指南0.5GF 到 34GF 的选型与部署【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightfaceSCRFD 是 InsightFace 里的实时人脸检测方案Sample and Computation Redistribution样本与计算再分配ICLR 2022 发表0.5GF 到 34GFGF 即 GigaFLOPs十亿次浮点运算量级共 5 档规格一族检测器覆盖从手机到服务器的部署场景毫秒级输出人脸框和 5 个关键点。结论先行500M 规格 0.57M 参数、3.6ms 延迟就能覆盖 90% 的端侧实时场景。 先跑起来最小 4 步只需要预导出的 ONNX 权重不用装训练环境。# 1. 克隆仓库 git clone https://gitcode.com/GitHub_Trending/in/insightface cd insightface/detection/scrfd # 2. 安装依赖推理只需这三个包 pip install onnxruntime opencv-python numpy # 3. 从 detection/scrfd/README.md 的 Pretrained-Models 表下载 scrfd_2.5gkps.onnx # 放到 scrfd/ 目录下并改名为 det.onnx # 4. 跑推理tools/scrfd.py 的 __main__ 内置加载、detect、画框可视化把 img_paths 改成你的图片 python tools/scrfd.py仓库自带的测试图python-package/insightface/data/images/t1.jpg是 6 人合影近景大脸和侧脸都有适合第一张验证多尺度检测。 选哪个规格0.5GF 到 34GF 对比数据来自 SCRFD README 的 Pretrained-Models 表均在 VGA 分辨率下实测mAP 为 WIDERFace 单尺度评测规格参数量(M)延迟(ms)EasyMediumHardSCRFD_500M0.573.690.5788.1268.51SCRFD_1G0.644.192.3890.5774.80SCRFD_2.5G0.674.293.7892.1677.87SCRFD_10G3.864.995.1693.8783.05SCRFD_34G9.8011.796.0694.9285.29你的场景推荐规格理由手机 App、端侧设备SCRFD_500M0.57M 参数单线程 CPU 320x240 输入实测 11.4msRyzen 9 3950X服务器单路实时、精度预算中等SCRFD_2.5GHard 77.87比 500M 高近 9 个点延迟只多 0.6ms4.2ms安防/支付高精度服务SCRFD_10GHard 83.05延迟 4.9ms比 34G 省 6.8ms离线批处理、追求极限精度SCRFD_34GEasy/Medium/Hard 96.06/94.92/85.29全表最高两个可核对的补充数据单线程 CPU 实测Ryzen 9 3950X、OMP_NUM_THREADS1下 500M 规格在 640x480 输入为 28.3ms降到 320x240 只要 11.4ms——速度不够先降输入尺寸再考虑换更小模型同条件下 RetinaFace MobileNet-0.25 是 Hard 47.32、延迟 7.9ms小档位上 SCRFD 的精度优势主要来自算法而非模型大小。⚡ 它为什么快三个设计点计算再分配骨干通道深度是结构搜索的产物特征融合不放大通道——2.5G 档位配置 里 ResNetV1e 骨干 stage_planes[24, 48, 48, 80]PAFPNProgressive Attention Feature Pyramid让多层特征高效融合的特征金字塔输出仅 24 通道头部 in_channels 也是 24整档只有 0.67M 参数、2.53G 计算量。cls_reg_share 共享头分类和回归共用一组卷积头部计算直接砍半——配置里 cls_reg_shareTrue 且 strides_shareTrue三级 FPN 共用一套头头部 FLOPs 由层数决定而不是层数 × 两套卷积。anchor 中心缓存center_cache 按 (高, 宽, stride) 做键——推理脚本 只在第一帧算一遍坐标表同一输入尺寸第二次推理直接命中。精度侧则靠下面这段配置多尺度 anchor ATSSAdaptive Training Sample Selection自适应训练样本选择自动分配正样本。anchor_generatordict( ratios[1.0], scales[1, 2], # 每个位置 2 个尺度候选小脸在 stride8 层被覆盖 base_sizes[16, 64, 256], # 三级特征图基准尺寸随步幅递增 strides[8, 16, 32]), train_cfgdict( assignerdict(typeATSSAssigner, topk9)) # ATSS 按邻域统计自动选 top9 正样本免设 IoU 阈值人脸检测像城市布岗大脸密集的市中心不必每个路口都设岗小脸稀疏的郊区反而要加密。base_sizes[16, 64, 256]加scales[1, 2]让每个特征层都有两个尺度候选ATSS 再按每个 anchor 邻域的宽高统计自动判定谁算正样本不再由人工 IoU 阈值一刀切。容易踩的坑detect()直接断言崩掉ONNX 用固定 shape 导出时包装类读不到内置尺寸而detect()断言input_size参数与模型内置尺寸必须有一个非 None。调用时显式传input_size(640, 640)即可。kpss返回 Noneuse_kps由输出头数量推断6/10 个输出头无关键点9/15 个才有 5 点关键点非_KPS权重没有关键点头。选权重时认准_KPS后缀如scrfd_2p5gkps.onnx。画框位置偏一层detect()返回的框已经按1/det_scale映射回原图坐标系。不要再除以一次缩放系数。往深了走CPU 多核python-package 的 SCRFD 封装 用prepare(ctx_id)按 ctx_id 选 providerCPUExecutionProvider配合intra_op_num_threads设成物理核数上文 28.3ms 单线程数字只作基线GPU同一文件prepare(ctx_id)传非负设备号provider 换成CUDAExecutionProvider端侧500M 规格是首选SCRFD README 的 Demo 一节列了 ncnn / MNN / TNN / ONNXRuntime / TensorRT 五套 C 推理参考导出脚本 加--shape 640 640固定形状导出后可再交给 onnx-simplifier 优化。在整条链路里的位置SCRFD 是 InsightFace 整条链路的前端输出 (x1, y1, x2, y2, score) 人脸框_KPS权重另给 5 个关键点左眼、右眼、鼻尖、左嘴角、右嘴角。下游 ArcFace 识别器用这 5 点做仿射对齐把脸摆正到统一姿态再提特征face_analysis.py 组装的就是这条检测 → 对齐 → 识别/属性标准链路3D 重建模块同样消费检测框作为输入。这是 PBIDR 3D 重建的概览图上排是输入人脸往下依次是法向图和分解结果。检测框和关键点是这一整列结果的地基——框不准后面全歪。可跑通的 demo 是 examples/demo_analysis.pypip install -e python-package python examples/demo_analysis.py脚本用自带的 t1.jpg 并断言检出 6 张脸成功会写出 t1_output.jpg 并打印人脸两两相似度矩阵。边界与下一步适合静态图、逐帧视频、密集小脸与中等遮挡Hard 档就是小脸和密集场景的精度账本从 500M 的 68.51 到 34G 的 85.29每档预算都有对应规格不适合极端侧脸、严重遮挡没有额外保障需要配合姿态估计或活体检测模块深入search_tools 是两阶段结构搜索脚本以 Hard mAP 为目标定制 FLOPs 档位从这里入手导出细节在 tools/scrfd2onnx.py各档位配置集中在detection/scrfd/configs/scrfd/。一个值得知道的取舍2.5G_KPS 对 2.5GEasy 93.80 对 93.78、Hard 77.13 对 77.87延迟只多 0.1ms4.3 对 4.2参数量多 0.15M0.82 对 0.67——需要关键点时这个代价基本无感。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表