Ultra-Light-Fast-Generic-Face-Detector-1MB

1MB轻量级通用人脸检测模型

作者表示该模型设计是为了边缘计算设备以及低功耗设备(如arm)设计的实时超轻量级通用人脸检测模型。它可以用于arm等低功耗计算设备,实现实时的通用场景人脸。

检测推理同样适用于移动终端或pc机。

作者加入widerface测试代码,完善部分测试数据及添加MNN、NCNN C++推理代码等。

  • 从模型大小来看,默认的fp32精度(.pth)文件大小为1.04~1.1MB,推理帧int8约为300KB。
  • 在模型计算中,320x240的输入分辨率约为90~109mflops。
  • 该模型有两个版本,版本slim(简化速度稍快)、版本rfb(带有修改后的rfb模块,精度更高)。
  • 提供使用320x240和640x480不同输入分辨率的Widerface培训的预培训模型,以便更好地在不同的应用场景中工作。
  • 支持onxx导出,易于移植推理。

作者测试过PC运行环境

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

我们来看下速度、精度和模型大小对比数据

训练集是使用Retinaface提供的清洁过的Wideface标记以及Wideface数据集生成的,以生成VOC训练集(PS:以下测试结果由我本人测试,结果可能有所不同)。

Widerface测试情况

宽面测试集中的测试精度(单标度输入分辨率:320*240)

模型Easy SetMedium SetHard Setlibfacedetection v1(caffe)0.650.50.233libfacedetection v2(caffe)0.7140.5850.306官方 Retinaface-Mobilenet-0.25 (Mxnet)0.7450.5530.232version-slim0.7650.6620.385version-RFB0.7840.6880.418

宽面测试集中的测试精度(单刻度输入分辨率:VGA 640*480)

模型Easy SetMedium SetHard Setlibfacedetection v1(caffe)0.7410.6830.421libfacedetection v2(caffe)0.7730.7180.485官方 Retinaface-Mobilenet-0.25 (Mxnet)0.8790.8070.481version-slim0.7570.7210.511version-RFB0.8510.810.541

看看在树莓派推理速度

树莓pi 4b mnn推理测试时间(ms)(arm/a72x4/1.5ghz/输入分辨率:320x240/int8量化)

模型1核2核3核4核libfacedetection v12816129.7官方 Retinaface-Mobilenet-0.25 (Mxnet)462518.515version-slim2916129.5version-RFB3519.614.811

我们来看看模型大小数据比较

几种主流开源轻量级人脸检测模型的大小比较:

模型模型文件大小(MB)libfacedetection v1(caffe)2.58libfacedetection v2(caffe)3.34官方 Retinaface-Mobilenet-0.25 (Mxnet)1.68version-slim1.04version-RFB1.11

生成voc格式的训练数据集和训练流程

一、下载wideface官方网站数据集或下载我提供的培训集并将其提取到./data文件夹:

(1)过滤掉10px*10px面后干净的wideface数据压缩包

(2)完整的未过滤小面宽面数据压缩包

(注:如果下载上述(1)中的过滤包,则无需执行此步骤)

二、由于宽空间中有许多小而不清晰的面,不利于有效模型的收敛,因此需要进行过滤。训练时,默认值是过滤10像素x 10像素的脸大小。

运行./data/wide_face_2_voc_add_landmark.py

python3 ./data/wider_face_2_voc_add_landmark.py

程序运行并完成后,将在./data目录中生成更宽的

“u face_add_lm_10_10”文件夹。解压后文件夹数据和数据包(1)相同。完整的目录结构如下:

 data/retinaface_labels/test/train/val/wider_face/WIDER_test/WIDER_train/WIDER_val/wider_face_add_lm_10_10/Annotations/ImageSets/JPEGImages/wider_face_2_voc_add_landmark.py

三、VOC训练集已准备就绪,在项目的根目录中有两个脚本

train_mb_tiny_fd.sh和train_mb_tiny_rfb_fd.sh。

四、前者用于训练slim版本模型,后者用于训练rfb版本模型。已设置默认参数。有关微调,请参阅./train.py中每个训练超参数的说明。

运行train_mb_tiny_fd.sh和train_mb_tiny_rfb_fd.sh

sh train_mb_tiny_fd.sh 或者 sh train_mb_tiny_RFB_fd.sh

我们来看看几张分辨率为640*480的人脸检测效果图:

  • 如果实际的生产场景是中距离、大面和小面,建议使用输入尺寸输入尺寸:320(320x240)分辨率训练,并使用320x240图像尺寸输入进行预测推理,例如使用提供的预训练模型。用于推理的mb_tiny_rfb_fd_train_320.pth输入。
  • 如果实际的生产场景是中长距离、小面和大量面,建议:
  • (1)最优:输入大小输入大小:640(640x480)分辨率训练,并使用相同或更大的输入大小进行预测推理,如使用提供的训练前模型mb_tiny_rfb_fd_train_640.pth进行推理,误报率更低。
  • (2)次优:输入大小输入大小:320(320x240)分辨率训练,并使用480x360或640x480大小输入进行预测推理,对小脸更敏感,误报会增加。
  • 每个场景的最佳结果都需要调整输入分辨率,以便在速度和精度之间取得平衡。
  • 过大的输入分辨率会提高小人脸的召回率,但也会增加大、近距离人脸的误报率,推理速度会成倍增加。
  • 输入分辨率过小会显著加快推理速度,但会大大降低小人脸的召回率。
  • 制作场景的输入分辨率应尽量与模型训练的输入分辨率一致,上下浮动不宜过大。

