百度飞桨口罩人脸检测与识别模型再升级,视频教学带你实战

2020 年 2 月 25 日 机器之心

机器之心发布

机器之心编辑部

自百度开源业界首个口罩人脸检测及分类模型之后,开发者社区进行了充分讨论并提出了该模型存在的一些问题和不足。在本文中,百度飞桨官方对这些反馈积极回应,同时提出四大升级方案,为开发者一一解惑。

2 月 13 日,机器之心全网首发文章《AI 战「疫」:百度开源业界首个口罩人脸检测及分类模型》,文中介绍,该模型可以有效检测在密集人流区域中携带和未携戴口罩的所有人脸,同时判断是否佩戴口罩。


由于目前正值很多企业复工,口罩检测对于后续复工的安全性毋庸置疑,文章一经发出,在开发者社区引起巨大反响,截至目前发稿,百度飞桨官方技术交流 QQ 群已经达到人数上限,再加入的同学,只能加入新群。


在技术讨论群里,广大开发者针对口罩人脸检测与分类模型的技术应用展开了充分的讨论,有些开发者实战反馈,模型在实际场景下还是有一些提升空间。


比如这样,一张神秘形状的纸被判断为口罩,



再比如这样的,一个销魂的手指挡住了口鼻,



除了 badcase 本身,很多开发者还遇到了各种各样的问题,比如实际的环境很复杂,中远景模型效果还不错,但是近景就会不太理想。还有的是监控摄像头的像素分辨率,也会带来不同的判断结果。同时,更多的需求也反馈出来:


  1. 能不能开放模型的一些接口出来?

  2. 在 PC 端,除了 python 部署,有没有高性能的 C++部署教程呀?

  3. 如果想做视频流的检测,应该怎么办呀?


需求很多,百度飞桨给出的答案是肯定的。


作为国内唯一的开源开放深度学习平台,技术服务支持肯定是没得说,能给的都给你,四波宠粉的新进展为开发者奉上!


第一波:口罩模型性能升级


针对用户提出的 badcase 问题,口罩人脸检测与分类模型研发人员也是高度重视,并且迅速开展了 V1.1.0 的优化,增补了更多的数据集,使得训练准确率进一步提升。通过开放接口,增加金字塔策略等方式,使得在各种极端尺寸下检测不到人脸的问题得到改善,召回率也有明显提升。同时,口罩分类模型也经过一周有效的数据迭代,准确率从之前的 96.5% 提升到 97.27%,优化效果对比:


左侧为优化前右侧为优化后。


可以看到,新加入大量数据集重训之后的第二版模型,在一些特别的场景下:比如面部异物、口鼻遮挡、侧脸等 case 下都有明显的质量提升。


而且,随着更多开发者提供的更加庞大的数据和 badcase 增加,数据模型仍在不断的改进中,有兴趣的开发者也欢迎持续关注。


那么,有开发者肯定想问了,我想用新模型应该怎么用啊?非常简单,1 个参数搞定


第二波:PaddleHub 新 Feature


选择升级到新版本


# 加载 pyramidbox_lite_server_mask, 选择最新的模型版本 1.1.0,则会自动升级至该版本


hub.Module(name="pyramidbox_lite_server_mask", version="1.1.0")


接口新参数


def face_detection(
    data,
    use_gpu=False,
    batch_size=1,
    shrink=0.5,
    use_multi_scale=False
)


shrink


该参数用于设置图片的缩放比例,输入值应位于区间 (0 ~ 1],默认为 0.5


调用示例


module = hub.Module(name="pyramidbox_lite_server_mask", version="1.1.0")
input_data = {"image":["/PATH/TO/IMAGE"]}
module.face_detection(data=input_data, shrink=0.2)


参数影响


shrink 值越大,则对于输入图片中的小尺寸人脸有更好的检测效果,反之则对于大尺寸人脸有更好的检测。同时,shrink 值越大,则模型计算成本越高。


