11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

百度飞桨开源业内首个口罩人脸检测及分类模型

  • 2020-02-21
  • 本文字数:3093 字

    阅读完需:约 10 分钟

百度飞桨开源业内首个口罩人脸检测及分类模型

抗击疫情,众志成城,人工智能技术正被应用到疫情防控中来。


2 月 13 日,百度宣布免费开源业内首个口罩人脸检测及分类模型。该模型可以有效检测在密集人流区域中携带和未携戴口罩的所有人脸,同时判断该者是否佩戴口罩。目前已通过飞桨 PaddleHub 开源出来,广大开发者用几行代码即可快速上手,免费调用。



模型可视化效果:绿框为佩戴口罩标注,红框为未佩戴口罩标注


随着本周各企业相继复工,节后经济开始逐渐恢复,人脸口罩检测方案成为返工潮中众多社区、大型厂商、央企的重要需求。如判断工区员工是否佩戴口罩、人流密集的关口运输中心如何识别戴口罩的人脸并测温、佩戴口罩是否也能完成日常刷脸打卡等等……都是新冠肺炎疫情下需要解决的真实痛点。


疫情防控刻不容缓,百度此前已有多项 AI 举措助力疫情防控。此次宣布免费开源的自研口罩人脸检测及分类模型,是基于 2018 年百度收录于国际顶级计算机视觉会议 ECCV 的论文 PyramidBox 研发,可以在人流密集的公共场景检测海量人脸的同时,将佩戴口罩和未佩戴口罩的人脸快速识别标注。基于此预训练模型,开发者仅需使用少量自有数据,便可快速完成自有场景的模型开发。


百度研发工程师介绍,口罩人脸检测及分类模型,由两个功能单元组成,可以分别完成口罩人脸的检测和口罩人脸的分类。经测试,模型的人脸检测算法基于 faceboxes 的主干网络加入了超过 10 万张口罩人脸数据训练,可在准确率 98%的情况下,召回率显著提升 30%。而人脸口罩判断模型可实现对人脸是否佩戴口罩的判定,口罩判别准确率达到 96.5%,满足常规口罩检测需求。开发者基于自有场景数据还可进行二次模型优化,可进一步提升模型准确率和召回率。


如此高的准确率的背后是大量数据训练的结果,新模型采用了超过十万张图片的训练数据,确保样本量足够且有效。另一方面,人脸检测模型基于百度自研的冠军算法,整个研发过程都是基于百度开源的飞桨深度学习平台,能够进行高效、便捷的模型开发、训练、部署。


在线演示效果:绿色边界框为戴口罩人脸、红色边界框为不戴口罩人脸。感兴趣的开发者可自己上传图片测试模型的效果。



在线演示地址:


https://www.paddlepaddle.org.cn/hub/scene/maskdetect


对于实际场景中的光照、口罩遮挡、表情变化、尺度变化等问题,模型具有鲁棒性,并且能够在多种不同端、边、云设备上实时检测,在落地过程中做到真正实用。


模型开源,方便应用

为了最大程度方便开发者应用,百度深度学习平台飞桨通过简单易用的预训练模型管理工具 PaddleHub 将人脸口罩检测模型开源出来,只需基本的 Python 编程能力,即可快速上手调用,如果具有一定的移动端 APP 开发能力,也可以快速将模型部署到移动端上。


预训练模型介绍:


https://www.paddlepaddle.org.cn/hubdetail?name=pyramidbox_lite_server_mask&en_category=ObjectDetection


预训练模型示例代码:


https://aistudio.baidu.com/aistudio/projectDetail/267322


这一方案中,用于识别人脸的模型基于 2018 年百度在国际顶级计算机视觉会议 ECCV 2018 的论文 PyramidBox 而研发,基于自研的飞桨开源深度学习平台进行训练,并通过 PaddleSlim 等模型小型化技术使得算法能够高效运行在一些算力有限的设备上。