相关数据集及代码大家可以在Github上找得到。

3模型大小_Github推荐一个国内牛人开发的超轻量级通用人脸检测模型相关推荐

  1. 大小仅1MB,超轻量级通用人脸检测模型登上GitHub趋势榜

    机器之心报道 项目作者:Linzaer 近日,用户 Linzaer 在 Github 上推出了一款适用于边缘计算设备.移动端设备以及 PC 的超轻量级通用人脸检测模型,该模型文件大小仅 1MB,320 ...

  2. 超轻量级通用人脸检测模型

    项目地址:github.com/Linzaer/Ult- 以下是作者对此项目的介绍: 该模型设计是针对边缘计算设备或低算力设备 (如用 ARM 推理) 设计的一款实时超轻量级通用人脸检测模型,旨在能在 ...

  3. 模型仅1MB,更轻量的人脸检测模型开源,效果不弱于主流算法

    乾明 编辑整理  量子位 报道 | 公众号 QbitAI AI模型越来越小,需要的算力也也来越弱,但精度依旧有保障. 最新代表,是一个刚在GitHub上开源的中文项目:一款超轻量级通用人脸检测模型. ...

  4. java rfb,github上开源的超轻量级人脸检测模型及github地址。

    该模型设计是针对边缘计算设备或低算力设备(如用ARM推理)设计的实时超轻量级通用人脸检测模型,可以在低算力设备中如用ARM进行实时的通用场景的人脸检测推理,同样适用于移动端.PC.在模型大小上,默认F ...

  5. 如何成为一个技术“牛人”

    今天给浙江大学过来的几个还没有毕业的研究生做面试,这些研究生是想来公司实习的.在面试的过程中,一个学生问我"我们有C/C++.JAVA等等多种语言,我如何才能成为某一方面的一个技术牛人呢?这 ...

  6. 听框架师——李云谈如何成为一个技术“牛人”

    今天给浙江大学过来的几个还没有毕业的研究生做面试,这些研究生是想来公司实习的.在面试的过程中,一个学生问我"我们有C/C++.JAVA等等多种语言,我如何才能成为某一方面的一个技术牛人呢?这 ...

  7. DBFace升级,模型仅1.3M的轻量级高精度人脸检测模型

    本文转载自DeepBlue深兰科技 已获原文作者授权转载,请勿二次转载 前段时间DBFace人脸检测库横空出世,被高度评价为:"这个仅7M大小的人脸识别模型几乎识别出了世界最大自拍照中的所有 ...

  8. WiderFace数据集用于训练人脸检测模型

    下载链接: http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/ 该数据集可用于进行人脸检测模型的训练 如果做训练,可以点击网页中的 (国内还是百度吧,会快一 ...

  9. 目标检测 YOLO v3 训练 人脸检测模型

    YOLO,是You Only Look Once的缩写,一种基于深度卷积神经网络的物体检测算法,YOLO v3是YOLO的第3个版本,检测算法更快更准. 本文源码:https://github.com ...

最新文章

  1. Keil中RO-data、RW-data、ZI-data意义
  2. 消除软硬件鸿沟,芯客网完美支持智能硬件在移动互联时代的爆发
  3. 在JVM之下–类加载器
  4. Confluent Platform 3.0支持使用Kafka Streams实现实时的数据处理(最新版已经是3.1了,支持kafka0.10了)...
  5. python指定范围内加法代码解析
  6. BLOB,TEXT GEOMETRY or JSON column 'xxx' can't have a default value query问题解决
  7. 【Python爬虫】Requests库网络爬虫实战
  8. a + b + c 求和
  9. Linux 信号量互斥编程
  10. 项目管理团队建设成功经验
  11. 18. Make interfaces esay to use correctly and hard to use incorrectly
  12. linux安装yum报错Unable to locate package yum
  13. JS简单实现分页显示
  14. 无线网络有信号显示未连接网络连接服务器,路由器无线网络受限制或无连接怎么办...
  15. python中histogram_python – 了解Pillow中的histogram()
  16. 黑苹果 hackintosh 啰嗦模式
  17. BH1750FVI调试
  18. 阿里P8、P9税后180W及以上到底是什么水平?
  19. 资深程序员才能看懂的幽默时刻
  20. 文件服务器网盘,文件服务器 网盘 云

热门文章

  1. 纹理和基元_通过粘性仙人掌基元进行延迟加载和缓存
  2. java mic波形识别_会议季Mic Drop:您不应该错过的13场Java演讲
  3. 接口中默认方法和静态方法_接口中的默认方法和静态方法
  4. ejb生命周期_EJB 3.x:生命周期和并发模型(第1部分)
  5. AWS Lambda将数据保存在DynamoDB中
  6. Spring Boot中的@SpringBootConfiguration注释
  7. ldap2.8.2_Spring LDAP 2.0.0发布
  8. 设计模式 原型模式_原型设计模式:创建另一个小车
  9. apache camel_发掘Apache Camel的力量
  10. mvvm 耗时加载进度条_ZK的实际应用:MVVM –加载和渲染数据