赵震
(西南科技大学计算机科学与技术学院,四川绵阳,621000)
基于OpenCV的人体安全帽检测的实现
赵震
(西南科技大学计算机科学与技术学院,四川绵阳,621000)
随着计算机视觉检测技术的发展,施工者的安全防护措施保障可辅助以视觉检测。人体安全帽检测系统主要基于opencv的图形图像处理技术,对特定的目标物体进行样本收集训练后,可一定程度上对施工现场所产生的视频或者图片文件进行扫描,在人体识别的基础上,辨别出施工人员安全帽配带情况一定程度上降低安全隐患。
OpenCV;目标检测;AdaBoost算法;Haar训练
随着计算机技术的发展,智能化、自动化处理的项目作业越来越多。实际工程项目中,还存在相当一部分高危工程作业的进行需要人工完成。因此,工人的安全防护措施保障,也随之成为现代化工程建设需要解决的问题之一。人体安全帽检测系统主要基于opencv的图形图像处理技术,对施工现场所产生的视频或者图片文件进行预处理后,在人体识别的基础上,辨别出施工人员安全帽配带情况,在一定程度上将不安全因素降到最低,促进项目作业的正常完成。
OpenCV是一个基于开源发行的跨平台计算机视觉库,可以运行在Linux,Windows,MacOS操作系统上,对跨平台支持良好[1]。它主要采用C语言进行编写。它提供了便捷且功能强大的一系列开发接口,最大程度上集成了视觉检测和图形图像处理两方面的很多算法。它设计目标是在提高执行速度的基础上,聚焦实时应用,与此同时构建一个易用的计算机视觉框架,通过这个框架,程序开发人员可以方便地设计出复杂的计算机视觉方面的应用程序。
Haar级联训练[1]是一个基于Haar特征的级联分类器的一种训练方法。它是通过之前预备好的正负样本,提取检测目标的Haar特征值,生成若干个弱分类器,然后把这若干个弱分类器串联成强分类器,最终使用这个强分类器进行目标物体的检测。Haar级联训练的结果是一个xml类型的文件,用户可以通过加载这个文件来对窗口中的内容进行扫描。
2.1 Haar-Like特征
Haar级联训练基于Haar-Like特征,因类似于Haar小波而得名。矩形特征的值指的图像上两个或者两个以上形状大小相同的矩形内部所有像素灰度值之和的差值。扩展之后的 Haar 特征可分为3 类:边缘特征、线性特征和中心特征(如图1所示)。将矩形黑色区域像素灰度值总和与白色区域像素灰度值总和进行差值运算,结果即为所求特征值,它反映图像局部的灰度变化[1]。
图1 Haar-Like特征
2.2 AdaBoost算法
AdaBoost算法是提高弱分类算法准确度最优秀的算法之一,有着坚实的理论基础,在实践中应用广泛。AdaBoost算法本质上是一种弱分类器分类器组合算法,它的主要思想是对同一个样本训练集合,分多个阶段进行训练,得到不同的分类器(即弱分类器),然后把这些弱分类器连接起来,组成一个功能更强大的分类器(即强分类器)。 与此同时,AdaBoost 算法的优点不仅在于它是一种高效的机器学习算法,还在于这三点: (1) AdaBoost 算法使得 Boosting 从最初的猜想变成一种真正具有实用价值的算法; (2)算法采用的一些新颖的技巧, 如: 打破原有的样本分布, 也为其他统计学习算法的设计带来了一些重要启示; (3)与此相关的理论研究成果在很大程度上促进了集成学习的发展[3]。
3.1 检测系统方案设计
综合考虑检测的对象,通过对多种的算法的比较,Haar级联训练可控性较强,对于检测目标可同过正负样本的数量等进行精度的控制,因此,使用Haar级联训练对目标物体进行检测。
整个系统主要分为三个模块,样本的收集与训练,人体检测,目标物体(安全帽)的检测。样本的收集我们的采集1500张正样本,和1000张负样本,对其及逆行规格统一化处理后,使用OpenCV2.4.9自带的opencv_traincascade.exe进行级联器的训练。对于最终目标物体的检测,为了降低无关区域的检测,我们第二步使用OpenCV2.4.9自带的HOGDescriptor::getDefaultP eopleDetector()获取自带SVM分类器进行人体检测,在此基础上获取检测到的人体坐标区域,再对检测到的人体区域进行多窗口最大值化处理,进行重复检测结果的归一化处理。最终,在相应的人体区域内进行安全帽的检测。
3.2 检测系统方案实现
3.2.1 样本的收集与训练
在样本的手机上,我们手机正样本数目2000(含有安全帽的样本),负样本1000(不含负样本)。首先使用opencv_ createsamples.exe创建positiveVec.vec,参数如下:
-info positiveImages.txt -vec positiveVec.vec -w 24 -h 24 -num 2000
之后再使用opencv_traincascade.exe进行训练,参数设置如下:
-vec positiveVec.vec -bg negetiveimages.txt -numPos 2000 -numNeg 1000 -numStages 15 -w 24 -h 24 -data data -maxFalseAlarmRate 0.5 -minHitRate 0.9999 -mode ALL
训练过程中的截图如图2所示,训练后在data文件内生成cascade.xml,即为包含当前检测目标haar特征值的文件。
图2 Haar训练截图
3.2.2 人体检测与目标物体
检测系统的设计主要分为三个部分,人体检测,图片处理,安全帽的检测,主要的结构如图3所示。
图3 系统设计类图
3.2.3 检测结果展示与分析
系统测试结果如图4所示。
图4 测试结果展示
分析可得:检测过程存在一定的误差,同时,随着环境复杂度的增强,检测的误差率有一定的提高。
通过采集训练样本,人体检测,目标物体检测,我们在一定误差的基础上对人体安全做出了正确的检测识别。在实际的应用过程中,我们可以通过反转思想,在检测到的人体集合中,筛选掉携带安全帽的人员,从而展示出未携带安全帽的人员,在一定程度上排除项目作业过程中的不安全因素。同时,此系统设计还有许多的不足之处,如在复杂环境中对安全帽进行检测时,误差率有大幅度的提升,针对系统的改进,拟采用颜色和haar级联训练相结合的方式进行识别,并有针对的提高政府样本的数量,调整正负样本的比例,可能会在一定程度上提高目标物体检测的正确率。
[1]邵翔,魏国亮,张彬,王建华.基于Raspberry Pi和Haar分类器的AUV目标搜寻[J].电子科技,2017,30(2):130-134.
[2]曹莹,苗启广,刘家辰,高 琳.AdaBoost 算法研究进展与展望[J].自动化学报2013,39(6):745-749.
Implementation of human helmet detection based on OpenCV
Zhao Zhen
(School of computer science and technology, Southwest University of Science and Technology, Mianyang Sichuan,621000)
With the development of computer vision detection technology, safety protection measures of the construction can be aided by visual inspection. The human body safety helmet detection system is mainly based on image processing technology of OpenCV, the sample collection training on specific objects, to a certain extent on the construction site of the resulting video or image files were scanned in based on the identification of the human body, to identify the safety helmet with the construction workers to some extent reduce security risks.
OpenCV; target detection; AdaBoost algorithm; Haar training