基于OpenCV的安全帽佩戴识别的分析与实践

收藏和点赞,您的关注是我创作的动力

概要

  本文主要研究的内容就是对于工地施工人员安全帽佩戴行为的实时动态监测,本文对于安全帽佩戴行为的监测用到了机器学习的检测方法。除此之外还可以通过一些扫描仪器对于施工人员的安全帽的佩戴状态进行样本的提取,使用级联分类器对于施工人员是否佩戴安全帽进行判断。通过以上的实验和方法,能够做到实时监测施工人员佩戴安全帽的状态,安全帽佩戴是否规范,并发出预警,从而可以保证安全帽佩戴的规范性,保障施工人员的人身安全。本次实践将这种检测方法分别应用要于行人检测和人脸识别上,可形成对工作现场的一线人员实时监督的监控和进场时佩戴安全帽的门阀。

关键词:人工智能 opencv 安全帽识别

一、研究背景与意义

  我国自从改革开放以来,经济发展迅速,基础设施不断完善,各类建筑也不断地在城市中林立。因此这些建筑的施工离不开施工团队。但是在建筑的过程中,往往会伴随有各种危及到施工人员生命安全的威胁以人为本是各个行业的基础,所以施工安全便是各个行业工程建设的重中之重了,而且我国政府历来重视生产安全、人民生命和财产安全,并制定了相关的法律法规,对中华人民共和国领域内从事工程建设行业的人员及单位进行了明确的要求。对于安全事故频繁发生的行业,如化工施工和矿山施工以及电力施工等等,政府对其行业的安全问题极为重视,并制定了“预防为主、安全第一、综合治理”的安全工作方针。国家相关部门对于建筑施工的安全问题十分重视,并针对现存的问题颁布了一系列的政策和法规[1]。这其中建设部和安全生产监督管理局就对于建筑地上施工的安全提出了;要加大安全管理力度,实行从工程到各生产建筑单位各个等级均要配备安全员的政策。除了政策外,建设部还强调要加强施工人员和建设管理人员的安全教育工作,对于普通的施工人员和管理人员来说要进行三级安全教育,对于高危行业来说,要对于从业人员进行上岗前的专业培训,并需要考取相关的工作证书,这样才可以持证上岗。
  然而实际在建筑、电力、矿山、石化等行业施工中管理人员并没有把施工安全这一任务放在首要位置,过于追求施工的效益,致使施工的安全管制较差,对安全生产的要求留于形式。在整个施工流程中并没有制定完善、规范的施工安全制度;关于安全员的监督缺乏力度,甚至有的还没有安排安全员;对于一线的施工人员未进行足够的安全预防教育,没有使其拥有足够的安全意识而在实际操作现场的一线人员也对于施工安全缺少足够的重视,没有按照安全生产规章制度进行施工,在危险的施工现场也未佩戴安全帽等必要的安全设备,没有学习安全预防教育或。忽视安全预防教育,缺乏安全意识,尤其是新员工。
  对于城市高层建筑行业来说,这种高空作业往往伴随着高风险和高危险性,因为是露天工作,所以难免会有高空坠物的事故发生。根据国家生产安全管理总局每年事故发生死亡人数的统计数据可知;建筑行业发生事故死亡人数仅次于采矿业,位居事故发生第二的位置。而进一步对于建筑行业事故发生原因进行分析可以得到这样的一个结论:建筑行业事故发生主要是由于施工不按照规章制度,违规作业,并且不佩戴安全帽所引发的。这种事故往往受害者就是底层的农民工,而此类事故发生主要是由于一线操作人员技术操作的失误引起的。安全制度形同虚设,监管部门力度不够;工作人员不按要求佩戴安全设备、安全帽。
  在现有的施工监督体制中,施工安全的管理主要还是依靠人力去完成。正如上文所述;建筑行业事故多发的原因主要是由于一线技术操作人员的操作失误和操作不规范引起的。而想要保证建筑行业事故发生率较低,就要保证一线操作人员不仅技术熟练,而且能够按照规章制度进行作业,拥有更高的安全意识。对于人工对施工现场的安全行为规范进行监督管理,虽说人工进行监督能做到灵活应对,但人力并不能做到时时刻刻、方方面面都完美,难免会有失误的情况。应用安全帽识别的系统,可提高监督效率,让安全员能更有效的对整个施工现场进行监督。这种智能化的安全管理方式,可以广泛应用在露天工作的,危险性较高的行业中。安全帽识别系统最大的优势就是可以取代人工时时刻刻对于施工人员佩戴安全帽的状态进行监测,一旦发现佩戴不规范的行为就会发出警报,从而可以更好的预防施工过程中安全事故的发生。而且安全识别系统采用了视频分析的机器学习技术,这种技术产生出来的分析结果,分辨率更高,检测结果更加准确,而且兼容性也更加强大。
  在本文的安全帽是被系统中设计了两个重要的部分,分别是通过门禁进入工作区域之前的联动门禁监测和进入工作区域之后的实时动态监测。联动门禁检测就是将安全帽识别系统和门禁系统进行联动,施工人员在进入工作区域之前首先要进行安全帽佩戴的监测,只有安全帽佩戴规范才能进行下一步的门禁操作,否则只能停留在安全帽识别区域。实时动态监测就是;在施工人员正常工作的区域内,通过摄像设备对于施工人员进行人员检测,监测到工作人员之后,安全帽检测系统将会进行施工人员安全帽的佩戴检测,如果通过自动识别发现有未佩戴安全帽的施工人员,安全帽检测系统将会发出警报,并且提醒工作人员和管理人员,以及时保障施工人员安全帽佩戴的规范。用通过这两种模式提高一线工作人员的安全性,使其进入危险的一线工作区域时必定拥有安全帽;在一线工作区域操作时,时刻处于被监督的状态,让工作人员即使未遵守施工安全制度,在工作区域取下安全帽,也能及时发现并制止其危险行为。

