C# RFB Face Detection
内容提要
介绍了一种轻量级的面部检测模型,适用于边缘计算设备。模型大小为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]。