竞赛选题 基于机器视觉的行人口罩佩戴检测

简介

2020新冠爆发以来,疫情牵动着全国人民的心,一线医护工作者在最前线抗击疫情的同时,我们也可以看到很多科技行业和人工智能领域的从业者,也在贡献着他们的力量。近些天来,旷视、商汤、海康、百度都多家科技公司研发出了带有AI人脸检测算法的红外测温、口罩佩戴检测等设备,依图、阿里也研发出了通过深度学习来自动诊断新冠肺炎的医疗算法。

🔥 优质竞赛项目系列,今天要分享的是

图像口罩识别

该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

效果展示

不多说, 先上效果
在这里插入图片描述
在这里插入图片描述

实现方法

模型介绍

在深度学习时代之前,人脸检测一般采用传统的、基于手动设计特征的方法,其中最知名的莫过于Viola-
Jones算法,至今部分手机和数码相机内置的人脸检测算法,仍旧采用Viola-
Jones算法。然而,随着深度学习技术的蓬勃发展,基于深度学习的人脸检测算法逐步取代了传统的计算机视觉算法。

在人脸检测最常用的数据集——WIDER Face数据集的评估结果上来看,使用深度学习的模型在准确率和召回率上极大的超过了传统算法。下图的青线是Viola-
Jones的Precision-Recall图。
在这里插入图片描述

下图是众多基于深度学习的人脸检测算法的性能评估PR曲线。可以看到基于深度学习的人脸检测算法的性能,大幅超过了VJ算法(曲线越靠右越好)。近两年来,人脸检测算法在WIDER
Face的简单测试集(easy 部分)上可以达到95%召回率下,准确率也高达90%,作为对比,VJ算法在40%召回率下,准确率只有75%左右。
在这里插入图片描述

其实,基于深度学习的人脸检测算法,多数都是基于深度学习目标检测算法进行的改进,或者说是把通用的目标检测模型,为适应人脸检测任务而进行的特定配置。而众多的目标检测模型(Faster
RCNN、SSD、YOLO)中,人脸检测算法最常用的是SSD算法,例如知名的SSH模型、S3FD模型、RetinaFace算法,都是受SSD算法的启发,或者基于SSD进行的任务定制化改进,
例如将定位层提到更靠前的位置,Anchor大小调整、Anchor标签分配规则的调整,在SSD基础上加入FPN等。

在我个人看来,SSD是最优雅、简洁的目标检测模型,因此,我们实现的人脸口罩检测模型,也是采用SSD的思想,限于篇幅原因

在本项目中,我们使用的是SSD架构的人脸检测算法,相比于普通的人脸检测模型只有人脸一个类别,而人脸口罩检测,只不过是增加了一个类别,变成戴口罩人脸和不戴口罩的人脸两个类别而已。

我们开源的模型是一个非常小的模型,输入是260x260大小,主干网络只有8层,有五个定位和分类层,一共只有28个卷积层。而每个卷积层的通道数,是32、64、128这三种,所有这个模型总的参数量只有101.5万个参数。下图是网络的结构图。
在这里插入图片描述

其中,上面八个卷积层是主干网络,也就是特征提取层,下面20层是定位和分类层(注意,为了方便显示,我们没有画出BN层)。

训练目标检测模型,最重要的合理的设置anchor的大小和宽高比,笔者个人在做项目时,一般会统计数据集的目标物体的宽高比和大小来设置anchor的大小和宽高比。例如,在我们标注的口罩人脸数据集上,我们读取了所有人脸的标注信息,并计算每个人脸高度与宽度的比值,统计得到高度与宽比的分布直方图,如下:
在这里插入图片描述

因为人脸的一般是长方形的,而很多图片是比较宽的,例如16:9的图片,人脸的宽度和高度归一化后,有很多图片的高度是宽度的2倍甚至更大。从上图也可以看出,归一化后的人脸高宽比集中在1~2.5之间。所以,根据数据的分布,我们将五个定位层的anchor的宽高比统一设置为1,0.62,
0.42。(转换为高宽比,也就是约1,1.6:1,2.4:1)

五个定位层的配置信息如下表所示:

在这里插入图片描述