二、安全帽佩戴识别的设计

1、实现思路

  本次实验主要是要实现安全帽的佩戴识别,在实现识别的基础上验证安全帽佩戴的可行性,设计了基于安全帽识别的两个系统,动态监测系统和联动门禁系统。
实现安全帽佩戴的识别的实现步骤:
1、导入被识别图片;
2、将图片降噪,灰度化;
3、调用安全帽分类器进行计算;
4、输出结果。
在这里插入图片描述

图3-1安全帽识别流程
  动态检测系统的实现思路:
获得视频源;
1.对视频进行行人识别,获得视频中的行人图片;
2.对获得的行人图片进行灰度化;
3.对灰度化的图片进行安全帽识别;
4.得到结果。
在这里插入图片描述

图3-2动态监测的流程图
联动门禁的实现思路:
获得视频源;
1.对视频进行人脸识别,获得视频中的人员头部图片;
2.对获得的行人图片进行灰度化;
3.对灰度化的图片进行安全帽识别;
4.得到结果。
在这里插入图片描述

图3-3联动门禁的流程图

三、OpenCV训练分类器

  本实验利用opencv进行视频流的识别。在对视频进行分析时,由于视频是由图片一帧一帧连接起来的,所以需要将视频进行分解,每几帧便截取一张图片出来分析,在分析中需要使用到安全帽相关的特征进行比较,关于安全帽的相关特征,通过opencv对正负样本的训练得到的安全帽分类器便是所需要的相关特征。最后得到分析结果,将分析结果输出。

1、安全帽识别实现

  引用安全帽分类器cascade-v2.5.xml,将要识别的图片进行与正负样本相同的灰度化处理,因为之前的分类器是由灰度化的图片训练出来的,为了实验的准确性,所以需要将被识别的图片进行灰度化。灰度化之后对图片进行特征对比,将对比结果输出,采用cv2.rectangle函数对图片识别出的安全帽的边缘进行标识,最后通过cv2.imshow进行展示。
部分实现代码如下:

gray = cv2.cvtColor(input_img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.09, 1)
if faces != ():
    color = (0, 255, 0)
    for (xf, yf, wf, hf) in faces:
        cv2.rectangle(input_img, (xf, yf), (xf + wf, yf + hf), (0, 255, 0), 2)
cv2.imshow('frame', input_img)

运行结果在这里插入图片描述

图5-1安全帽识别

5.2、基于人脸的安全帽识别

