基于百度AI智能云平台的安全帽佩戴检测系统*

2022-09-22 08:51:32郑楚伟
机电工程技术 2022年8期
关键词:安全帽人机界面百度

郑楚伟,林 辉

(韶关学院智能工程学院,广东 韶关 512005)

0 引言

工厂安全问题是工业界极为关注的一个问题。如何从源头上预防重大安全事故的发生、杜绝各种不文明施工,是工厂安全生产的重中之重。在工厂的施工现场,正确佩戴安全帽能有效地防止和减轻工人在作业过程中安全事故对头部的伤害。目前在施工现场对安全帽佩戴情况的监管主要依赖人工,该方式效率较低且耗费人力。

鉴于此,国内很多学者采用图像识别技术进行了安全帽佩戴检测研究。石永恒等[1]采用YOLO算法训练来获取一个最优检测模型,通过对模型测试,得到YOLO相较于其他单阶段检测算法来说有着更好的检测效果的结论。张锦等[2]提出一种基于改进YOLOv5的安全帽检测新方法,使用K-means++算法重新设计先验框尺寸,在特征提取网络中引入多光谱通道注意力模块,提升了模型的平均准确率。吴卫红[3]在YOLO算法的基础上,用ResNet网络替代原来的网络,并修改该网络结构,添加注意力机制,有效提高安全帽检测准确率。徐传运等[4]提出一种基于场景增强的样本扩充算法扩充安全帽佩戴数据集,将新数据集用于训练YOLOv4的安全帽佩戴检测模型,提升安全帽佩戴检测的精度。孙国栋等[5]提出了一种通过融合自注意力机制来改进Faster R-CNN的目标检测算法,通过自注意力层来捕获多个尺度上的全局信息,然后在区域建议网络的训练中通过锚框补选增强的方法让小目标信息得到更多的训练,强化了网络对于小尺度目标的表达能力,具有较好的检测效果。李天宇等[6]建立了一种基于注意力机制的双向特征金字塔的安全帽检测卷积神经网络,将跳跃连接和注意力机制CBAM技术引入双向特征融合的特征金字塔网络PANet模块中,采用了CIoU来代替IoU进行优化锚框回归预测,实现了对安全帽佩戴实时高精度检测。张乾等[7]针对随机蕨算法中二元测试的对数和蕨的数量难以确定问题,采用了网格搜索与交叉验证法改进并应用于安全帽检测应用。孙世丹等[8]通过使用加权核K-means聚类算法对YOLOv3网络模型中的聚类算法进行优化,选取更适合小目标检测的Anchor Box,以及优化YOLO网络内部的Darknet特征网络层,提高了安全帽佩戴检测的准确率。钱昱成等[9]设计了一种与特征图深度融合的改进YOLOv3算法,它能够捕捉到原图像中更多中小型目标物体的图像信息,使得系统模型更加关注于图像信息,实现了对安全帽佩戴检测的任务。张勇等[10]提出了一种基于目标算法YOLOV3的安全帽检测方法,采用DenseNet方法处理低分辨率的特征层,并使用K-means聚类算法对数据集中的目标边框重新进行聚类,使得模型更加适应安全帽领域的应用场景。王成龙等[11]提出了一种采用面部特征与神经网络相结合的算法,以多任务级联卷积神经网络提取脸部特征与VGG深度卷积神经网络相结合进行安全帽检测,能有效监督安全帽佩戴情况。岳诗琴等[12]以SSD网络作为基础,采用ResNet-50代替传统的VGG-16作为SSD的主干网络提取特征,并在附加层中引入BN层,加快网络的收敛速度,提高检测精确度。Guobing Yan等[13]提出了一种改进传统图像处理方法的双通道卷积神经网络(DCNN)模型,在AlexNet模型的基础上,利用两个独立的CNN对工人的图像特征进行提取,将传统的机器学习方法与随机森林(RF)相结合,提出了一种基于DCNN和RF的工人头盔智能识别算法。

上述方法都取得了较好的检测效果,但具体实施时,应用部署不便。考虑到近年来百度AI智能云平台的快速发展,鉴于此,本文基于百度AI智能云平台设计一个安全帽佩戴检测系统,用于智慧工厂、智慧工地、智慧矿山和智慧城市的安全生产智能化管理。运用人工智能技术进行智能视频分析,实时检测施工人员是否正确佩戴安全帽,为施工人员的人身安全提供有力保障。

1 系统框架

本文所设计的基于百度AI智能云平台进行安全帽佩戴检测的智能监控系统,在QT环境下调用OpenCV库读取网络摄像头数据,将监控视频实时上传到QT人机界面中,并将抽帧图像进行base64编码和URL编码后,调用百度AI智能云平台的人体检测与属性识别API接口,将返回的JSON数据格式的安全帽佩戴检测结果和人体框坐标信息进行解析,设计QT人机界面并实时显示安全帽检测结果和绘制人体位置框。系统会自动抽帧保留未正确佩戴安全帽的人体图像,便于后续查证处罚,同时显示该监控的IP地址,提供违规工人所在位置,供管理人员及时警告处理,统计违规行为历史数据并展示出来,供管理人员查看。本系统工作流程如图1所示。