笔者使用基于Keras实现的目标检测微框架训练的人脸口罩检测模型,为了避免一些网友提到的使用手挡住嘴巴就会欺骗部分口罩检测系统的情况,我们在数据集中加入了部分嘴巴被手捂住的数据,另外,我们还在训练的过程中,随机的往嘴巴部分粘贴一些其他物体的图片,从而避免模型认为只要露出嘴巴的就是没戴口罩,没露出嘴巴的就是带口罩这个问题,通过这两个规避方法,我们很好的解决了这个问题,大家可以在aizoo.com体验我们的模型效果。

后处理部分主要就是非最大抑制(NMS),我们使用了单类的NMS,也就是戴口罩人脸和不戴口罩人脸两个类别一起做NMS,从而提高速度。

获取数据集

人脸口罩数据集下载

下载人脸口罩数据集的目的是利用OpenCV进行模型训练,这里采用口罩数据集的正负比列为1:3,即500张戴口罩的人脸图片和1500张不戴口罩的人脸图片。

数据集获取:联系博主获取

解压之后,将压缩包中的mask文件自行选择文件夹放置,以便之后的操作。

如下:
在这里插入图片描述

上面带口罩的人脸图像我们命名为正样本,相反,没带口罩的数据集合命名为负样本, 如下:

在这里插入图片描述
由于数据集解压后样本图像命名是乱序的,我们要进行重命名,上面两幅图是已经处理好的, 下面给出示例代码

#对数据集重命名#coding:utf-8import ospath = "E:\\facemask\\mask\\have_mask" #人脸口罩数据集正样本的路径filelist = os.listdir(path)count=1000 #开始文件名1000.jpgfor file in filelist:   Olddir=os.path.join(path,file)  if os.path.isdir(Olddir):  continuefilename=os.path.splitext(file)[0]   filetype=os.path.splitext(file)[1]Newdir=os.path.join(path,str(count)+filetype)  os.rename(Olddir,Newdir)count+=1#对数据集重命名#coding:utf-8import ospath = "E:\\facemask\\mask\\no_mask" #人脸口罩数据集的路径filelist = os.listdir(path)count=10000 #开始文件名1000.jpgfor file in filelist:   Olddir=os.path.join(path,file)  if os.path.isdir(Olddir):  continuefilename=os.path.splitext(file)[0]   filetype=os.path.splitext(file)[1]Newdir=os.path.join(path,str(count)+filetype)  os.rename(Olddir,Newdir)count+=1

最后

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国家网络安全周 | 保障智能网联汽车产业,护航汽车数据安全

9月13日上午,2023年国家网络安全宣传周汽车数据安全分论坛在福州海峡国际会展中心正式举办。本次分论坛主题是“护航汽车数据安全,共促产业健康发展”,聚焦汽车数据安全、个人信息保护、密码安全、车联网安全保险等主题。 与此同时&#xff…

辊轧机液压系统泵站比例阀放大器

液压系统主要由液压泵、电机、液压缸、油箱、高压软管等组成。 液压泵将机油从油箱吸入,通过高压软管送至液压缸中,完成动力转换。液压泵的驱动由电机通过皮带或轮齿传动完成。 液压折弯机的液压油流动路线主要分为液压油箱、吸油过滤器、液压泵、主控…

《C和指针》笔记23: 指针的指针

int a 12; int *b &a;现在有了第三个变量c c &b;c的类型是什么?显然它是一个指针,但它所指向的是什么?变量b是一个“指向整型的指针”,所以任何指向b的类型必须是指向“指向整型的指针”的指针,更通俗地说…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 七)

PersistentStorage:持久化存储UI状态 前两个小节介绍的LocalStorage和AppStorage都是运行时的内存,但是在应用退出再次启动后,依然能保存选定的结果,是应用开发中十分常见的现象,这就需要用到PersistentStorage。 Pe…

ESP32-BOX的组件配置添加核心部分详细介绍

前言 (1)为了方便开发,ESP32提供了组件库方便用户进行二次开发。 github仓库;gitee仓库 (2)在学习本章之前最好有CMake或者Makefile的基础,如果没有也不要慌,有的话最好。 &#xff…

def和class的区别

fed浅谈Python内 def 与 class 的区别--知识点整理(B站 - BV11g411w73x)_pythonclass和def的区别_奋进的小咸鱼的博客-CSDN博客def 是用于函数的封装代码如下:def jianfa(a,b): print(a-b) jianfa(100,9)输出结果:91class可用于多…

驱动开发,udev机制创建设备节点的过程分析

1.创建设备文件的机制种类 mknod命令:手动创建设备节点的命令 devfs:可以用于创建设备节点,创建设备节点的逻辑在内核空间(内核2.4版本之前使用) udev:自动创建设备节点的机制,创建设备节点的逻辑在用户空间&#xf…