在安全帽识别的基础上实现门禁,需要使用人脸识别的功能识别出出入人员,在识别出来的基础上再进行二次识别,识别人员是否佩戴安全帽。
在本实验中采用dlib人脸检测算法,Dlib由C++编写,提供了和机器学习、数值计算、图模型算法、图像处理等领域相关的一系列功能。Dlib对人脸的识别精准度比opencv要高,拥有更多的人脸识别模型,可以检测脸部68甚至更多的特征点。在第三方库中下载安装dilb,便可在代码中直接import。
人脸识别首先需要对预存的人脸进行识别、计算,提取出关键点记录下来;对要识别的图片进行计算、识别,与预存人脸提取出来的关键点进行匹配,最后输出结果。
由于要实现门禁的功能,所以需要从摄像头中识别,在这里由于设备原因,使用笔记本的摄像头作为数据来源。使用cv2.VideoCapture(0)函数调用摄像头,每6帧读取一张图片对其进行人脸识别操作。在成功识别到图片中出现的人脸后,用cv2.rectangle函数将原本沿着识别物边缘的框进行扩大至整个头部,目的是将人员所佩戴的安全帽也包含进去。在正常情况下使用图像识别后返回的结果是两个图片上的坐标,即左上角和右下角的坐标,通过这两个坐标便可以将识别目标标记出来。而通过dilb函数对人脸识别返回的两个坐标标记的出来的框里只包含人的五官,并未将整个头部笼罩进去,所以需要将这个框扩大,将头部及佩戴的安全帽笼罩进去。
在对人脸进行识别,将识别的人脸的关键点与预存的人脸的关键点作比较,选取相似度最高的预存人员为识别出来的结果,但若最高相似度低于0.5则将识别人员判定为陌生人(???)。使用cv2.putText函数在识别框的右下角输出判断的结果。
将这个框所包含的部分进行二次识别,即安全帽识别,这样的操作让进行安全帽识别时,不必再识别整张图片,只要识别框内的内容,使得遍历的时间、内容减少,加快识别过程。最后输出结果,有佩戴安全帽的人员的框设置为绿色,否则为红色。
部分实现代码:

def discern(img):
    dets = detector(img, 1)
    dist = []
    for face in dets:
        left = int(face.left()*0.9)
        top = int(face.top()*0.4)
        right = int(face.right()*1.1)
        bottom = int(face.bottom())

        ha=img[int(top):int(bottom),int(left):int(right)]
        face = get_safe_hat(ha)
        color = (0, 0, 255)
        if face != ():
            color = (0, 255, 0)
            for (xf, yf, wf, hf) in face:
                cv2.rectangle(ha, (xf, yf), (xf + wf, yf + hf), (0, 255, 0), 2)
        cv2.rectangle(img, (int (left), int(top)), (int (right), int(bottom)), color, 2)

实现效果
在这里插入图片描述

图5-2基于人脸的安全帽识别
在这里插入图片描述

图5-3未戴安全帽的基于人脸的安全帽识别

四、 文章目录

目录

一、 绪论 1
1.1、背景 1
1.2、研究现状 2
二、 图像相关理论基础 4
2.1、图像识别的原理 4
2.2、级联分类器类的工作流程 5
2.2.1、弱分类器 5
2.2.2、强分类器 5
2.2.3、级联分类器 6
2.2.4、分类器的检测 6
2.3、haar特征的优势 7
2.4、机器学习的介绍 8
三、 安全帽佩戴识别的设计 9
3.1、实现思路 9
3.2、环境依赖 10
3.2.1、Anaconda的安装 10
3.2.2、pycharm的安装 11
3.2.3、opencv库的安装 11
四、制作安全帽分类器 12
4.1、获取样本 12
4.2、样本的预处理 13
4.3、生成样本描述文件 14
4.4、生成样本vec文件 15
4.5训练分类器 15
五、安全帽识别设计与实现 17
5.1、安全帽识别实现 17
5.2、基于人脸的安全帽识别 17
5.3、基于行人的安全帽识别 19
5.4、使用演示 21
5.4.1、实时监控的演示 21
六、 总结与展望 23
6.1、项目总结 23
6.2、展望与不足 23
参 考 文 献 24
致 谢 25
附 录 26

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值