近些年来, 深度学习技术快速发展, 在各个领域都有广泛的应用, 极大地赋能了“智能工厂”的建设. 在工厂中存在很多危险区域, 如机械设备工作半径内、高温、高电压等场所. 一旦人员进入, 就会对工人的生命健康造成不可想象的损害. 因此, 如何保障工厂内人员的安全已经成为管理者们越来越重视的问题. 要预防这些重大安全事故的发生, 就得对工厂的危险区域进行管控, 不仅仅需要限制人员的随意进出, 而且要对进入的人员及时的声光提醒.
传统的工人危险区域入侵检测一般是通过 UWB (ultra-wideband)和GPS (global positioning system)定位技术将采集到的施工现场环境和人员坐标位置数据信息整合进BIM (building information modeling)建筑信息模型中[1], 通过服务器的判断、分析、处理、传输, 从而对现场工作人员的不安全行为进行监控. 但这方式实际操作过程比较复杂, 而且干扰工人的正常操作, 也给管理工作增加负担. 近两年随着深度学习技术的逐渐兴起, 基于机器视觉的目标检测技术逐渐运用到这一领域, 如任磊等[2]针对不同的危险区域的范围设计了两种施工场地人员图像数据集制作方式, 并且通过YOLOv3神经网络训练权重的方式, 用实验验证了该方法有较高的可行性和准确率. 但是这样, 工人只要出现在画面图像内, 识别到就会直接报警, 必须保证画面内全都是危险区域. 这对于危险区域的划分提出了更加细致的要求, 而且相机的安装、调试比较困难.
因此本研究在YOLOv5s目标检测的基础上, 嵌入了基于SGBM算法的双目测距技术, 增加了空间距离这一触发条件, 工人只有走近距离摄像头一定范围内, 并且识别到才会触发声光报警. 同时针对光照不足检测图像模糊的问题, 引入注意力机制强化特征通道, 增强重要特征的权重, 减少背景的特征提取, 提高目标识别的精度.
1 入侵报警系统总体设计本文设计的工人危险区域入侵警报系统具体流程图如图1.
1) 将双目测距代码嵌入到改进后YOLOv5s主程序中, 双目相机把实时捕获的左、右图像沿着长度方向合并为一张图片输入进程序. 因此在双目测距程序开始前需要将捕捉到的一张图片分成左、右两张图片, 通过SGBM立体匹配算法经过读取相机内外参、立体校正、消除畸变、立体匹配等步骤, 计算以左图像为基准的视差图, 并经过重投影矩阵转换得到相机坐标系下三维点的坐标(x, y, z).
2) 在YOLOv5s目标检测中的process detections模块只将左图作为检测图像输入到模型中进行目标检测, 输出预测框位置(框左上点和右下点的横纵坐标).
3) 双目测距和目标检测两个模块都以左图为基准. 因此, 可以按上述公式计算目标检测每一个预测框的中心点与左相机坐标系下原点的距离, 考虑到因视差图成像质量问题可能导致的中心点坐标丢失的情况, 需设置循环语句, 以预测框中心点为中心, 沿图像坐标系横纵两个方向在预测框范围内寻找距离在设定合理范围内的点, 以此点代替中心点坐标输出[3].
4) 将检测点3轴方向的距离以及计算得到的总距离值通过cv2.putText函数输出到预测框一侧, 类别的置信度显示在另一侧. 如图2所示.
5) 将程序部署在基于Linux系统的Jetson NX的工控机上, 分别将警报灯和蜂鸣器连接在工控机的30 pin的多功能插针中GPIO_1, GPIO_2, 配置端口文件, 设定输出的电压值与方向, 如下代码.
os.system(‘echo 421 > /sys/class/gpio/export’)
os.system(‘echo out > /sys/class/gpio/gpio421/direction’)
os.system(‘echo 1 > /sys/class/gpio/gpio421/value’)
6) 在程序运行时, 若检测图像画面中有到工人, 且工人预测框中心点的距离值在设定值内, 则将GPIO_1, GPIO_2口的value值置1通电, 实现灯光、蜂鸣报警.
7) 将工控机及摄像头部署在工厂危险区域中, 实际测试效果如图3.
程序运行稳定, 且能够很好地识别出工人及距离, 并且发出声光报警, 提醒工人注意.
以下分别介绍双目测距模块和改进的YOLOv5s目标检测模块.
2 双目测距模块双目测距是模仿人类的双眼通过视差的大小来感受物体的远近, 其主要步骤有相机标定、图像校正、立体匹配、三维重构4大部分.
2.1 相机标定相机标定主要有两大目的: 首先是为了求解真实世界坐标系到相机坐标系的变换矩阵, 其次是为了求解畸变系数, 进行图像矫正. 其基于张正友平面模板法原理, 以棋盘格为标定参照物, 使用双目摄像头拍摄的不同角度的图片, 各14张, 如图4所示.
利用Matlab 中camera calibration工具箱将拍摄的样张图片通过提取角点、预估畸变误差等操作对左右两相机分别进行单目标定, 得到每个相机的内部参数、畸变系数. 再利用上述标定的图片利用stereo camera calibrator工具箱将误差较大图像移除之后重新计算, 对外部参数进行标定, 得到双目相机的参数如表1.
2.2 图像校正
利用OpenCV中Undistort Points()和StereoRectify()函数分别依据上述的标定好的参数进行畸变及立体校正, 同时得到重投影矩阵. 最终得到一个消除左右原始图像的径向、切向畸变误差, 经过旋转和重新投影映射的行对准的双目图像, 如图5所示.
2.3 立体匹配
立体匹配算法是依据匹配策略, 在左图基准图像上提取匹配单元对应的图像信息, 根据极线约束准则[4]在右图参考图像的交线上寻找最相似的匹配点, 最后由左右最佳匹配点的位置提取视差值计算深度距离. 视差值计算深度值公式如下:
$ depth{\text{ = }}\frac{{f \times b}}{{d + (c_{xr} - c_{xl})}} $ | (1) |
其中,
因此本文采用以SGM算法为核心的SGBM算法. 其匹配代价由两部分组成: 在矩形窗口内, 将经过Sobel算子预处理后的图像梯度图计算得到的BT代价与原始图片计算得到的BT代价简单相加, 减少由图像采样离散化造成的误差.
以上代价函数计算的每一个数值储存在代价空间
SGM算法巧妙的使用一维聚合代替了二维聚合这一非确定性问题. 首先选择某一路径, 在该方向上计算有效范围内的匹配代价, 接着对所有的路径进行代价计算, 将这些匹配代价相加求和, 选取有效视差范围内的最小值作为此像素点聚合后的匹配代价.
以下为任意像素
$ \begin{split} L_r^{'} =& C(p, d) + \min\left\{ {\begin{array}{*{20}{l}} {L_r^{'}(p - r, d)} \\ {L_r^{'}(p - r, d - 1) + P_1} \\ {L_r^{'}(p - r, d + 1) + P_1} \\ {\min_iL_r^{'}(p - r, i) + P_2} \end{array}} \right\} - {{\rm{min}}_k}{L_r}(p - r, k) \end{split} $ | (2) |
式(2)中第1项是当前代价C, 第2项平滑项为视差不变时的代价, 视差差值为1时的代价, 视差差值大于1的代价这三者的最小值, 其中
$ L \leqslant {C_{\max}} + {P_2} $ | (3) |
最终聚合的代价是所有路径上的和:
$ S(p, d) = \sum\nolimits_r {{L_r}(p, d)} $ | (4) |
经过代价聚合后按照“Winer Takes All ”原则求解视差:
$ {d^*} = {\rm{arg\;min}}{\text{ }}S(p, d) $ | (5) |
原始的视差图需要进一步的优化处理, 通过唯一性检测、亚像素插值、连通域噪声滤波等操作剔除错误的匹配点, 提高视差精度. 最终视差图如图7所示.
2.4 三维重构
为测算空间物体到摄像头的距离, 还需将视差图经过cv2.reprojectImageTo3D()函数变换, 得到与视差图大小相同的映射图像, 其中每一个像素的3个通道分别存储着在相机坐标系下对应点的三维坐标
$ distance = \sqrt {{x^2} + {y^2} + {{\textit{z}}^2}} $ | (6) |
YOLO模型一直以检测速率快而闻名. 随着新的优化技术如Focal Loss, FPN等的不断加入, 到如今YOLOv5检测精度已经有了极大的提升, 且其模型的权重文件相比上代缩小近90%, 使得YOLOv5模型非常适合部署在嵌入式设备实现对目标的实时检测[7]. 因此本模型以YOLOv5s模型为基础架构, 通过引入注意力机制增强重要特征, 提高检测精度.
3.1 引入注意力机制人体视觉的注意力机制可以使得我们在大量无效信息干扰下, 将注意力集中到需要关注的区域, 极大地提高了大脑处理信息的效率. 通过借鉴人体视觉的注意力机制, 在YOLOv5s的网络结构中的C3模块中Bottleneck模块加入CA (coordinate attention)注意力机制模块, 将传递通道赋予不同的权重, 使得在梯度计算过程中, 权重较大的通道占主导地位, 最终呈现在原始图像中网络能更明显的检测重点关注部分[8].
3.2 CA模块相比之前发布的SE、ECA、CBAM模块仅考虑建模通道以及特征图空间之间的关系来构建注意力特征图, CA模块(图8)还考虑了特征空间的位置信息. 将原始输入特征分解为两个一维特征的编码过程, 分别沿着长宽两个空间方向聚合特征进行全局池化, 在一个空间方向建立依赖关系的同时, 在另一方向捕获精准的位置特征[9], 二者相辅相成, 共同应用于特征图, 以增强关注对象的表示. 再将生成的attention map进行concat操作, 使通道叠加, 在经过卷积及非线性函数变换, 为空间信息各自在长宽方向进行编码的中间特征映射, 将得到的新特征按照H和W的值拆分, 在经过激活函数与最原始的输入相乘, 得到CA模块最终的注意力特征图.
3.3 对比实验
将上述4个注意力机制模块分别插入到YOLOv5s的C3块的Bottleneck结构中, 如图9所示的attention module位置, 分别组成新的YOLOv5s-SE, YOLOv5s-ECA, YOLOv5s-CBAM, YOLOv5s-CA四个网络模型, 将原始的YOLOv5s模型作为空白对照组进行对比实验.
3.4 数据集
实验采用COCO数据集中10 822张“人”类别图片, 其中8 129张图片作为训练集, 共计33 199个目标; 2 693张图片作为测试集, 共计11 004个目标.
3.5 实验参数本实验基于Windows 10平台下 PyTorch 1.10.2深度学习架构. 其中CPU型号为AMD Ryzen 75800 8核处理器@3.4 GHz, 系统运行内存16 GB, GPU为8 GB NVIDIA GeForce RTX 3070Ti, 学习率
本实验通过目标检测模型的通用评价指标来定量分析上述4个改进网络模型对人体识别的检测效果的影响, 分别为准确率(precision, P), 查全率
为了验证注意力模块CA模块的引入对整体模型性能的提升效果, 本实验以原始的YOLOv5s模型为对照组, 设计一系列对比实验, 实验结果以mAP@0.5为参考标准, 如图10和表2所示, 原始的YOLOv5s模型在训练轮次240轮后模型发生轻微的模型退化现象, 导致检测精度下降. CBAM注意力机制的引入, 虽然其在SE模块的基础上增加了空间注意力模块, 但在给YOLOv5s模型增加计算量的同时, 并没有得到很好的效果. 而ECA模块和SE模块对整体准确率的提升效果差不多, 但是ECA模块使用1×1 Conv1d代替SE模块中的全连接层, 将模型的总层数从342 layers较少到319 layers, 从7 092 342 parameters减少到7 063 578 parameters, 减少了模型的计算量.
而上述提到的CA模块相比于其他3种模型考虑了特征空间的位置信息, 提高了预测框定位的准确率. 因此对整体模型平均正确率的提升是最明显的, 将YOLOv5s模型的mAP@0.5提升了1.86%. 如图11, 对密集小目标的检测效果也较为理想. 因此将YOLOv5s-CA模型作为下述YOLOv5的危险区域工人入侵报警系统的基础模型.
4 结论
本文提出了一种基于改进YOLOv5s模型的检测方法用于工厂危险区域工人入侵的检测. 一方面, 本文通过将基于SGBM算法的双目测距算法嵌入YOLOv5s模型中, 增加空间距离这一触发条件, 提高了人员侵入报警的有效性与可靠性. 另一方面, 在YOLOv5s中引入了CA注意力机制, 通过训练实验验证了相比于其他模型CA 模块更能提高整体模型的精度, 提升了1.86%. 最后将程序部署在工控机上, 在发现危险区域人员入侵时能够及时的进行声光报警.
[1] |
于用庆, 邹树琪, 张兴军. 基于BIM技术与定位技术的地铁施工人员安全预警. 城市轨道交通研究, 2021, 24(6): 129-132, 136. |
[2] |
任磊, 苗作华, 李自强, 等. 基于YOLOv3算法的危险区域工人识别. 土木建筑工程信息技术, 2022, 14(2): 10-17. |
[3] |
杨荣坚, 王芳, 秦浩. 基于双目图像的行人检测与定位系统研究. 计算机应用研究, 2018, 35(5): 1591-1595, 1600. DOI:10.3969/j.issn.1001-3695.2018.05.068 |
[4] |
彭泽龙, 李铨. 基于双目测距和YOLOv5s的红外人体测温精度补偿系统. 信息与电脑(理论版), 2022, 34(7): 80-83. |
[5] |
Hirschmuller H. Accurate and efficient stereo processing by semi-global matching and mutual information. Proceedings of the 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR2005). San Diego: IEEE, 2005. 807–814.
|
[6] |
高聪聪. 基于SGM的立体匹配算法研究[硕士学位论文]. 西安: 西安电子科技大学, 2021.
|
[7] |
闫彬, 樊攀, 王美茸, 等. 基于改进YOLOv5m的采摘机器人苹果采摘方式实时识别. 农业机械学报, 2022, 53(9): 28-38, 59. DOI:10.6041/j.issn.1000-1298.2022.09.003 |
[8] |
徐诚极, 王晓峰, 杨亚东. Attention-YOLO: 引入注意力机制的YOLO检测算法. 计算机工程与应用, 2019, 55(6): 13-23. DOI:10.3778/j.issn.1002-8331.1812-0010 |
[9] |
Hou QB, Zhou DQ, Feng JS. Coordinate attention for efficient mobile network design. Proceedings of the 2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Nashville: IEEE 2021. 13713–13722.
|
[10] |
顾星, 詹伟达, 崔紫薇, 等. 基于注意力机制的红外目标检测方法. 激光与光电子学进展, 2022: 1–14. http://kns.cnki.net/kcms/detail/31.1690.TN.20220713.1942.591.html. (2022-07-18)[2022-10-18].
|
[11] |
张秀再, 邱野, 张晨. 改进YOLOv5s算法的地铁场景行人目标检测. 激光与光电子学进展, 2022: 1–20. http://kns.cnki.net/kcms/detail/31.1690.TN.20220713.1944.609.html. (2022-07-16)[2022-10-18].
|