人脸检测之Ultra-Light-Fast-Generic-Face-Detector-1MB

1. 简介

用户 Linzaer 在 Github 上推出了一款适用于边缘计算设备、移动端设备以及 PC 的超轻量级通用人脸检测模型,该模型文件大小仅 1MB,320x240 输入下计算量仅 90MFlops。项目推出不久即引起了大家的关注,登上了今天的 Github trending。

github地址:https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB

该模型设计是针对边缘计算设备或低算力设备 (如用 ARM 推理) 设计的一款实时超轻量级通用人脸检测模型,旨在能在低算力设备中如用 ARM 进行实时的通用场景的人脸检测推理,同样适用于移动端环境(Android & IOS)、PC 环境(CPU & GPU )。有如下几个特点:

  • 在模型大小方面,默认 FP32 精度下(.pth)文件大小为 1.1MB,推理框架 int8 量化后大小为 300KB 左右。
  • 在模型计算量方面,320x240 的输入分辨率下仅 90~109 MFlops 左右,足够轻量。
  • 模型设计有两个版本,version-slim(主干精简速度略快),version-RFB(加入了修改后的 RFB 模块,精度更高)。
  • 提供了 320x240、640x480 不同输入分辨率下使用 widerface 训练的预训练模型,更好的工作于不同的应用场景。
  • 无特殊算子,支持 onnx 导出,便于移植推理。

2. 测试过正常的运行环境

  • Ubuntu16.04、Ubuntu18.04、Windows 10
  • Python3.6
  • Pytorch1.2
  • CUDA10.0 + CUDNN7.6

3. 精度、速度、场景测试、模型大小比较

训练集是使用 Retinaface 提供的清理过的 widerface 标签配合 widerface 数据集生成 VOC 训练集(PS:以下测试结果均为本人测试,结果可能有部分出入)。

3.1 Widerface 测试

在 WIDER FACE test 集测试精度(单尺度输入分辨率:320240)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5lyuTc0s-1589620254767)(https://ask.qcloudimg.com/http-save/yehe-1651294/at8mlcz872.png?imageView2/2/w/1620#pic_center)]
在 WIDER FACE test 集测试精度(单尺度输入分辨率:VGA 640
480)
在这里插入图片描述

3.2 终端设备推理速度

树莓派 4B MNN 推理测试耗时 (单位:ms)(ARM/A72x4/1.5GHz/输入分辨率 : 320x240 /int8 量化)
在这里插入图片描述

3.3 场景测试

若干不同场景视频大致有效人脸检出数量测试(单位:个)(分辨率:VGA 640*480,阈值 0.6):
在这里插入图片描述

3.4 模型大小比较

若干主流开源轻量级人脸检测模型大小比较 :
在这里插入图片描述
此外,如果读者希望复现这些测试,或者亲自试试训练效果,那么可以直接下载 widerface 官网数据集或者下载作者提供的训练集。这些数据集都需要放到./data 文件夹,且需要过滤掉 10×10 像素以下的人脸。如果从官网下载的数据集,那么还需要运行一个脚本过滤太小的人脸。
在这里插入图片描述
在移除了 10*10 像素以下的极小人脸后,这个超轻量人脸检测模型能识别该图中的335张人脸。
至此 VOC 训练集准备完毕,项目根目录下分别有 train_mb_tiny_fd.sh 和 train_mb_tiny_RFB_fd.sh 两个脚本,前者用于训练 slim 版本模型,后者用于训练 RFB 版本模型,默认参数已设置好,参数如需微调请参考 ./train.py 中关于各训练超参数的说明。

4. 网络结构

4.1 优点

  • 基于ssd修改。速度超级快,MNN上测试,MTCNN得20ms,该模型只要4ms。精度上不如MTCNN。
  • 支持NCNN,MNN。包含2个版本的模型,slim版本(速度快)和RFB版本(精度高)。

4.2 缺点

  • 不支持人脸关键点检测

4.3 anchor设计

在这里插入图片描述
该模型结构基于ssd进行修改。原始ssd有6个分支做预测,这里只采用了4个分支做预测。每一个分支的基础anchor分别为3个,2个,2个,3个。

如config文件中,

min_boxes = [[10, 16, 24], [32, 48], [64, 96], [128, 192, 256]]

原始的输入图片大小固定了,网络的结构固定了,每一个分支的输出的特征图大小就定下来了。然后anchor唯一可以调的参数,就是上面的了。

4.4 适合的应用场景

边缘计算,嵌入式设备计算,精度要求不是很高,速度要求很快的场合的很好选择。

5. 最后

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值