该模型设计是针对边缘计算设备或低算力设备(如用ARM推理)设计的实时超轻量级通用人脸检测模型,可以在低算力设备中如用ARM进行实时的通用场景的人脸检测推理,同样适用于移动端、PC。在模型大小上,默认FP32精度下(.pth)文件大小为 1.04~1.1MB,推理框架int8量化后大小为 300KB 左右。

在模型计算量上,320x240的输入分辨率下 90~109 MFlops左右。

模型有两个版本,version-slim(主干精简速度略快),version-RFB(加入了修改后的RFB模块,精度更高)。

提供了320x240、640x480不同输入分辨率下使用widerface训练的预训练模型,更好的工作于不同的应用场景。

支持onnx导出,便于移植推理。

测试过正常的运行环境Ubuntu16.04、Ubuntu18.04、Windows 10(inference)

Python3.6

Pytorch1.2

CUDA10.0 + CUDNN7.6

精度、速度、模型大小比较

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

Widerface测试在WIDER FACE val集测试精度(单尺度输入分辨率:320*240 或按最大边长320等比缩放)模型Easy SetMedium SetHard Setlibfacedetection v1(caffe)0.650.50.233

libfacedetection v2(caffe)0.7140.5850.306

Retinaface-Mobilenet-0.25 (Mxnet)0.7450.5530.232

version-slim0.7650.6620.385

version-RFB0.7840.6880.418在WIDER FACE val集测试精度(单尺度输入分辨率:VGA 640*480 或按最大边长640等比缩放 )模型Easy SetMedium SetHard Setlibfacedetection v1(caffe)0.7410.6830.421

libfacedetection v2(caffe)0.7730.7180.485

Retinaface-Mobilenet-0.25 (Mxnet)0.8790.8070.481

version-slim0.7570.7210.511

version-RFB0.8510.810.541该部分主要是测试模型在中小分辨率下的测试集效果。

RetinaFace-mnet(Retinaface-Mobilenet-0.25),来自于很棒的工作insightface,测试该网络时是将原图按最大边长320或者640等比缩放,所以人脸不会形变,其余网络采用固定尺寸resize。同时RetinaFace-mnet最优1600单尺度val测试集结果为0.887(Easy)/0.87(Medium)/0.791(Hard)。

终端设备推理速度树莓派4B MNN推理测试耗时 (单位:ms)(ARM/A72x4/1.5GHz/输入分辨率 : 320x240 /int8量化)模型1核2核3核4核libfacedetection v12816129.7

官方 Retinaface-Mobilenet-0.25 (Mxnet)462518.515

version-slim2916129.5

version-RFB3519.614.811

模型大小比较若干开源轻量级人脸检测模型大小比较 :模型模型文件大小(MB)libfacedetection v1(caffe)2.58

libfacedetection v2(caffe)3.34

官方 Retinaface-Mobilenet-0.25 (Mxnet)1.68

version-slim1.04

version-RFB1.11

生成VOC格式训练数据集以及训练流程下载widerface官网数据集或者下载我提供的训练集解压放入./data文件夹内:

(1)过滤掉10px*10px 小人脸后的干净widerface数据压缩包 :百度云盘 提取码:x5gt

(2)未过滤小人脸的完整widerface数据压缩包 :百度云盘 提取码:xeis(PS:如果下载的是过滤后的上述(1)中的数据包,则不需要执行这步) 由于widerface存在很多极小的不清楚的人脸,不太利于高效模型的收敛,所以需要过滤训练,默认过滤人脸大小10像素x10像素以下的人脸。

运行./data/wider_face_2_voc_add_landmark.pypython3 ./data/wider_face_2_voc_add_landmark.py

程序运行和完毕后会在./data目录下生成 wider_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

检测图片效果(输入分辨率:640x480)

PS若生产实际场景为中近距离、人脸大、人脸数少,则建议采用输入尺寸input_size:320(320x240)分辨率训练,并采用320x240图片大小输入进行预测推理,如使用提供的预训练模型Mb_Tiny_RFB_FD_train_input_320.pth进行推理。

若生产实际场景为中远距离、人脸中小、人脸数多,则建议采用:

(1)最优:输入尺寸input_size:640(640x480)分辨率训练,并采用同等或更大输入尺寸进行预测推理,如使用提供的预训练模型Mb_Tiny_RFB_FD_train_input_640.pth进行推理,更低的误报。

(2)次优:输入尺寸input_size:320(320x240)分辨率训练,并采用480x360或640x480大小输入进行预测推理,对于小人脸更敏感,误报会增加。各个场景的最佳效果需要调整输入分辨率从而在速度和精度中间取得平衡。

过大的输入分辨率虽然会增强小人脸的召回率,但是也会提高大、近距离人脸的误报率,而且推理速度延迟成倍增加。

过小的输入分辨率虽然会明显加快推理速度,但是会大幅降低小人脸的召回率。

生产场景的输入分辨率尽量与模型训练时的输入分辨率保持一致,上下浮动不宜过大。