此外飞桨还将提供海量二次开发的工具组件,以及更多的人脸相关检测算法,以上所有技术及工具都是开源且免费的。


部署简单,上手迅速

只要五行代码,我们就可以在自己的计算机处理口罩人脸检测。实际在我们采用 CPU 的情况下,检测基本是实时的,推断速度非常快。以下为调用预训练模型的核心代码,其中我们在当前文件夹下放了一张测试图像:


import paddlehub as hub
# 加载模型,本例为服务器端模型pyramidbox_lite_server_mask
# 移动端模型参数可以换成pyramidbox_lite_mobile_mask
module = hub.Module(name="pyramidbox_lite_server_mask")
# 设置输入数据
input_dict = {"image": ["test.jpg"]}
for data in module.face_detection(data=input_dict):
print(data)
复制代码


更重要的是,作为一项完善的开源工作,除了本地推断以外,其还需要考虑如何将模型部署到服务器或移动设备中。若能快速部署到各平台,那么才真正意味着它可以作为「战疫」的基础工具。


目前,百度提供了两个预训练模型,即服务器端口罩人脸检测及分类模型「pyramidbox_lite_server_mask」、以及移动端口罩人脸检测及分类模型「pyramidbox_lite_mobile_mask」,这两者能满足各种下游任务。


1. 一条命令部署到服务器

借助 PaddleHub,服务器端的部署也非常简单,直接用一条命令行在服务器启动口罩人脸检测与分类模型就行了:


hub serving start -m pyramidbox_lite_server_mask -p 8866
复制代码


是的,在服务器端这就完全没问题了。相比手动配置各种参数或者调用各种框架,PaddleHub 部署服务器非常方便。相信只要有一些 Python 基础,在本地预测、以及部署到服务器端都是没问题的,飞桨的 PaddleHub 已经帮我们做好了各种处理过程。


2. 三步部署到移动端

Paddle Lite 是飞桨的端侧推理引擎,专门面向移动端的模型推理部署。如果我们需要把口罩人脸检测及分类模型嵌入到手机等移动设备,那么 Paddle Lite 这样的端侧推理引擎能帮我们节省很多工作。


在移动端部署口罩人脸检测及分类模型,也只需要三步:


①下载预测库,Paddle Lite 会提供编译好的预测库;


②优化模型,使用 model_optimize_tool 工具实现模型优化;


③通过预测 API 实现调用。


开发者可以通过 PaddleHub 下载人脸口罩识别模型。在正常安装 PaddleHub 以后,可以通过 Python 执行以下代码下载并保存模型,以下载保存移动端人脸口罩识别模型为例:


import paddlehub as hub
module = hub.Module(name="pyramidbox_lite_mobile_mask")
# 将模型保存在test_program文件夹之中
module.processor.save_inference_model(dirname="test_program")

复制代码


通过以上代码,可以获得人脸检测和口罩佩戴判断模型,分别存储在 test_program 目录下的 pyramidbox_lite 和 mask_detector 子文件夹之中。文件夹中的__model__是模型结构文件,__param__文件是权重文件。


Paddle Lite 介绍:


https://github.com/PaddlePaddle/Paddle-Lite/


其中比较重要的是移动端 API 调用方法,具体实现请参考下文给出的 Paddle Lite 的示例地址。


// 读取图片cv::Mat img = imread(img_path, cv::IMREAD_COLOR);// 加载人脸检测或者口罩佩戴判别模型MobileConfig config;config.set_model_dir(model_dir);PaddlePredictor* predictor =      CreatePaddlePredictor<MobileConfig>(config);// 设置输入Tensor* input_tensor = predictor->GetInput(0);input_tensor->Resize({1, 3, img.rows,img.cols});set_input(img, input_tensor); //调用自定义函数// 执行predictor->Run();// 输出结果Tensor* output_tensor = predictor->GetOutput(0);show_output(img, output_tensor); //调用自定义函数
复制代码


人脸识别和佩戴口罩判断在移动端部署的示例地址为:


https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/cxx


作为开源开放、功能完备的产业级深度学习平台,开源是飞桨长期践行并努力的方向。新型冠状病毒感染的肺炎疫情消息牵动着每个人的心,百度也在持续运用着 AI、大数据等前沿技术,助力“大后方”的疫情防控。


从成立总规模 3 亿元疫情及公共卫生安全攻坚专项基金,到提供人工智能技术支持配套亿级计算资源;从百度地图为疫情科学管理提供参考,到 AI 多人体温快速检测解决方案落地清河火车站、免费开放病毒分析线性时间算法、免费开放社区管理智能外呼平台……


本次开源的的口罩人脸检测及分类模型,是百度 AI 能力的又一次倾力输出,也希望全社会更多的开发者一道加入,探讨开发,打赢这场疫情阻击战。


2020-02-21 17:092058

评论

发布
暂无评论
发现更多内容

小波从此逝,江海寄余生,不但是文坛巨擘还是不世出的编程奇才,王小波离世25周年

刘悦的技术博客

编码习惯 编码 代码 编程、 编码规范

有小程序还没有App?试试用小程序转App功能

Speedoooo

APP开发 移动端开发 小程序转app

【分享汇总】25个主题分享,360°领略OpenHarmony最新技术版图

OpenHarmony开发者社区

OpenHarmony

TDesign 更新周报(2022年4月第2周)

TDesign

2022年中国低延时技术市场洞察

易观分析

低延时

模块二作业

Dean.Zhang

架构实战营

解读谷歌 Pathways 架构(二):向前一步是 OneFlow

OneFlow

人工智能 机器学习 深度学习 深度学习框架 谷歌

数字人民币试点扩大,市场化问题如何解决?

CECBC

2022春季校园招聘·复旦站,即将开启~

非凸科技

云原生虚拟化的最佳拍档:Kube-OVN + KubeVirt 【附有奖调研】

York

Kubernetes 云原生 网络性能 云原生网络 网络虚拟化

免费训练营限时抢报|大咖带你玩转PolarDB for PostgreSQL开源训练营

阿里云数据库开源

数据库 postgresql 开源 阿里云; polarDB

机票报价高并发实施的关键路径

Qunar技术沙龙

高并发 后端技术

一文盘点SeekTiger 通证STI的上涨逻辑,与市场潜力

石头财经

我们两周岁啦!InfoQ写作平台正式升级为InfoQ写作社区

InfoQ写作社区官方

热门活动 InfoQ写作社区2周年

为什么要选择Web3?它有什么好处?

CECBC

Reactor实现http服务器,附完整代码

Linux服务器开发

后台开发 reactor HTTP Linux服务器开发 服务端开发

恒源云(Gpushare)_FAIR CVPR2022新作DVT是个啥?

恒源云

深度学习 CV transform

FAQ是什么?如何高效地创建一个好的FAQ页面?

小炮

FAQ

远程代码执行漏洞复现分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

为什么领导不喜欢提拔老实人?

方云AI研发绩效

团队管理 研发管理 数字化转型 职场 PUA 职场发展

等了15年,这本豆瓣评分高达9.3的编程巨著终于出版了!

图灵教育

艾瑞咨询:2022年隐私计算卓越者——洞见科技

洞见科技

隐私计算 数据智能解决方案

InfoQ专访龙蜥社区陈绪:从CentOS 停服说起,龙蜥操作系统的开源观

OpenAnolis小助手

centos 开源 操作系统 开放原子开源基金会 龙蜥社区

Apache ShenYu源码阅读系列-Divide插件

子夜2104

云效多云视角团队协作方式,让团队协作更高效

阿里云云效

阿里云 项目管理 运维 研发管理 团队协作

华为与OpenInfra基金会十年共筑开源基础设施平台

科技热闻

百度飞桨开源业内首个口罩人脸检测及分类模型_AI_飞桨PaddlePaddle_InfoQ精选文章