基于Python通过OpenCV实现的口罩识别系统理论篇

基于Python通过OpenCV实现的口罩识别系统理论设计篇

一、项目实现环境

基于Python 3.8.1版本
opencv-python 4.2.0.34版本
需要自己下载OpenCV的库文件,添加其中的分类器。

二、设计背景

2020年1月新型冠状病毒爆发,截止目前(7月15号)我国新型病毒感染人数为87250,治愈人数为80914,海外确诊人数16609568,海外治愈人数10339502,这样的数字得我国人民人心惶惶,为了防止新型冠状病毒的进一步传播,我国开始大范围的口罩佩戴宣传活动。
如何尽可能快速高效的方法来检测人们佩戴口罩并落实相关的效果,保护人民生命健康与安全,成为了一项重大的考验。不仅出行运输业面临车辆地域分布广泛,活动频率较高、等现实问题,其他行业也纯在人力资源紧张,监督成本昂贵等情况,因此目前急需开发出相关产品来检测。

三、设计需求调查

根据线上调查及实地勘测,我们发现,在新型冠状病毒期间,人们在乘坐公交车,进入工厂的等出入一些公共场合时检测佩戴口罩的方法,要么是出于人们自己的自觉,要么是人们之间进行相互提醒,要么是通过监控进行排查和提醒,归根到底就是人工检查,这样的效率极其低下,也不利于对后续的排查工作。完全依赖人力进行检查不可避免地存在工作强度大,效率低下,覆盖范围小,时效性差等弊端,因此利用计算机图像处理技术代替人工进行安全检查无疑是具有重大积极意义的。

四、国内外技术对比

1、国内技术

人脸佩戴口罩识别涉及到目标检测技术和分类技术,国内目前是基于深度学习技术,一类是双阶段目标检测算法,另一类是单阶段目标检测算法。这两类算法都是由独立的网络分值生成大量的候选区域,然后在对这些候选区域进行分类和回归,确定目标的准确位置和类别。双阶段目标检测算法的算法精度更高,单阶段的目标检测算法速度更快。
MTCNN以3个级联网络实现快速检测,并且利用图像金字塔进行不同尺度的人脸检测,Face R-CNN基于Faster R-CNN进行人脸检测,SSH提出不同深度的卷积层分别实现多维度尺度,FAN提出了基于锚点级的注意力机制等一些特征算法对人脸进行识别。

2、国外技术

WEI Wei, WANG Gongbao. Detection and Recognition of Air Targets by Unmanned Aerial Vehicle Based on RBF Neural Network提出了一种基于径向基函数神经网络的目标意图识别模型; YU Li, LIU Kun, YU Shengtao. Remote sensing aircraft recognition based on densely connected convolution neural network. Computer Engineering and Applications, 2018,提出了一种基于密集卷积神经网络的联合监督识别方法,将局部特征和全局特征结合起来,得到基于密集卷积神经网络的图像特征。ZHANG Wenyong. Fine Recognition and Simulation of Color Image Target in Complex Background. Computer Simulation提出了一种复杂背景下彩色图像的精细目标识别方法,利用贝叶斯模型区分彩色图像中的肤色和背景颜色;针对传统图像识别算法过程繁琐、特征提取困难的问题,提出了一种基于深度特征学习的图像自适应目标识别算法。

四、技术路线设计

基于Python通过OpenCV实现的口罩识别系统理论篇_第1张图片口罩识别流程图

系统语言使用python语言,方便移值。利用了OpenCV库的级联分类器,选取了Haar特征和Adaboost级联分类。
机器的眼睛是摄像头,机器看到的只有数据,也就是像素,当需要识别某一种特定的图像时,我们就需要找到图像的一系列特征,这个就是Haar特征,(哈尔特征(Haar-like features)是用于物体识别的一种数字图像特征。)当对图像进行运算特征值式,由于彩色图像的通道数多,像素的数据大,为了高效的进行运算,我们先将图像转化为灰度图像,然后进行Haar特征运算,而Haar特征运算一共有14种,较为基础的为BASIC的五种运算,由于我们要对于口罩识别模型进行构建,为了增强模型的识别度,使用了ALL的14种特征运算。
基于Python通过OpenCV实现的口罩识别系统理论篇_第2张图片
Haar的不同类型卷积核

构建模型时,通过Haar的卷积核,对图像进行卷积运算,在图片中找出大量的特征值,通过Adaboost级联分类,在Haar特征+leftValue(左值)+ rightValue(右值)+ 弱分类器阈值(threshold)这些元素共同构成了弱分类器。通过Adaboost分类器的迭代运算的优点,在于前一个基本分类器分出的样本,在下一个分类器中会得到加权。加权后的全体样本再次被用于训练下一个基本分类器。
基于Python通过OpenCV实现的口罩识别系统理论篇_第3张图片
弱分类器的基本原理图

通过迭代运算,机器对样本进行了不断的分析,形成了多个相互独立的弱分类器。将多个相互独立的弱分类器“并联”形成强分类器,如弱分类器1+弱分类器2+弱分类器3…=>强分类器,在将多个强分类器进行“串联”形成级联分类器。通过加入大量的正样本和负样本对分类器进行训练,最后形成一个较为准确的级联分类器。这是一种基于机器学习的方法,其中从许多正负图像中训练级联函数。然后用于检测其他图像中的对象。
基于Python通过OpenCV实现的口罩识别系统理论篇_第4张图片
样本采集流程图

机器有了强分类器,就像我们人一样有了一双慧眼,对于图像的识别变的非常简单,通过OpenCV库中的判别函数:detectMultiScale函数,通过这个函数,我们可以对输入进入的每一帧图像进行比对,可以设置参数,来调整图像的比对效率,比对的速度和比对的重合率,并且回传成功找到的图像的参数坐标,可以利用OpenCV库中的putext函数,将已存在的目标区画出。同时,在检测中设置特征值,当检测到有人未带口罩时,将会启动语音播报功能,多线程播放提醒音频,提醒人们佩戴口罩。

实现效果展示

我们是基于Python软件及OpenCV级联库所设计的口罩识别系统,再加入语音提示警报实时提醒,基于此,我们还在软件中对未佩戴口罩人数,佩戴口罩人数进行实施更新,能够很好的对未佩戴口罩的人进行定位和提醒,我们从视频中截取佩戴前和佩戴后的图片如下所示:
基于Python通过OpenCV实现的口罩识别系统理论篇_第5张图片
基于Python通过OpenCV实现的口罩识别系统理论篇_第6张图片
右上角第一行显示刷新率,第二行显示检测人数,第三行显示佩戴口罩人数,第四行显示未佩戴口罩人数,我们所设计的口罩识别技术能够精确的对是否佩戴口罩进行精确的测量,因此该口罩识别技术测试效果良好。

敬请期待实际操作篇的更新

你可能感兴趣的:(python,计算机视觉,opencv,算法)