• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ultra-Light-Fast-Generic-Face-Detector-1MB: 一款超轻量级通用人脸检测模型(模型文 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

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

开源软件地址:

https://gitee.com/huiwei13/Ultra-Light-Fast-Generic-Face-Detector-1MB

开源软件介绍:

English | 中文简体

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

轻量级人脸检测模型

img1该模型是针对边缘计算设备设计的轻量人脸检测模型。

测试过正常的运行环境

  • 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 Set
libfacedetection v1(caffe)0.650.50.233
libfacedetection v2(caffe)0.7140.5850.306
Retinaface-Mobilenet-0.25 (Mxnet)0.7450.5530.232
version-slim0.770.6710.395
version-RFB0.7870.6980.438
  • 在WIDER FACE val集测试精度(单尺度输入分辨率:VGA 640*480 或按最大边长640等比缩放
模型Easy SetMedium SetHard Set
libfacedetection v1(caffe)0.7410.6830.421
libfacedetection v2(caffe)0.7730.7180.485
Retinaface-Mobilenet-0.25 (Mxnet)0.8790.8070.481
version-slim0.8530.8190.539
version-RFB0.8550.8220.579
  • 该部分主要是测试模型在中小分辨率下的测试集效果。
  • 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格式训练数据集以及训练流程

  1. 下载widerface官网数据集或者下载我提供的训练集解压放入./data文件夹内:

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

(2)未过滤小人脸的完整widerface数据压缩包 :百度云盘 (提取码:xeis)Google Drive

  1. (PS:如果下载的是过滤后的上述(1)中的数据包,则不需要执行这步) 由于widerface存在很多极小的不清楚的人脸,不太利于高效模型的收敛,所以需要过滤训练,默认过滤人脸大小10像素x10像素以下的人脸。运行./data/wider_face_2_voc_add_landmark.py
 python3 ./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
  1. 至此VOC训练集准备完毕,项目根目录下分别有 train-version-slim.shtrain-version-RFB.sh 两个脚本,前者用于训练slim版本模型,后者用于训练RFB版本模型,默认参数已设置好,参数如需微调请参考 ./train.py 中关于各训练超参数的说明。

  2. 运行train-version-slim.shtrain-version-RFB.sh即可

sh train-version-slim.sh 或者 sh train-version-RFB.sh

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

img1img1img1

PS

  • 若生产实际场景为中近距离、人脸大、人脸数少,则建议采用输入尺寸input_size:320(320x240)分辨率训练,并采用 320x240/160x120/128x96 图片大小输入进行预测推理,如使用提供的预训练模型 version-slim-320.pth 或者 version-RFB-320.pth 进行推理。
  • 若生产实际场景为中远距离、人脸中小、人脸数多,则建议采用:

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

(2)次优:输入尺寸input_size:320(320x240)分辨率训练,并采用480x360或640x480大小输入进行预测推理,对于小人脸更敏感,误报会增加。

  • 各个场景的最佳效果需要调整输入分辨率从而在速度和精度中间取得平衡。
  • 过大的输入分辨率虽然会增强小人脸的召回率,但是也会提高大、近距离人脸的误报率,而且推理速度延迟成倍增加。
  • 过小的输入分辨率虽然会明显加快推理速度,但是会大幅降低小人脸的召回率。
  • 生产场景的输入分辨率尽量与模型训练时的输入分辨率保持一致,上下浮动不宜过大。

TODO LIST

  • 完善测试数据

Completed list

Reference


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap