C# RFB Face Detection

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

介绍了一种轻量级的面部检测模型,适用于边缘计算设备。模型大小为1.04~1.1MB,计算量为90~109 MFlops。有两个版本,版本-slim更简化,速度稍快,版本-RFB精度更高。提供了不同输入分辨率的Widerface训练预训练模型,适应不同应用场景。支持onnx导出,便于迁移和推理。

🔎

延伸解读

模型选型:slim与RFB的权衡

文章提供了两个模型版本:slim版简化了网络骨干,速度稍快;RFB版加入了改进的RFB模块,精度更高。选择时需根据应用场景对速度和精度的需求进行权衡。例如,对实时性要求极高的场景可能更适合slim版,而需要更准确检测的场景则可能选择RFB版。

输入分辨率与预训练模型

模型支持320x240和640x480两种输入分辨率,并提供了相应的Widerface预训练模型。较高分辨率通常能提升检测精度,但也会增加计算量。开发者应根据实际场景中的目标大小和计算资源选择合适的分辨率。

ONNX导出与C#部署

模型支持导出为ONNX格式,便于跨平台部署。文章示例使用C#和Microsoft.ML.OnnxRuntime进行推理,展示了从图像预处理、模型推理到后处理的完整流程。这为.NET开发者集成人脸检测功能提供了参考。

输出解析与后处理

模型输出为Float[-1, 7]的张量,每行包含批次号、类别ID、置信度、边界框坐标(x1,y1,x2,y2)。代码示例中,通过置信度阈值过滤检测结果,并将归一化坐标转换为原图坐标。开发者需注意坐标转换和阈值调整以适应不同场景。

❓

Q&A

这个面部检测模型的大小和计算量是多少?

模型大小为1.04~1.1MB,计算量为90~109 MFlops。

面部检测模型有哪些版本,它们有什么区别?

有两个版本:版本-slim(速度稍快)和版本-RFB(精度更高)。

这个模型支持哪些输入分辨率?

模型支持320x240和640x480的输入分辨率。

如何在项目中使用这个面部检测模型?

可以使用VS2022、.net framework 4.8、OpenCvSharp 4.8和Microsoft.ML.OnnxRuntime 1.16.2进行项目开发。

这个模型支持什么格式的导出?

模型支持onnx格式的导出,便于迁移和推理。

模型的输入和输出格式是什么?

输入格式为Float[1, 3, 240, 320],输出格式为Float[-1, 7]。

🏷️

标签

➡️

继续阅读