建议用户根据实际应用场景调整该值,尽可能使输入图像的人脸尺寸在缩放后分布于 8 ~ 130pix 之间


use_multi_scale


该参数用于设置是否开启多尺度的人脸检测,默认为关闭


调用示例


module = hub.Module(name="pyramidbox_lite_server_mask", version="1.1.0")
input_data = {"image":["/PATH/TO/IMAGE"]}
module.face_detection(data=input_data, use_multi_scale=True)


参数影响


开启多尺度人脸检测能够更好的检测到输入图像中不同尺寸的人脸,但是会增加模型计算量,降低预测速度,建议在对人脸漏检要求比较低的场景下开启该设置。


这两个关键参数接口的开放,可以满足很大一部分场景下的业务需求,迅速提升性能。


升级后的模型,调参之后准确率妥妥的了,但是开发者落地遇到部署问题又不会了,来来来,PaddleHub 来教你!


第三波:基于 PaddleHub 实现口罩佩戴检测应用落地部署


在第一版的模型发布中,我们提供了一行代码服务器端部署,可以通过 PaddleHub 快速体验模型效果、搭建在线服务,


随着第二版模型的发布,基于飞桨本次开源的口罩佩戴识别模型, 提供了一个完整的支持视频流的 Web Demo,以及高性能的 Python 和 C++集成部署方案, 适用于不同场景下的软件集成。


完整的视频流演示 DEMO:https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.5/demo/mask_detection


该 Demo 演示了对视频的实时口罩佩戴检测,同时可以将没有佩戴的口罩人脸记录下来。类似的应用可以部署在大型场馆出入口,学校,医院,交通通道出入口,人脸识别闸机,机器人上,支持的方案有:安卓方案(如 RK3399 的人脸识别机,机器人),Ubuntu 边缘计算,WindowsPC+摄像头,识别率 80%~90%。如果对于人脸识别机场景,精度要求会比较高,模型应用时需要对清晰度、距离、图像大小等因素进行调整后部署。



视频链接:https://www.bilibili.com/video/av88962128


效果分析


可以看到识别率在 80~90% 之前,稍小的人脸有误识别的情况,有些挡住嘴的场景也被误识别成了戴口罩,一个人带着口罩,鼻子漏出来识别成没有戴口罩,这个是合理的因为的鼻子漏出来是佩戴不规范。这个模型应用在门口,狭长通道,人脸识别机所在位置都是可以的。



感兴趣的同学们赶紧试试吧


也有开发者提到,之前的 PaddleHub 一键服务化部署方案确实非常简单,但是无法满足一些对速度敏感的场景和软件集成得需求。那没问题啊,高性能的部署集成方案百度飞桨也提供哈。


高性能 Python/C++部署方案


1、首先需要安装 PaddleHub


  • 环境依赖 Python==2.7 or Python>=3.5 for Linux or Mac,Python>=3.6 for Windows,PaddlePaddle>=1.5

  • 安装方式:pip install paddlehub


2、从 PaddleHub 导出预测模型


在有网络访问条件下,执行 python export_model.py 导出两个可用于推理部署的口罩模型,其中:pyramidbox_lite_mobile_mask 为移动版模型, 模型更小,计算量低;pyramidbox_lite_server_mask 为服务器版模型,在此推荐该版本模型,精度相对移动版本更高,也是本次重点精度升级的模型。


成功执行代码后导出的模型路径结构:


pyramidbox_lite_server_mask
|
├── mask_detector   # 口罩人脸分类模型
|   ├── __model__   # 模型文件
│   └── __params__  # 参数文件
|
└── pyramidbox_lite # 口罩人脸检测模型
    ├── __model__   # 模型文件
    └── __params__  # 参数文件


3. Python 预测部署编译


支持在 Windows 和 Linux 上编译并部署 Python 项目,内容比较长,建议可以直接参考链接文档:https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.5/demo/mask_detection/python


4. C++预测部署编译


