ARTICLE DETAIL

资讯详情

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

SCRFD轻量人脸检测:3步实现4ms实时推理

SCRFD轻量人脸检测:3步实现4ms实时推理 SCRFD轻量人脸检测3步实现4ms实时推理【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface在安防、视频审核等场景一帧画面里可能同时出现大脸、小脸和侧脸传统检测器要么漏检小脸要么推理慢到拖垮整条流水线。InsightFace 中的 SCRFD 用 0.67M 参数的网络在 VGA 分辨率下约 4.2ms 完成一张人脸检测是兼顾精度与速度的轻量方案。这篇文章拆解它的设计要点并给你最短的跑通路径。SCRFD 核心原理拆解官方示例图包含 6 张不同尺度的人脸。多尺度锚框是怎么覆盖大小脸的打开detection/scrfd/configs/scrfd/scrfd_2.5g.py检测头里的锚框生成器配置了base_sizes[16, 64, 256]、strides[8, 16, 32]、scales[1, 2]。也就是说模型在 3 个特征层上、每层各放 2 个不同尺度的锚框从 16 像素级的小脸到几百像素的大脸都能对上。这就像用一套不同倍数的放大镜拍照片——远处小脸用高倍镜细粒度特征层近处大脸用低倍镜粗粒度特征层每个层级各管一段互不干扰。轻量特征金字塔是怎么把计算量压下来的传统 FPN 的中间通道数往往上百SCRFD 的颈部用的是 PAFPN配置为out_channels24、start_level1、add_extra_convson_output只向上融合出 3 个检测层。通道数压到 24 之后特征图逐层上采样和卷积的开销非常小这正是整个网络能控制在 2.5GF 计算量的关键。语义信息靠高层特征位置细节靠低层特征用start_level1保留第二层浅特征参与融合小脸的边缘信息不容易丢。动态标签分配是怎么解决样本失衡的人脸尺寸分布极不均匀用固定 IoU 阈值划分正负样本时要么小脸正样本太少要么大脸背景样本爆炸。SCRFD 在train_cfg中使用ATSSAssignertopk9对每个真值框统计所有候选锚框与它的 IoU 分布动态取统计量最接近的 9 个作为正样本。分配标准随样本自身分布自适应不需要人工为每档人脸尺寸调阈值。最小可用示例下面这段代码用FaceAnalysis加载 SCRFD 检测器对示例图跑一次检测from insightface.app import FaceAnalysis from insightface.data import get_image app FaceAnalysis() app.prepare(ctx_id-1) print(len(app.get(get_image(t1))))需要insightface0.3并安装onnxruntimeGPU 环境装onnxruntime-gpu首次运行会自动下载预训练模型ctx_id-1表示走 CPUdet_size不传时默认自动按 128x128 640x640 双尺度检测完整示例可参考examples/demo_analysis.py预训练模型仅限非商业研究用途效果与对比验证WIDERFace 验证集、VGA 分辨率下的官方评测数据模型Easy 精度(%)参数量(M)推理耗时(ms)DSFD (ResNet152)94.29120.0655.6RetinaFace (ResNet50)94.9229.5021.7SCRFD-2.5GF93.780.674.2SCRFD-10GF95.163.864.9SCRFD-2.5GF 以约 1/44 的参数量拿到与 RetinaFace 相当的第一档精度推理耗时约为其 1/5把算力预算提高到 10GF精度反超全部对比模型而耗时几乎不变。常见坑与调优建议小脸漏检大图统一缩到 640 后小于 32 像素的脸细节被抹掉。→ 保持默认 det_size128640 双尺度自动检测或手动传det_size(320, 320), (640, 640)多尺度组合。CPU 上推理偏慢未走 CPUExecutionProvider 或线程数没调。→prepare(ctx_id-1)并设置OMP_NUM_THREADS与可用核数匹配官方 README 中单线程 640x480 输入约 28ms多线程下可明显降低。导出 ONNX 后不支持任意输入直接导出动态 shape 模型在某些推理引擎上无法加速。→ 用detection/scrfd/tools/scrfd2onnx.py加--shape 640 640固化输入再用 onnx-simplifier 精简。训练时正样本数异常波动把分配器换成了固定 IoU 阈值的 MaxIoU。→ 保留配置里的ATSSAssigner(topk9)它专为多尺度人脸设计。需要五点关键点普通 2.5G 模型只输出框和置信度。→ 换成scrfd_2.5g_bnkps.py对应的 KPS 模型detect会额外返回 5 个关键点。SCRFD 的价值在于用 2.5GF 的算力预算让人脸分析流水线的检测环节不再是最慢的一环识别、属性等下游模块可以放心加大投入。下一步可以探索detection/scrfd/search_tools/里的两步网络搜索流程针对自己的场景重新搜索出更合适的骨干结构。文中性能数据来自项目 README 的 WIDERFace 官方评测VGA 分辨率实际耗时会随硬件与推理框架不同而变化。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表