TODO LIST加入widerface测试代码

完善部分测试数据

添加MNN、NCNN C++推理代码

Referencepytorch-ssd

libfacedetection

RFBNet

RFSong-779

Retinaface

github地址

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

java rfb,github上开源的超轻量级人脸检测模型及github地址。相关推荐

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

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

  2. Github上开源仿京东商城项目-安装部署(二)

    Github上开源仿京东商城项目-安装部署(二) 2.用IntelliJ IDEA 2020打开项目,选择SuperMarket目录, 将会自动安装相关项目的依赖包,这个时间大约1个半小时. 3.安装 ...

  3. GitHub上开源的YOLOv5

    GitHub上开源的YOLOv5 代码地址:https://github.com/ultralytics/YOLOv5 该存储库代表Ultralytics对未来的对象检测方法的开源研究,并结合了我们在 ...

  4. B 站硬件大佬在 GitHub 上开源了一款神器

    转自量子位 野生钢铁侠稚晖君在 GitHub 上开源了一个硬核项目. 上次自制纯手工打造 AI 小电视,播放量就超过 300 万,还登上了 b 站首页. 可能有些朋友对他还有点陌生. 他毕业于电子科大 ...

  5. 超级计算机阿波罗11,阿波罗11号制导计算机中指令模块和登月模块原始代码已在 GitHub 上开源...

    维基百科上"阿波罗11号"词条下对阿波罗 11 号的介绍如下: 阿波罗11号(英语:Apollo 11)是美国国家航空航天局的阿波罗计划中的第五次载人任务,是人类第一次登月任务,歷 ...

  6. github上 开源项目_在GitHub上组织开源项目的工作流程的3个技巧

    github上 开源项目 管理开源项目是一项艰巨的工作,挑战随着项目的发展而增长. 最终,一个项目可能需要满足不同的需求并跨越多个存储库. 这些问题不是技术问题,但对于解决扩展技术项目很重要. 诸如敏 ...

  7. B 站硬件大佬又在 GitHub 上开源了一款神器...

    公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 转自量子位 这次,野生钢铁侠稚晖君带着他的硬核项目又来了. 上次自制纯手工打 ...

  8. 【githubshare】国外工程师 Neil 在 GitHub 上开源了任天堂 64 模拟器

    国外工程师 Neil 在 GitHub 上开源了任天堂 64 模拟器(N64):N64Wasm. 你只需将提前下载好的 ROM,拖拽至 Neil 开发的 Web 应用上,即可在页面上玩 N64 游戏. ...

  9. Github上开源电商系统mall 的学习

    Github上开源电商系统mall 的学习 前言 本来是打算按目录下的结构来学习的,突然发现这样下来整体学习下来对自己而言思路不清晰,所以就想的怎样可以更清晰一些,方便地去了解,熟悉整个业务,整体项目 ...

最新文章

  1. java虚拟机的内存模型_JVM(Java虚拟机)内存模型(转载/整理)
  2. 基于泛型编程的序列化实现方法
  3. 苹果发布新版iOS12.3:高通专利功能回归
  4. Applet授权细节
  5. 【Ceres基本使用方法】使用Ceres拟合曲线求解最小二乘问题
  6. hadoop-执行mapreduce时主机名非法的处理
  7. python查看所有异常类_Python调试常见异常汇总
  8. laravel 集合从父中移除_在 Laravel 7 中优雅使用 UUID 教程
  9. 我的私房IT学习网站
  10. 小米刷机一直在android界面,小米手机变砖怎么办?(小白刷机记)卡在开机怎么办?界面进不去,重启不管用​...
  11. asp与php的区别
  12. 电商技术解密之商品详情页
  13. 四种方法解决JumpGame
  14. 《Python基础教程》PDF
  15. CRM下午茶(九)-老客户挽回
  16. 众望所归!《觉醒年代》《山海情》成玉兰奖大赢家
  17. Cadence Allegro PCB设计88问解析(四) 之 Allegro中快捷键Funckey与alias设置
  18. error: converting to execution character set: Invalid or incomplete multibyte or wide character
  19. 周末苦逼码代码,为css3的强大所颤抖了
  20. 06Java第六课 获取输入框内容(传对象,参数,值)

热门文章

  1. aria2c下载迅雷离线
  2. 'GO' 附近有语法错误问题,我真是无语~
  3. mysql show的用法
  4. git push 失败出现error: src refspec master does not match any.解决方案
  5. 【实践】多模态内容理解技术在腾讯搜索中的应用及实践.pdf(附下载链接)
  6. 通俗易懂!视觉slam第八部分——李群,李代数
  7. Could not install packages due to an EnvironmentError: [Errno 13] Permission denied解决办法
  8. 分词之后的如何做特征选择_抑郁症康复之后,如何避免复发?我们可以从这几方面来做...
  9. C++STL之优先队列
  10. Leetcode每日一题:52.N-Queens II(N皇后Ⅱ)