图1 系统流程

2 系统模块设计

2.1 视频采集

摄像头抽帧的图像是本系统的输入数据。本系统根据海康威视网络摄像头官方SDK提供的应用程序编程接口,开发基于QT环境调用OpenCV库显示网络摄像头获取的实时视频。首先初始化网络摄像头SDK,注册设备并启动预览后,开始捕获实时视频流,并调用Opencv库将图像从YUV格式解码成RGB格式,然后将视频流实时显示在QT人机界面中。在QT工程文件中添加QT+=multimedia和QT+=multimediawidgets后,按 照图2所示流 程进行操作,读取摄像头数据。当检测到有人未佩戴安全帽的时候,就抓取监控区域内未佩戴安全帽的人体区域放大并显示到QT界面中,向管理者展示细节信息,步骤如图3所示。

图2 视频采集流程

图3 抓拍违规人员流程

2.2 百度AI智能云平台API的调用

百度AI智能云平台提供在线的人体检测与属性识别API接口,拥有毫秒级识别响应能力及99.9%的可靠性保障。用户只需在百度AI智能云平台注册成为开发者后,就可以调用官方SDK提供的API,根据实际任务需求进行二次开发。

2.2.1 鉴权认证机制

在百度AI智能云平台注册账号后,首先在云控制台创建人体检测与属性识别功能的应用,获取API Key和Secret Key。随后,将API Key和Secret Key作为网络请求的参数,在QT调用libcurl库,以Post请求的方式向授权服务器地址发送请求来获取Access Token。然后对服务器返回的JSON格式的数据进行解析,即可获取有效期为30天的Access Token。

获取Access Token后,就可以将其作为URL的附加参数,来调用百度AI智能云平台提供的人体检测与属性识别API进行安全帽佩戴检测。

2.2.2 图片Base64和URL编码转换

由于通过Http网络请求在网络上交换数据时,不同的设备对字符的处理方式有所不同,导致某些特殊字符可能被数据接收方错误处理,这是不利于信息传输的。所以在图像上传到百度AI智能云平台之前,需要将图像数据进行Base64编码,降低传输过程中的出错率。图片的base64编码指将一副图片数据编码成一串字符串,使用该字符串代替图像地址。进行Base64编码之后,要将一些不符合URL规范的中文字符和其他不允许出现的字符转换为符合URL规范的字符,使得在客户端与服务器的交互过程中不会出现乱码错误[14]。

本系统在客户端对监控视频的抽帧图片进行Base64编码,将图片转换为字符串格式,再进行URL编码,然后通过POST网络请求的方式将其发送到百度AI智能云平台的服务器端。在QT中编码转换的实现代码如下:

2.2.3 百度AI JSON数据的解析

获得图片的Base64和URL编码结果后,就可以向百度AI智能云平台发送服务请求了。本文使用QT的网络模块向百度AI智能云平台发送网络请求。使用QT网络模块进行网络请求的流程如下。

(1)实 例 化QNetworkAccessManager、QNetworkRequest、QNetworkReply类对象;

(2)设置百度AI智能云平台网络请求的的URL;(3)设置网络请求所需的Header参数信息;

(4)发送HTTP POST请求到百度AI智能云平台服务器端,并返回一个QNetworkReply对象,该对象包含服务器返回的应答数据;

(5)启动定时器,等待请求完成;

(6)获取响应结果的JSON格式数据。

返回的JSON数据格式例如以下所示:

以上的JSON数据表明当前图像在坐标(754,176)处有大小为(219,826)的人体被检测到了,且score参数表示置信度为0.9693506360054。headwear的name表示安全帽检测结果,有安全帽、普通帽、无帽3种情况,此处表示有0.7862206697464的置信度认为是无帽。

在得到百度AI智能云平台返回的JSON格式数据后,将使用QT的QJsonDocument、QJsonObject、QJsonArray、QJsonValue模块对数据进行解析。QJsonDocument提供了一类读取和写入JSON数据的方法。对网络请求返回的JSON数据先用QJsonDocument::fromJson()将其从文本的表示方式转换为QJsonObject对象。QJsonObject类封装了一个JSON对象。一个JSON对象是一个键值对的列表,通过JSON对象的值类型将数据解析出来即可得到百度AI智能云平台返回的安全帽佩戴检测结果。解析步骤如图4所示。

图4 解析JSON数据流程

(1)使用函数QJsonDocument::fromJson(),将JSON数据转换为QJsonDocument类对象;

(2)使用函数QJsonDocument::object()将QJsonDocument类转换为具体的对象QJsonObject;

(3)用函数QJsonObject.value()进行取值操作,则可获取第一级的键-值对,至此可得到"person_num"的值(人体数量);对安全帽信息的解析需转入(4);

(4)用函数QJsonObject.value()获取“person_info”键的值,并用函数QJsonValue.toArray()将其转化为JSON数组QJsonArray类型;

