基于目标检测的口罩识别系统的设计与实现.docx
- 文档编号:30780664
- 上传时间:2023-09-04
- 格式:DOCX
- 页数:32
- 大小:5.65MB
基于目标检测的口罩识别系统的设计与实现.docx
《基于目标检测的口罩识别系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于目标检测的口罩识别系统的设计与实现.docx(32页珍藏版)》请在冰豆网上搜索。
成人高等教育毕业设计(论文)
成人高等教育
毕业设计(论文)
题目基于目标检测的口罩识别系统的设计与实现
目录
摘要 1
1.绪论 2
1.1研究背景和意义 2
1.2国内外研究现状 3
2.相关技术介绍 5
2.1目标检测 5
2.1.1目标检测的概念 5
2.1.2传统目标检测算法 5
2.1.3基于深度学习的目标检测算法 6
2.2YOLO算法 8
2.2.1YOLO算法的概念 8
2.2.2YOLO算法的核心思想 9
3.系统总体设计 13
3.1系统需求分析 13
3.1.1功能需求 13
3.1.2性能需求 13
3.1.3运行需求 13
3.2系统功能设计 14
4.系统实现 15
4.1图像预处理 15
4.2图像识别 18
4.3代码实现 21
5.结论 29
参考文献 30
摘要
随着深度学习和计算机视觉的快读发展,与此有关的技术设备已经被大幅度的使用,并且不仅仅在这两个方面,更在许许多多的领域都有使用。
众所周知,图像理解之中的最重要的一个步骤即为目标检测,和为目标检测,其实很简单,在捕获的大量图像信息之中,选取最为感兴趣的目标,并且进一步确定它们的各类信息,如位置大小等等,如此的工作正是机器视觉这一领域之中的关键核心之一。
目标检测是计算机视觉领域中的基础,因为其关于着物体的分类任务,还有物体的定位任务,所以该项技术对于图像理解的重要程度不言而喻。
2020年新冠肺炎席卷全球,新型冠状病毒可以通过呼吸道飞沫等方式传播,正确佩戴口罩可以有效切断新冠肺炎病毒的传播途径,是预防感染的有效措施。
国内公众场合要求佩戴口罩,而商场、餐饮、地铁等人员密集型的场所对人流量高峰时段的应对措施往往令人力不从心,而且自然场景中通常存在遮挡、密集人群和小尺度目标等复杂因素,对人脸佩戴口罩的检测效果产生影响。
针对该问题,本系统了在复杂场景下的口罩佩戴检测算法,可以自动准确且快速地识别图片或视频中人物是否佩戴口罩,有着重要的应用场景和市场前景。
本系统采用基于深度学习的One-stage目标检测算法的一种即YOLO-v4这一算法。
在过去,人脸检测模型并不完善,只能对于单纯的人脸进行识别,而我们要介绍的人脸口罩识别与之前的系统不同,对于人脸的识别产生了两种不同的类别,即为戴或不戴口罩这两种类别本系统采用的YOLO-v4是最新的强悍的目标检测技术,首先将待检测的图片进行特征提取后分层分类,再对目标进行检测,判断目标为0或1,即佩戴口罩或没有佩戴口罩。
1.绪论
1.1研究背景和意义
随着现代化的发展,人们生活节奏越来越快,可以通过图像进行交流。
从用户的角度来看,图像不受当地语言等因素的限制,能够更好地表达和传达人们的情感信息,可以作为快速表达的载体。
对我们来说,编辑文本是很容易的,但是图像中传递的内容和信息非常大。
因此,如何方便、有效地找到关键信息并利用图像成为图像处理领域的一个关键研究问题。
近年来,由于其在场景中的广泛应用,图像识别成为图像研究领域的一个热点。
在畜牧业中,我们可以通过监测牲畜的生长状况、活桩的形状和形状来判断,定期定量喂养牲畜,监测其生长发育情况。
在工业上,关键问题可以通过图像识别来解决。
在医学上,高清图像可以用来扫描身体的各个部位。
此外,图像在日常活动中也起着至关重要的作用,如高速列车安检中的人脸识别,以及机上乘客的身份信息;平日停车时,采用车牌识别技术进入停车场;申请身份证时,每个公民都会输入自己的指纹信息,以便将来进行安全验证。
总之,图像在我们的日常生活中是不可或缺的。
利用传统方法或深度学习方法快速有效地识别图像和提取颜色特征信息具有重要意义。
而我们清楚的是人脸识别无论是数字图像的处理方面还是在于计算机视觉领域的方面,其地位都是很高的,它能利用摄像机采集信息,并对其进行检测,还能快速识别出口罩佩戴情况,所以说该项技术对于当下疫情控制的意义是非常高的,在该方面的投入也是非常有必要的有价值的。
面对突如其来的新一轮肺炎疫情,人们的生活秩序被严重扰乱。
与普通流感不同,这种流行病可以通过人类唾液传播,并具有很强的感染他人的能力。
最近,面对疫情,市面上的口罩越来越少。
新型冠状病毒肺炎对该病的流行尤为重要。
能有效阻断新型冠状肺炎病毒的传播。
它能直接从源头检查,将人体唾液和气流从第一道屏障中隔离出来,有效保护自己和他人,不传播病毒。
在中国的公共场所必须戴口罩。
然而,在商场、餐厅、地铁等人员密集场所,应对客流高峰期的措施往往让人发自内心。
一些人外出时不爱戴口罩,这给病毒提供了可乘之机,给自己和他人的生命带来重大安全隐患。
如果有一套系统,通过对数字图像的采集和识别,识别出是否戴口罩的人,并做出相应的预警和报警就显得尤为重要和迫切。
随着计算机视觉技术的发展,基于图像的面具识别迅速引起人们的关注。
1.2国内外研究现状
伴随着时代的不断发展,计算机已经走入了平常生活,对于计算机领域的不断发展我们是有目共睹的,特别是计算机视觉原理,被广泛应用,生活生产的许许多多领域都离不开该方面的种种技术,例如在智能交通的建设中,动态实施目标跟踪与定位起到了不可或缺的关键作用,同样的该项技术也被用在智能监控防盗,军事引用,医疗导航外科手术的器械实时定位之中,斌且起到着不可或缺的作用,具有极大的应用价值。
作为当下飞速发展的热门方向,目标检测已经被人们所熟知,走进了大众的视野,其目前被大规模应用在诸多领域,比如机器人导航系统,工业控制,航空航天等当下如火如荼进行的产业之中。
因为计算机技术的广泛应用并飞速升级,利用计算机视觉降低人工成本是十分可行的,所以近几年来,对于该方面的研究成为火热的方向,也成为诸多行业迫切需要的项目。
以目标检测自身来说,它是计算机图像处理,计算机视觉的重要分支,特别是在智能监控方面起到中心作用,与此同时,值得我们注意的是,目标检测该项技术本身也就是泛身份识别领域的一项基本算法,所以可行性之高众所周知,在当下的人脸识别、步态、计数、实例分割等诸多方面中起着重要的作用,我们需要了解政府的行为措施。
也正是随着时代发展,深度学习被大规模运用,目标检测发展是极为迅速的。
进入二十一世纪,特别是在2006年以来,在该方面的大师辛顿、本吉奥、乐坤等人不懈努力与奋斗下,指导发表了大量的相关论文可供参考,在他们发表的诸多深度神经网络论文更是作用非凡。
到了2012年,这是个里程碑式的一年,欣顿团队首次参加Imagenet图像识别大赛,并通过CNN网络alexnet获得冠军。
从此以后,团队便走进了各大媒体的镜头,大步走进了大众的视野,得到了加大关注,他们的神经网络更是成为了被广泛研究的目标,我们通过深度学习采用多层次计算机模型来对抽象的数据进行学习表示,很明显发现其结构是非常复杂的。
就目前来说,该项技术已经被成功引用在许多模式分类问题之中。
我们可以这样理解计算机视觉,它对于目标首先捕捉信息,此后分为三个层次:
运动分割与目标检测层次、目标跟踪层次、还有就是对目标的动作识别以及行为的描述。
在这中间目标检测作为关键的一环,更是整个系统的基本任务,值得一提的不仅在该系统中,只要是有应用的领域,目标检测基本上都是起到关键核心作用的。
并且因为监控视频应用范围景深、分辨率还有天气光照的不稳定性与不可预测性由于视频中的物体姿态不同,经常被遮挡,运动不规则,所以目标检测层次的好与坏,直接决定着系统后续工作的进行。
时至今日,对于目标检测领域的研究,仍然是个挑战极大的方向,仍然具备着极大的上升空间。
2.相关技术介绍
2.1目标检测
2.1.1目标检测的概念
目标检测又被我们叫做目标提取,这是一种基于目标的几何还有统计特征的图像分割方法。
它的作用在于,将原本需要两步的目标分割还有识别合二为一,所以其以准确以及实时著称,特别是在许多复杂的场景之中,因为我们需要同时对多个目标进行相应的检测处理,它所具备的自动提取目标以及自动识别格外重要。
在对国内外诸多成果的研究中,我们将目标检测的算法通常分为两类,第一种是较为传统的目标检测算法,第二种就是我们要介绍到的基于深度学习的目标检测算法,目前后者的用途十分广泛该算法又分为One-Stage目标检测算法和Two-Stage目标检测算法。
2.1.2传统目标检测算法
对于传统的目标检测方法,一般工作流程分为三个阶段:
即首先给定图像选取候选区域,选择过后再提取相应特征,之后再用以及训练好的分类器来对于各个数据进行分类。
这三个阶段细化来说如下。
区域选择:
即定位,我们在分析处理之前首先应该确定位置,因为目标可能出现于任何位置,且形状比例会相应的产生一些变化,所以我们采用滑动窗口来保证将图像所有位置都有观测到,简单来说,就是穷举法,这种方法可以完成任务,但是这种方法效率不高,且时间浪费的太多,且多了许多不必要的的多于窗口,这对于后续工作的进行产生了影响,也导致了整体系统的效率被拖慢。
(2)特征提取:
因为观测目标不会相同,多种多样,并且位置角度都有变化,所以一个完美程序是特别困难的。
但是对于目标特征的提取又是至关重要的,它直接决定系统的结果是否准确,所以重要程度不言而喻。
其中,SIFT、HOG等是这个阶段常用的特征。
(3)分类:
即根据第二步所提取出来具有相似特征的目标归为一类,实现对数据的分类。
目前市面上的分类器主要包括SVM,AdaBoost等。
2.1.3基于深度学习的目标检测算法
当前主流目标检测是基于深度学习的模型,其可分为两类:
(1)One-Stage目标检测算法
One-Stage目标检测算法在前面就有过叙述,即通过一个过程即可得出结果,直接产生所需要的的分类概率还有位置坐标,相比于后者,它不需要RegionProposal阶段,总流程是清晰简单明了的,如下,在Testing的时候输入图片再通过CNN网络产生输出,之后进行解码操作,解码(后处理)生成对应检测框即可;但是我们在Training的时候则必须需要把GroundTruth编码成CNN输出对应的格式输出,这样才不会造成计算损失,保证质量。
图2-1One-Stage检测算法示意图
因为目标检测算法主要分为两个任务,也就是物体分类与定位。
期间或多或少会存在损失。
损失主要包括分类损失(ClsLoss)和定位损失(LocLoss),也就是在两个任务中不同的损失,而对于损失我们有损失组合,常见的损失组合主要有如下两种ClsLoss+LocLoss(SSD系列算法)、ClsLoss+ObjLoss+LocLoss(YOLO系列算法),在这些组合之中,YOLO系列算法相比于SSD系列算法多了ObjectLoss,也就是判断对应区域是不是损失,在此之外,One-Stage目标检测算法还存在着许多问题,比如正负不均等问题,所以我们对于其的设计研究,还需要更多的针对创新。
HardNegativeMining:
简言之,只挑选适当比例且损失较大的负样本来计算损失,而对于较小的损失采取忽略不计,这样可以有效防止负样本过多而造成对网络学习的干扰。
FocalLoss:
因为获得的很多数据都是很简单容易处理的负样本,也就是来自背景的样本,这就直接导致训练过程中无法对于有类别样本信息进行充分学习。
其次是因为负样本过多,会在一定程度上掩盖其他有类别样本。
FocalLoss则希望那些hardexamples可以对于损失带来较大的贡献,因为如此便可以让网络更加倾向于学习有类别的样本。
但我们有必要说明的是,在个人任务中One-Stage检测算法和Two-Stage检测算法的第一个Stage其实本质上变化不大,甚至我们可以将Two-Stage检测算法的第一个Stage看成是One-Stage检测算法,这也就说明设置第二个Stage其实本质上只是对前一个Stage的结果做进一步精化,进而使得所得结果更加精准。
得出这样的结论的原因是因为无论上述的何种思路,本人觉得都适用于Two-Stage检测算法的第一个Stage。
另外,对于Two-Stage检测框架设计的相关损失函数也同样与One-Stage检测算法所适配,如针对遮挡问题设计的相关loss。
(2)Two-Stage目标检测算法
Two-Stage目标检测算法我们可以将其看作将One-Stage检测进行俩次来使得精确度得到提升,第一次我们首先对物体的位置来进行检测,而到了第二个阶段我们再一次确认来对于结果进行精化,对于每一个候选区域进行One-Stage检测。
如下图所示,当我们进行到Testing过程时将输入的图片通过卷积神经网络,来形成第一阶段的输出,同时对于输出结果解码处理,从而捕获对于候选区域特征表示(ROIs),之后对ROIs再次精化,从而实现二次处理,通过如此产生第二阶段的输出,通过解码处理后生成了最终的结果,即相应检测框。
进一步精化产生第二阶段的输出,解码后处理生成最终结果,解码生成对应检测框即可;而到了在Training阶段的时候我们则需要将GroundTruth编码成CNN输出对应的格式因为只有这样我们才更方便去计算对应损失loss。
图2-2Two-Stage检测算法示意图
正如上图所示,Two-Stage的两个阶段我们发现其实是相似的,如果我们将其拆开来看,那么无论前后,都与One-Stage检测算法是十分相似的,因此我认为这两种不同的算法其实本质上就是一次和两次的区别,Two-Stage可以看成是两个One-Stage检测算法的组合,但其先后的俩次相似算法功能却不是完全相似的,其中第一个Stage做初步检测,主要目的在于剔除负样本,生成初步位置信息(RegionofInterest),而第二个Stage的目的在于再做进一步精化并生成最终检测结果。
2.2YOLO算法
2.2.1YOLO算法的概念
YOLO是继R-CNN、FastR-CNN、FasterR-CNN之后,rbg(RossGirshick)针对DL目标进行检测其速度问题时产生的另外一种框架,而YOLO算法的核心也就是利用整张图来进行输入,网络中直接接受到整张图,从而对整张图共同计算,核心思想也就是通过直接计算,直接在回归层boundingbox的位置输出和boundingbox所属的类别。
YOLO算法特殊之处在于讲对于物体的检测作为了一个回归的问题去解决,这种算法是基于一个独立网络end-to-end,从而一次性实现从输入原本图像,再到输出检测物体的位置信息还有所测物体的类别,而比较这几种不同的算法,在网络设计方面YOLO与R-CNN、FastR-CNN及FasterR-CNN的区别如下:
YOLO算法无论是对算法训练还是对数据的检测,都是在一个单独的网络中进行的,这也正是其强大之处,YOLO比起其它算法,并没有没有显示地求取regionproposal这一过程而反观R-CNN/FastR-CNN,该算法是采用分离的模块进行独立计算,基于单独设立的网络模型selectivesearch方法来求的候选框,也就是选择出可能会包含所需图像信息的矩形区域,另外,即使是训练过程,在该算法中也是分开独立处理的,分成多模块来各自独立,FasterR-CNN使用RPN(regionproposalnetwork)这一卷积神经网络来替换掉之前的R-CNN/FastR-CNN的selectivesearch模块,RPN被集成到了FastR-CNN检测网络,正因如此,我们便得到了一个同处一个系统下,统一的检测网络,但是虽然RPN与FastR-CNN共享卷积层,但是到了模型训练的过程之中,我们同样地需要反复地对RPN网络和FastR-CNN网络两个网络进行训练测试,即使两个网络是在共用同一个卷积层。
总的来说,YOLO算法将物体检测过程巧妙的变成了一个回归问题,进而求的对于不同数据测试的不同结果,总体流程就是,首先输入图像经过一次inference,这样就可以得到所测图像之中所有的物体位置以及所属类别,另外还有相应的置信概率,而R-CNN/FastR-CNN/FasterR-CNN将检测结果分为两部分求解:
分别是物体类型,物体位置问题,也就是分类问题和boundingbox(回归问题)。
图2-3YOLO与CNN系列的区别
2.2.2YOLO算法的核心思想
(1)网络定义
在YOLO检测网络之中,一共有24个卷积层,另外还有两个全积层。
如图所示。
图2-4YOLO网络结构图
这里面所内含的卷积层,主要负责对图像的特征捕获采集,而两个全积层则是来处理分析得到图像的预测位置,另外还有类别概率值。
从YOLO模式看来,该网络借鉴了GoogLeNet的分类网络结构。
但与该网络不同的是,YOLO算法系统之中未使用inceptionmodule,反而YOLO使用1*1卷积层+3*3卷积层来简单替代那一复杂结构,大大缩小了成本,特别注意的是此处1*1卷积层的存在是为了跨通道信息整合。
在发表的YOLO论文中,为了告别复杂结构,作者提出了一个更加轻快的,更加便捷的检测网络FastYOLO,因为它仅仅只有9个卷积层和2个全连接层。
使用titan*GPU,FastYOLO并且在这样简单的结构下,仍可以实现155fps这样的快速检测速度,但同时,系统MAP值也从YOLO的63.4%降到了52.7%,尽管如此,这样的成绩仍然要远高于过去检测方法(DPM)的MAP值。
(2)输出representation定义
YOLO算法实现的过程即是,首先将输入的图像,分割成大小相等的全等正方形,每个方格都同时负责检测内部物体落入情况,简言之就是物体中心落入的格子来负责检测出该物体的类型信息,如图所示,图像成功识别物体狗。
图2-5YOLO全连连接输出层示意图
在每个格子之中,都回输出B个boundingbox(包含物体的矩形区域)信息,同时也输出C个物体属于某种类别的概率信息。
而在Boundingbox信息之中,包含5个数据值,分别是x,y,w,h,和confidence。
在这之中x,y代表当前格子预测得到的物体的boundingbox的中心位置的坐标。
w,h是boundingbox的宽度和高度。
而在实际操作对其训练时,w和h的值使用图像的宽度和高度进行归一化到[0,1]区间内;x,y是boundingbox中心位置相对于当前格子位置的偏移值,并且被归一化到[0,1]区间内。
而confidence则是反映当前boundingbox是否包含物体以及物体位置的准确性,该模式的计算方式如下:
confidence=P(object)*IOU,在该计算公式之中,boundingbox包含物体,则P(object)=1;否则P(object)=0。
IOU(intersectionoverunion)为预测boundingbox与物体真实区域的交集面积,并且以像素为单位,用真实区域的像素面积归一化到[0,1]区间内。
因此,YOLO网络最终的全连接层的输出维度是S*S*(B*5+C)。
YOLO论文中,作者训练采用的输入图像分辨率是448*448,S=7,B=2;采用VOC20类标注物体作为训练数据,C=20。
因此输出向量为7*7*(20+2*5)=1470维。
作者开源出的YOLO代码中,全连接层输出特征向量各维度对应内容如下:
图2-6YOLO输出层特征向量各维度对应图示
3.系统总体设计
3.1系统需求分析
3.1.1功能需求
2020年新冠肺炎席卷全球,佩戴口罩能够有效切断新冠肺炎病毒的传播途径,是预防感染的有效措施。
随着疫情影响的逐步扩大,国内公众场合要求人们需要佩戴口罩,但是也总有一些人因为特殊情况未能佩戴口罩,这有可能会对周围人群的安全造成隐患。
特别是商场、餐饮、地铁、车站等人员密集型的场所,由工作人员人工检测体温与监督乘客口罩佩戴情况,在人流量高峰时段的检测往往应接不暇,经常会出现大量人力的浪费,并且吃力不讨好,效率仍然低下。
随着时代的快速发展,计算机视觉技术使得我们摄像机与计算机合而为一,一体化的分析处理,快速高效的实现对人员来往是否佩戴口罩的检测。
本系统可以自动准确且快速地识别图片或视频中人物是否佩戴口罩,有着重要的应用场景和市场前景。
3.1.2性能需求
(1)系统在因特网正常状况下全天候提供服务,用户可以随时使用该系统进行检测。
(2)检测速度要尽可能的快并且检测结果尽可能准确。
(3)系统的安全性、可操作性、可维护性要较为完善。
3.1.3运行需求
本系统采用了YOLOv4模型,Darknet深度学习框架,操作系统为Windows10,环境为Pytorch。
这些技术目前都已经很成熟,而且技术含量很高,使用起来很方便,安全性也有较大保障。
目前高性能的网络组建大量涌现,他们速度快、用量大、可靠性高、价格低,完全可以满足本系统的需要。
3.2系统功能设计
在使用本系统时,用户首先需要选择本地图片或视频并传入系统,系统对图片进行预处理后再对目标人脸的区域进行定位,然后对定位后的人脸区域进行是否佩戴口罩的识别,最后将识别结果输出。
根据上述描述,本系统应具备以下四个功能:
(1)图片选择:
提供从本地文件夹中选择待识别图片的功能。
用户可以从本地文件夹中获取想要识别的图片并传入系统。
(2)图像预处理:
提供对传入的图片进行预处理的功能。
该功能可以对传入的图片进行灰度校正和平滑处理,为之后对图像进行进一步分析和识别做准备。
(3)图像识别:
该功能是对已经预计处理的图像进行再一次进一步的分析,并通过如此方式对于图像特征提取,对于目标进行定位以及预处理之后的图像进行进一步分析,对图像进行特征提取、目标定位和目标识别。
(4)结果输出:
该功能可以将已经完成识别的图像的结果进行输出。
图3-1系统功能结构图
4.系统实现
4.1图像预处理
受到光照、成像距离、成像角度以及噪声的影响,有时会使获得的图像质量降低。
图像预处理就是对给定的图像采取相应的处理,最终得到完全清晰可以处理的图像,图像的预处理的主要目标是对于图像之中无关紧要的消息消除,并回复有用的信息,强化其信息可检测性,并且与此同时最大可能简化数据,使得获得更简单的数据,更全面的结果,正因如此,从而进行对于其特征的提取,图像的分割,匹配,更有识别的处理可靠性。
。
因此,在图形识别之前必须要先对对图像进行预处理。
1.图像缩放
图像缩放是将图像按照一定的比例进行大小变换,这种变换可以改变图像中像素之间的空间关系。
因为图像通常采用整数位置的像素表示定义,通过某个点就可以映射到多个点,所以缩放后的图像很有可能无法准确找到相应的对应点,所以必须要进行近似处理,而近似处理,我们通常使用插值的方法,在插值算法中,包含最近邻插值和线性插值。
在这之中的最近邻插值是最简单的插值方法,直接选择和它所映射到的位置最相近的像素值赋值给它。
这种方法简单快速,灰度保真好,但误差较大,且视觉特性较差。
线性插值可以用矩阵进行转换,假设图像X轴方向缩放比率为f(x),Y轴方向缩放比率为f(y),那么原图像中某一点(x0,y0)与新图像中的(x1,y1)相对应,它们之间的转换可以用矩阵表示:
=
逆运算的表达式为:
=
2.灰度处理
在图像处理中,处理三个通道的数据会比较复杂,因此需要先将图像变灰,也就是对图像进行灰度处理,因为灰化后的照片可以尽可能的减少原始图像的数据,这样便可以减少计算量,增加计算精度,灰度处理,简单来说,就是将各个像素点的RGB值统一成同一个值,从而失去颜色,变为灰色,经过灰度处理后的图像将由三通道变为单通道,而单通道的数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 目标 检测 口罩 识别 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)