虚拟机Ubuntu操作系统常用终端命令(1)(详细解释+详细演示)

虚拟机Ubuntu操作系统常用终端命令 本篇讲述了Ubuntu操作系统常用的三个功能,即归档,软链接和用户管理方面的相关知识。希望能够得到大家的支持。 文章目录 虚拟机Ubuntu操作系统常用终端命令二、使用步骤1.归档1.1创建档案包1.2还原档案包1.3归档并压缩…

【Flowable】FlowableUI使用以及在IDEA使用flowable插件(二)

前言 之前有需要使用到Flowable,鉴于网上的资料不是很多也不是很全也是捣鼓了半天,因此争取能在这里简单分享一下经验,帮助有需要的朋友,也非常欢迎大家指出不足的地方。 一、部署FlowableUI 1.准备war包 在这里提供了&#xf…

026-从零搭建微服务-文件服务(二)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…

关于运行PR提示vcruntime140.dll无法继续执行代码的4个解决方法分享

关于运行安 PR提示vcruntime140.dll无法继续执行代码的困扰,小编将为您提供详细的解决方法。在此之前,我们需要了解一下vcruntime140.dll文件的作用。 vcruntime140.dll 是 Visual C Redistributable 的动态链接库文件,它包含了 C运行时库的一…

GeoSOS-FLUS未来土地利用变化情景模拟模型

软件简介 适用场景 GeoSOS-FLUS软件能较好的应用于土地利用变化模拟与未来土地利用情景 的预测和分析中,是进行地理空间模拟、参与空间优化、辅助决策制定的有效工 具。FLUS 模型可直接用于: 城市发展模拟及城市增长边界划定;城市内 部高分…

Zabbix监控组件及流程

Zabbix 由5大组件构成 Zabbix Web、Zabbix Server、Zabbix Proxy、Zabbix Database、Zabbix Agent Zabbix监控系统具体监控系统流程如图: Zabbix Web Zabbix Web是基于PHP语言编写的WEB UI界面,展示Zabbix整个监控平台监控数据、配置信息、方便对整个…

SQL Server 2012下载和安装配置详细教程手册

SQL Server 2012 下载和安装详细教程 目录 SQL Server 2012 下载和安装详细教程1、软件下载2、软件安装3、软件验证 1、软件下载 (1)官网地址 https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads (可能不太行) &a…

家庭安全不容小觑!青犀AI智能分析算法+摄像头助力家庭安全

你知道吗?高层家庭更需要人工摄像头!虽然现在社会治安十分稳定,高层建筑更是安全,但高层盗窃、陌生人入室这些新闻还是层出不穷,为了解决这些安全隐患,给广大人民一个安心的生活环境,旭帆科技将…

Android MeidiaCodec之OMXPluginBase与QComOMXPlugin实现本质(四十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

机器学习技术(十)——决策树算法实操,基于运营商过往数据对用户离网情况进行预测

机器学习技术(十)——决策树算法实操 文章目录 机器学习技术(十)——决策树算法实操一、引言二、数据集介绍三、导入相关依赖库四、读取并查看数据1、读取数据2、查看数据 五、数据预处理1、选择数据2、数据转码 六、建模与参数优…

OPC是通讯协议吗安全性

目录 1 安全防护 1.1 防火墙 1.2 网闸 2 OPC是通讯协议吗 2.1 什么通讯协议 2.2 那么OPC又是什么? OPC官方说明文档 1 安全防护 本文阐述了控制网络以OPC接口接入信息网络应当采用的安全防护。 1.1 防火墙 防火墙是大家熟知的网络安全产品,并被用作控制网…

Jmeter —— 常用的几种断言方法(基本用法)

在使用JMeter进行性能测试或者接口自动化测试工作中,经常会用到的一个功能,就是断言,断言相当于检查点,它是用来判断系统返回的响应结果是否正确,以此帮我们判断测试是否通过,本文 主要介绍几种常用的断言&…

【服务器 | 测试】如何在centos 7上面安装jmeter

安装之前需要几个环境,以下是列出的几个环境 CentOS 7.7 64位JDK 1.8JMeter 5.2 1. 下载jmeter安装包 JMeter是开源的工具,安装 JMeter 要先安装好 JDK 的环境,安装JDK在前面的文章已经讲到 JMeter最新版下载地址:Apache JMeter…