(5)用函数QJsonArray::at(i)来获取该数组的第i个元素,并使用函数QJsonObject.value()函数转化为具体的对象QJsonObject,即是检测结果中第i个人的信息;

(6)用函数QJsonObject.value()取出"attributes"的值,用QJsonValue.toObject()转换为对象;使用QJsonObject.value()取出“headwear”键的值,再用QJsonValue.toObject()转换为目标对象,使用QJsonObject().value()取出“name”键的值,即为佩戴帽子的类型(安全帽/无帽/普通帽);

(7)用函数QJsonObject.value()取出"location"键的值,使用QJsonValue.toObject()转换为对象;使用QJsonObject.value()依 次 取 出“top”、“left”、“width”、“height”键的值,即为人体位置的坐标。

3 QT人机界面设计

QT是一个跨平台的C++图形用户界面库,其具有C++面向对象的特性,封装大量的功能模块可以使得开发人员快速开发人机界面。QT自带消息机制,它利用了信号和槽函数一一对应的机制来完成各个控件之间的信息传递,这种机制使得各个模块之间的交互更加简洁,同时还可以保证信息发送的正确性[15]。

本系统在QT Creator软件中使用C++编写程序调用QT的库函数来设计安全帽佩戴检测系统的人机界面。主界面为视频监控界面,开启网络摄像头之后对视频流区域进行抽帧截图,将图像进行编码后上传至百度AI智能云平台,借用百度AI智能云平台的智慧算法能力对上传的照片进行安全帽佩戴检测,判断监控下的施工人员是否正确佩戴安全帽。安全帽必须是正确佩戴在头部才视为正常,如果只是拿在手上的话将视为未佩戴安全帽。

将百度AI智能云平台的安全帽检测结果解析出来后,就可以使用QT的QPainter类进行绘图操作。QPainter提供了高度优化的功能来完成大多数图形用户界面程序需要的绘图。通过重载父部件的QWidget::paintEvent()函数,实现在子类窗口部件中进行绘制的事件,然后在程序需要更新绘图的地方调用repaint()函数来更新窗口部件。根据JSON数据解析结果获得人体坐标位置,绘制跟踪框到视频窗口中,同时,将安全帽佩戴检测结果数据绘制到视频区域。

本系统所设计QT人机界面如图5所示。人机界面中,用按键来作为信号的发生器,每次点击按键引起信号发生后,会自动执行相应的槽函数,在槽函数里面可以实现我们需要的功能[16]。图中,按下“分析”按键就开始连接网络摄像头来获取实时视频流,然后抽帧来识别安全帽并将识别结果绘制在视频流区域;按下“打开图片”和“打开视频”按键可以自主选择电脑路径下的单张图像或视频文件进行识别;“记录”按键内保留未正确佩戴安全帽的人体图像,提供违规工人所在位置;“统计”按键内展示违规行为的历史数据统计结果;“设备管理”可以同时管理多台网络摄像头设备。图5中,右下角显示实时监控视频流,当检测到未佩戴安全帽的时候,就将违规人员的人体细节信息展示在大窗口中,供管理者查看。

图5 QT人机界面展示

4 测试与结果分析

系统测试在韶关学院智能工程学院机器人实验室,将摄像机摆在垂直离地面2.1 m的位置,以模拟施工现场的视频监控。同时,在白天光亮、夜晚黑暗情况进行测试,检测效果如图6~7所示。同时,对检测速度做了测试,统计数据如表1所示。

图6 白天光亮情况的安全帽佩戴检测效果

图7 夜晚黑暗情况的安全帽佩戴检测效果

表1 安全帽佩戴检测速度测试数据

测试结果表明,本系统安全帽佩戴检测识别在白天和夜晚场景下的平均检测速度可达5帧/s,准确率为95%,系统稳定可靠。

5 结束语

本文设计了基于百度AI智能云平台进行安全帽佩戴检测的智能监控系统。该系统基于QT应用程序开发框架,调用监控摄像头API获得视频流,抽帧后上传百度AI智能云平台进行图像解析,检测图像中所有人体并返回人体位置信息,识别人体是否佩戴安全帽。实验结果表明,本系统在安全帽佩戴检测的准确率和实时性方面均达到了实际应用的需求,能用于智慧工厂、智慧工地、智慧矿山和智慧城市的安全生产智能化管理,为施工人员的人身安全提供有力保障。

猜你喜欢
安全帽人机界面百度
矿工有无数顶安全帽
小小安全帽,生命保护伞
机电安全(2022年4期)2022-08-27 01:59:42
Robust adaptive UKF based on SVR for inertial based integrated navigation
百度年度热搜榜
青年与社会(2018年2期)2018-01-25 15:37:06
CBTC系统车载人机界面的设计与实现
基于PLC与人机界面的经编机电子横移控制系统研究
百度遭投行下调评级
IT时代周刊(2015年8期)2015-11-11 05:50:22
CTCS-3级列控车载人机界面的系统设计与实现
百度“放卫星”,有没有可能?
太空探索(2014年4期)2014-07-19 10:08:58
达人机界面DOP-B10VS511