本项目支持在 Windows 和 Linux 上编译并部署 C++项目,流程比较复杂,建议直接参考链接文档:https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.5/demo/mask_detection/cpp


综合预测性能评测


通过内部的数据评测,相比于 PaddleHub 原生 API,借助飞桨高性能预测引擎,在 GPU 条件下速度提升了 300%,CPU 可以提速 50%。


简直效果炸裂,如果对于预测速度有要求的开发者,欢迎使用高性能预测方案部署。


第四波:文档教程丰富与开发者生态贡献交流


2 月 13 日稿件发出后,也有开发者在 QQ 群反馈说之前对 PaddleHub 特性了解不够深入,能不能提供一些系统性的介绍。以下为飞桨团队为开发者提供的教程资源:


  • AIStudio 在线教程:https://aistudio.baidu.com/aistudio/projectDetail/267322

  • B 站视频:https://www.bilibili.com/video/av89960161?from=search&seid=3613394603372565887



目前,开源的口罩人脸检测与识别模型,已经在中油瑞飞等多家企业实际应用落地,对于企业的顺利复工提供安全保障,也欢迎更多的开发者和企业能够加入进来,发挥 AI 的力量,众志成城,抗击疫情。


想与更多的深度学习开发者交流,请加入飞桨官方 QQ 群:703252161。


如果您想详细了解更多飞桨 PaddlePaddle 的相关内容,请参阅以下文档。


  • 官网地址:https://www.paddlepaddle.org.cn/ 

  • 项目地址:https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.5/demo

  • 口罩人脸检测与分类模型介绍:https://www.paddlepaddle.org.cn/hubdetail?name=pyramidbox_lite_server_mask&en_category=ObjectDetection



文为机器之心发布,转载请联系本公众号获得授权
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content @jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com
登录查看更多
1

相关内容

人脸检测(Face Detection)是一种在任意数字图像中找到人脸的位置和大小的计算机技术。它可以检测出面部特征,并忽略诸如建筑物、树木和身体等其他任何东西。有时候,人脸检测也负责找到面部的细微特征,如眼睛、鼻子、嘴巴等的精细位置。
专知会员服务
31+阅读 · 2020年4月24日
【复旦大学-SP2020】NLP语言模型隐私泄漏风险
专知会员服务
24+阅读 · 2020年4月20日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
116+阅读 · 2019年12月31日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
【斯坦福&Google】面向机器人的机器学习,63页PPT
专知会员服务
23+阅读 · 2019年11月19日
【干货】谷歌Joshua Gordon 《TensorFlow 2.0讲解》,63页PPT
专知会员服务
24+阅读 · 2019年11月2日
1500+ FPS!目前最快的CNN人脸检测算法开源
极市平台
25+阅读 · 2019年3月15日
人脸检测与识别总结
计算机视觉战队
21+阅读 · 2017年11月29日
小米Note3 ‖ 国产首款支持人脸解锁手机
机械鸡
4+阅读 · 2017年9月12日
咦,用浏览器做人脸检测,竟然这么简单?
机器学习研究会
6+阅读 · 2017年9月11日
人脸检测与识别年度进展概述
深度学习大讲堂
5+阅读 · 2017年6月26日
DPOD: Dense 6D Pose Object Detector in RGB images
Arxiv
5+阅读 · 2019年2月28日
Arxiv
5+阅读 · 2019年2月28日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关资讯
1500+ FPS!目前最快的CNN人脸检测算法开源
极市平台
25+阅读 · 2019年3月15日
人脸检测与识别总结
计算机视觉战队
21+阅读 · 2017年11月29日
小米Note3 ‖ 国产首款支持人脸解锁手机
机械鸡
4+阅读 · 2017年9月12日
咦,用浏览器做人脸检测,竟然这么简单?
机器学习研究会
6+阅读 · 2017年9月11日
人脸检测与识别年度进展概述
深度学习大讲堂
5+阅读 · 2017年6月26日
Top
微信扫码咨询专知VIP会员