2. 天津师范大学 计算机与信息工程学院, 天津 300387
2. School of Computer and Information Engineering, Tianjin Normal University, Tianjin 300387, China
安全帽能够有效减少头部和顶部受到的压力, 保护人的头部免受侵害[1], 是不可替代的防护工具. 不佩戴安全帽等不安全行为是导致工程现场事故发生的主要原因. 因此, 长期以来工人不安全行为管理一直被认为是预防和控制工程现场生产事故的根本途径[2]. 由于工程现场范围较大、工作时间长, 使用人工方法对安全帽的佩戴情况进行监管, 不仅耗费大量人力物力, 而且容易出现漏检情况.
随着计算机视觉技术的快速发展, 基于深度学习的目标检测算法取得了巨大的成功. 基于深度学习的目标检测算法可划分为两个类别, 一类是two stage检测器, 主要包括R-CNN[3], Fast R-CNN[4], Faster R-CNN[5]等, 首先产生多个可能包含待测物体候选框(proposal), 再对这些候选框进行位置的修定和目标的分类, 得到最后的检测结果. 另一类是one stage检测器, 以YOLO系列, SSD[6], RetinaNet[7]为代表, 不产生候选框, 直接在CNN网络中提取特征完成目标的分类与定位, 整个过程只需要一步, 检测速度更快. 2020年4月, Bochkovskiy等人[8]提出YOLOv4目标检测算法, 在YOLOv3[9]的基础上加入了各种可以提升精度的tricks, 速度保持不下降的情况下, 在MS COCO数据集上达到了43.5% AP, 实现了精度和速度的最优平衡.
采用基于深度学习的目标检测方法对安全帽佩戴情况进行检测已成为趋势. 施辉等人[10]改进YOLOv3目标检测方法, 使用图像金字塔结构来获取多尺度的特征图, 进行位置和类别的预测, 从而提高安全帽的识别精度; 徐先峰等人[11]使用轻量级网络 MobileNet替换SSD中的特征提取网络VGG, 来提高安全帽检测的速度, 在安全帽检测模型上进行改进. 但潘存瑞等人[12]指出: 工地现场人员组成复杂, 流动性强, 管理难度大, 仅进行安全帽佩戴检测无法实现对违规人员的管理, 因此一些研究人员开始致力于安全帽佩戴监管系统的研究, 如樊钰[13]设计的安全帽检测系统可以对报警区域出现行人未佩戴安全帽进行报警, 但无法进行有效的违规图片抓取、违规人数统计以及解决重复警告问题, 仍无法满足当前工程现场的实际需求.
本文设计并开发了一套安全帽智能监管系统. 首先根据实际应用场景对安全帽数据集进行了扩充, 对当前主流的目标检测模型进行实验对比, 最终选用速度和精度均具优势的YOLOv4目标检测模型, 使用K-means算法针对安全帽目标较小的特点对数据集进行聚类分析生成新的先验框, 并进行训练得到检测模型, 提高安全帽的识别精度, 实现对监控中工人是否佩戴安全帽的精确实时检测, 并在YOLOv4检测模型的基础上结合跟踪模型DeepSORT, 为每个检测目标标记一个唯一的ID, 有效解决违规人员重复警告和无法进行违规数据统计, 违规图片抓取的问题; 并结合视频推拉流, OpenCV图像处理, ECharts数据可视化等技术, 最终制作成具有安全帽检测、检测视频实时直播、违规人员实时警告、违规图片抓取并展示、违规数据可视化监测、查看违规历史图片等多功能的跨平台移动APP, 可同时兼容IOS和安卓设备, 方便管理人员随时随地使用, 真正实现对工程现场工人不佩戴安全帽行为的有效监管.
1 系统功能系统功能模块如图1所示. (1)用户管理. 用户初次使用系统时, 可以使用个人信息进行注册, 注册并登录成功后方可使用该系统; 若用户忘记密码, 可以通过修改找回密码继续使用系统. (2)安全帽检测跟踪. 对监控视频流中的工人进行安全帽佩戴检测和跟踪. (3)状态管理. 用户可以在APP端实时查看经过安全帽检测跟踪后的监控视频, 若视频中出现违规人员, 则自动进行违规图片抓取, 并触发弹窗警告提醒用户, 同时可以点击“历史违规”按钮, 查看历史违规图片, 将违规数据通过柱状图、折线图等多种格式进行展示, 同时可以下载导出违规数据, 更加方便用户监管工程现场安全帽佩戴情况.
2 系统设计与实现
基于深度学习的安全帽监管系统的架构如图2所示. 通过监控摄像头, 对工程现场监控视频进行采集, 在本地服务器对视频进行安全帽检测跟踪处理, 并将处理中的视频进行实时推流以及违规数据和图片发送至云端, 在云端进行大数据的分析、统计和存储, 最后在跨平台APP终端进行展示.
2.1 检测视频直播模块设计借助FFmpeg和本地服务器Nginx可以将视频数据转换成视频流实时上传至云端服务器, 在客户端进行拉流展示从而实现直播的效果, 推拉流过程如图3所示. 其中, 推流过程见图3左侧日志, 拉流过程如图3右侧视频所示. 为了在移动APP端实时展示经过安全帽检测和跟踪后的监控视频, 方便管理人员实时查看工程现场的状况. 本系统在视频推拉流的基础上, 使用OpenCV函数将监控视频流截取成一帧一帧的图片放入队列中, 调用安全帽检测跟踪模型, 再将检测后的图片以流的形式经过FFmpeg进行推流.
由于手机浏览器无Flash插件, 无法直接在移动APP上使用video.js拉取FFmpeg推送的rtmp图片流, 本系统使用开源Smart-rtmpd服务器将rtmp协议的图片流转换成hls协议的m3u8格式图片流, 最终在移动APP端成功拉流显示, 从而实现监控视频的边检测边展示.
2.2 违规数据及图片抓取模块设计对监控视频中的安全帽进行检测跟踪过程中, 使用track.people_id记录检测结果为“person”的ID号, track.track_id为当前画面中检测到新目标的ID号, 如果track.track_id大于track.people_id并且当前画面中新目标的标签class_names[0]为“person”时, 则认为画面出现新的未佩戴安全帽的工人, 更新记录违规人数unsafety_count的值, 调用OpenCV函数对当前画面进行截取, 并连接数据库将图片保存至数据库的违规图片数据表中并更新数据库中的违规数据信息.
2.3 数据存储模块设计通过编译一组完成特定功能的SQL语句完成数据的存储过程. 本系统将数据存储在云端MySQL数据库中, 保证系统数据信息的安全. 后端采用PHP语言进行数据存取, 完成前后端的交互. 存储数据包括移动APP的用户信息表app_user_data, 包含用户名和密码, 手机号以及性别等字段; 违规数据表app_illegal_data, 包含未佩戴安全帽的总人数, 以及违规日期等字段; 违规图片数据表app_illegal_image, 主要包括违规图片的ID号, 存入时间, 名称以及存放的路径等字段.
2.4 违规图片传输模块设计用户使用移动APP时, 应用与服务器建立全双工通道. 当服务器数据库中违规图片数据表发生更新时, 违规图片数据表的触发器会启动外部PHP函数, 提取对应的图片数据, 并使用ws.broadcast函数广播到与服务器相连的多个用户, 用户端ws.onmessage函数对接收到的图片信息进行解析显示, 从而实现违规图片在移动APP端的展示.
2.5 违规数据可视化模块设计用户查看违规数据时, 移动APP发送Ajax请求, 服务器接收到Ajax请求后, 服务器启动PHP函数读取数据库中的违规数据, 并将数据以JSON格式发送给用户, 用户端解析接收到的JSON串, 使用ECharts内部函数将数据添加到对应的ECharts表格函数中生成表格, 并以多种图形形式展示违规数据分别如图4和图5所示, 从而实现违规数据可视化, 使用户更加方便的分析工程现场近期未佩戴安全帽的数据.
3 安全帽检测跟踪算法 3.1 YOLOv4网络结构如图6所示, YOLOv4使用的主干提取网络CSPDarknet53是在Darknet53 (YOLOv3主干网络)的基础上使用CSPnet结构[14]产生的, 在降低计算复杂度的同时还可以保证准确率. 同时为了更好地提取融合特征, YOLOv4引入SPP (空间金字塔池化层)结构和PAN (路径聚合网络)结构. 其中在SPP模块中, 使用1×1, 5×5, 9×9, 13×13的池化核进行最大池化, 使得空间尺寸大小得以保留, 然后将不同尺度的特征图进行连接作为输出, 可以更有效的增加主干特征的接收范围, 显著的分离上下文特征. PAN结构则借鉴了应用于图像分割领域的PANet[15], 可以自底向上传达强定位特征, 进一步提高特征提取的能力.
3.2 数据集的制作和划分针对开源安全帽数据集[16]缺乏实际应用场景数据这一问题, 在原数据集的基础上进行扩充. 采集了多个工程现场的监控视频, 并将视频中符合场景需要的图片进行裁剪和截取, 然后使用labelImg进行数据标注如图7所示. 最终选取8805张图片作为数据集, 并随机选取其中7924张作为训练数据集, 881张作为测试数据集.
3.3 先验框的生成
在安全帽数据集上使用K-means算法进行聚类分析, 生成新的先验框. YOLOv4模型使用的9个先验框是在VOC数据集上计算得出的, 目标大小差距很大, 而安全帽数据集以小目标为主, 原先验框的尺寸和数据集中目标的尺寸差异较大, 会导致检测模型的精度不高, 因此使用K-means算法对数据集进行聚类分析,得到9个新的先验框分别为(7, 15), (9, 19), (11,23), (14, 29), (20, 36), (28, 49), (41, 70), (64, 110), (120, 207). 并分别使用原先验框和新先验框对YOLOv4检测模型进行训练, 对比检测效果如图8所示, 检测图片中的蓝色框为数据集的标注框, 红色框和绿色框为模型的检测结果, 其中绿色框为正确检测的目标框, 反之红色框则为错误检测的目标框. 检测结果表明, 在安全帽数据集上使用K-means算法进行聚类分析生成新的先验框, 并进行训练得到的YOLOv4检测模型对安全帽的检测更加精准.
3.4 检测模型实验结果对比
为了进一步验证在YOLOv4模型使用K-means算法生成的新先验框的有效性, 检测训练模型的性能, 在相同的实验环境下分别使用YOLOv3、SSD、Faster R-CNN对数据集进行训练, 再使用得到的训练模型进行测试, 实验结果如图9所示. 使用经过K-means算法聚类分析得到的新先验框进行训练的YOLOv4检测模型比使用原先验框进行训练的YOLOv4模型MAP(AP表示单个检测类别的平均精度, MAP则是多个类别AP的平均值, 即检测的准确率)提高0.81%, 且高于YOLOv3的85.08%, SSD的77.11%, 以及Faster R-CNN的88.66%, FPS (每秒能检测的帧数, 即模型的检测速度)高达24, 性能最优, 完全满足工业需求.
3.5 DeepSORT目标跟踪算法原理目标跟踪SORT算法[17]使用卡尔曼滤波算法预测当前位置, 使用匈牙利算法进行逐帧关联, 在高帧速率下能够取得良好的性能, 但是对于物体遮挡情况几乎没有处理, 容易导致ID切换. 相比于SORT, DeepSORT算法[18]使用了更加可靠的度量来代替关联度量, 还加入了级联匹配以解决目标较长时间被遮挡的情况. 因此本文采用DeepSORT算法对检测目标进行跟踪, 为每个人标记一个唯一的ID, 以避免重复警告, 并能实现对违规人员的正确统计.
(1) 状态估计
DeepSORT使用一个8 维参数
DeepSORT使用卡尔曼滤波器预测框和目标检测框之间的马氏距离来描述运动信息的关联程度. 计算公式为:
$ {d^{(1)}}(i,j) = {({d_j} - {y_i})^{\text{T}}}{{\textit{S}}_i}^{ - 1}({d_j} - {y_i}) $ | (1) |
其中,
如果仅使用运动信息进行关联匹配, 当运动的不确定性较高时容易导致ID切换, 因此DeepSORT引入余弦距离对外观信息的关联程度进行度量. 计算公式如下:
$ {d^{(2)}}(i,j) = \min \left \{ 1 - {r_j}^{\text{T}}r_k^{(i)}|r_k^{(i)} \in {R_i} \right \} $ | (2) |
其中,
DeepSORT使用运动信息和外观信息两种度量的加权作为最终度量, 计算公式为:
$ {c_{i,j}} = \lambda {d^{(1)}}(i,j) + (1 - \lambda ){d^{(2)}}(i,j) $ | (3) |
其中,
(2) 级联匹配
如果一个目标被长时间遮挡, 就会大大增加卡尔曼滤波器预测的不确定性. 因此为了让目标优先匹配消失时间较短的跟踪器, 首先为每个检测器分配一个设有time_since_update 参数的跟踪器, 如果跟踪器顺利完成匹配和更新, 则重置参数为0, 否则对参数进行更新+1. 级联匹配就是根据这个参数进行匹配, 参数小、消失时间较短的跟踪器优先匹配, 从而让当前目标匹配上距离当前时刻较近的跟踪器. 级联匹配能够保证较近出现的目标具有较大的优先权, 从而有效解决目标被长时间遮挡的情况.
3.6 检测跟踪算法处理流程
在YOLOv4目标检测算法的基础上, 结合跟踪算法DeepSORT, 最终实现安全帽的自动检测跟踪, 其算法的处理流程如图10所示, 首先获取监控视频流的输入, 对跟踪器参数进行初始化; 然后调用YOLOv4算法对当前帧进行安全帽检测并利用NMS (非极大值抑制)算法对检测框进行筛选, 以及使用卡尔曼滤波器对上一帧图片中的目标进行预测, 然而检测出的目标并不能与上一帧的目标对应起来, 因此需要融合运动信息和外观信息使用级联匹配策略进行数据关联, 并对未匹配的检测, 未确认状态和未匹配的跟踪器进行IOU匹配, 利用最后的匹配结果对跟踪器和特征集等进行更新, 继续使用新的跟踪器对视频流进行预测, 同时将当前跟踪结果进行输出.
3.7 实验结果使用上述安全帽检测跟踪算法对视频处理的效果如图11所示, 左上角显示当前检测帧率FPS、当前画面中目标的个数Current Object Counter和检测到目标的总个数Total Object Counter.
4 系统部分界面展示视频界面如图12所示, 可以实时展示经过安全帽检测和跟踪后的监控视频, 并且视频下方可以实时展示抓取的违规图片, 方便管理人员查看. 点击“查看历史”按钮进入违规历史图片如图13所示, 查看历史违规人员图片. 检测视频也可横屏放大观看, 当画面中出现未佩戴安全帽的人员时, 就会触发警告框进行警告提醒, 如图14所示.
5 系统测试
系统测试环境如下:
硬件环境: Windows 10专业版操作系统, 16 GB内存, 1T硬盘, i5处理器, Android 7.0手机, IOS 13手机.
软件环境: HbuilderX编译器, 夜神模拟器.
使用HbuilderX编译器打包安卓和IOS应用安装包, 并分别安装在Android 7.0和IOS 13设备上进行测试. 在联网环境下对软件进行测试, 初次打开应用耗时1–3 s. 注册登录后各功能使用正常. 可实时查看检测视频直播画面并接收实时违规警告, 点击按钮可查看违规历史图片, 进入违规数据界面可刷新违规数据、查看可视化表格以及导出违规数据. 经测试, 系统运行良好, 鲁棒性强, 各项功能均符合设计要求.
6 结语本文介绍了基于深度学习的安全帽智能监管系统, 该安全帽监管系统可以准确快速地完成监控视频中安全帽的检测和跟踪, 若有未佩戴安全帽的违规人员出现, 在移动APP端可以实时发送警告信息提醒管理人员, 使管理人员可以尽快对未佩戴安全帽的人员做出提醒和处理, 以有效减少安全事故的发生; 并对违规人员进行有效的图片抓取, 相对于存储监控视频, 只存储违规图片, 可以大大节省存储空间, 并可以作为后期管理人员处理未佩戴安全帽人员的有效证据; 实现违规数据的可视化展示, 可以帮助管理人员了分析工程现场违规数据的变化情况, 为管理人员做出响应的安全决策提供有效依据, 能够真正实现工程现场的智慧化管理, 具有重要的推广意义. 并希望该系统能进一步推广至更多工程现场, 协助管理人员保障工人的人身安全, 将发生悲剧的概率降低至零点.
[1] |
张栋. 一个小动作、一份大责任——安全帽与责任. 2020年智慧建造与设计学术云论坛(成都)论文集. 成都: 重庆市鼎耘文化传播有限公司, 2020. 125–129.
|
[2] |
曹庆仁, 李凯, 李静林. 管理者行为对矿工不安全行为的影响关系研究. 管理科学, 2011, 24(6): 69-78. DOI:10.3969/j.issn.1672-0334.2011.06.008 |
[3] |
Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014. 580–587.
|
[4] |
Girshick R. Fast R-CNN. Proceedings of 2015 IEEE International Conference on Computer Vision (ICCV). Santiago: IEEE, 2015. 1440–1448.
|
[5] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. Proceedings of the 28th International Conference on Neural Information Processing Systems. Montreal: MIT Press, 2015. 91–99.
|
[6] |
Liu W, Anguelov D, Erhan D, et al. SSD: Single shot MultiBox detector. Proceedings of the 14th European Conference on Computer Vision. Amsterdam: Springer, 2016. 21–37.
|
[7] |
Lin TY, Goyal P, Girshick R, et al. Focal loss for dense object detection. Proceedings of 2017 IEEE International Conference on Computer Vision (ICCV). Venice: IEEE, 2017. 2999–3007.
|
[8] |
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv: 2004.10934, 2020.
|
[9] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv: 1804.02767, 2018.
|
[10] |
施辉, 陈先桥, 杨英. 改进YOLOv3的安全帽佩戴检测方法. 计算机工程与应用, 2019, 55(11): 213-220. DOI:10.3778/j.issn.1002-8331.1811-0389 |
[11] |
徐先峰, 赵万福, 邹浩泉, 等. 基于MobileNet-SSD的安全帽佩戴检测方法. 计算机工程. https://doi.org/10.19678/j.issn.1000-3428.0058733. [2021-01-09].
|
[12] |
潘存瑞, 胡海涛, 张雷. 智慧工地在建筑工程安全管理中的优势分析. 智能建筑与智慧城市, 2020(12): 87-88. DOI:10.3969/j.issn.1671-9506.2020.12.029 |
[13] |
樊钰. 基于深度学习的安全帽检测系统设计与实现[硕士学位论文]. 呼和浩特: 内蒙古大学, 2019.
|
[14] |
Wang CY, Liao HYM, Wu Y H, et al. CSPNet: A new backbone that can enhance learning capability of CNN. Proceedings of the 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops (CVPRW). Seattle: IEEE, 2020. 1571–1580.
|
[15] |
Liu S, Qi L, Qin HF, et al. Path aggregation network for instance segmentation. Proceedings of 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 8759–8768.
|
[16] |
Safety-Helmet-Wearing-Dataset. https://github.com/njvision-power/Safety-Helmet-Wearing-Dataset. (2019-12-17) [2021-01-09].
|
[17] |
Bewley A, Ge ZY, Ott L, et al. Simple online and realtime tracking. Proceedings of 2016 IEEE International Conference on Image Processing (ICIP). Phoenix: IEEE, 2016. 3464–3468.
|
[18] |
Wojke N, Bewley A, Paulus D. Simple online and realtime tracking with a deep association metric. Proceedings of 2017 IEEE International Conference on Image Processing (ICIP). Beijing: IEEE, 2017. 3645–3649.
|