移动式起重机是建筑施工中使用的重要设备。 遵守正确的操作程序对于防止事故很重要。 然而,其中存在人为错误的因素。 这里我将举一个例子来说明计算机视觉(CV)如何帮助解决这个问题。
1、移动式起重机操作的安全问题
为简单起见,将移动式起重机分为 3 个部分:车身、支腿和吊臂:
移动式起重机的3个主要部分:臂架、车身(主车)、支腿(提供起重机稳定性的延伸4条支腿)
起重机可以处于 3 种可能的状态:移动、伸出支腿和张开吊臂:
左(移动状态)、中(伸长支腿)、右(张开臂架)
当起重机处于移动状态时,其臂架必须闭合,支腿必须缩回。 在起重机能够抬起吊臂并开始搬运重物之前,必须伸出支腿以增加起重机的稳定性。 最后,打开臂架状态是指臂架升起时的状态。 正确的顺序是停放起重机,均匀伸出支腿,然后再提升吊臂。 在起重机可以移动之前,执行相同的顺序。
问题在于起重机操作员没有遵循正确的顺序。 例如,他们在吊起臂架之前不使用支腿,或者在臂架仍打开或支腿仍伸出时驱动起重机。
在支腿伸出时驾驶起重机。 错误!
这可能非常危险! 一种后果可能是碰撞,但更危险的情况是起重机翻倒。
起重机翻倒是因为它没有伸出所有的支腿。
这个问题可以通过使用闭路电视摄像机来监控起重机的使用情况来解决。 随着深度学习的进步,我开发了一个人工智能管道,1. 检测起重机在框架内的位置,2. 跟踪起重机的运动,然后 3. 确定起重机的状态。
2、深度学习模型管线
下图是模型管线图。
模型管线
该管线从 YOLOv5 对象检测模型开始,模型检测 2 个类别:人和起重机(人员检测用于另一项任务)。 因为我想跟踪起重机的运动,所以我应用了 DeepSORT。 接下来,起重机的图像被裁剪出来并用作图像分类器的输入。 分类器输出 3 种可能的状态:移动、伸出支腿、打开吊杆。
3、数据采集
工作现场的视频片段被收集了四个月,之后经过处理以找到带有起重机的帧。 总共提取出34个视频片段,然后采样出各个帧。 我们总共标记了 2523 个帧用于训练数据集,2071 个帧用于验证。
数据收集和数据分割的时间表
4、物体检测和跟踪结果
我使用预先训练的权重并冻结模型的主干来微调模型。 我对所有模型大小进行了实验,发现 YOLOv5m 产生了最好的结果。
起重机的 mAP@0.5 为 0.953。 在 0.5 置信度下,起重机召回率为 0.95,在 0.5 置信度下,起重机精度为 0.96,F1 得分为 0.95。
YOLOV5训练日志
来自测试/验证集的预测帧样本
对于跟踪部分,使用了原始的 DeepSORT,并进行了较小的修改。 监控起重机的卡尔曼滤波器状态(速度 x、y、r 和 h)的运动情况。 起重机跟踪的准确度为 100%,可以在测试集的所有帧中正确跟踪和识别起重机。 这是因为场景中通常只有 1 个起重机,并且相对于帧速率而言,它的移动速度相当慢。
5、起重机状态分类器
起重机的图像已获取并分为 3 类(移动式、加长支腿式和开放式吊臂)。 数据集总数总结如下。
分配类别来训练分类器。 数量少且不平衡
存在类别不平衡的问题,其中大部分数据集由 open-boom 类别组成。 因为起重机在使用时会进入场景,大部分时间都处于开臂状态。 移动和伸出支腿状态的示例仅在起重机进入框架到达工作地点的短时间内可用。 班级不平衡会对监督学习产生负面影响。 此外,训练数据集数量较少,存在过拟合的风险。
所以我对起重机状态分类器进行了对比学习。 请查看我的另一篇关于使用三元组损失训练编码器将图像转换为向量表示,然后使用 SVM 对状态进行分类的文章。 该方法产生的模型比经典的多类图像分类器模型更准确。
6、起重机使用监控
为了监控起重机的使用情况,观察了两件事:起重机状态排序和起重机状态移动。 正确的起重机顺序总结如下。
起重机的正确使用顺序
对于顺序检查,起重机状态应始终处于移动伸出支腿打开臂架的状态。 分类器的预测存储在固定大小的 FIFO 缓冲区中。 缓冲器内存储的状态被共同用来确定起重机的实际状态。 这使得整体预测对于噪声或单个帧的错误预测更加稳健。
用于存储每个帧的预测起重机状态的 FIFO 缓冲区
一旦知道了起重机的状态,我就通过检查履带式起重机中边界框的 x、y、宽度和高度的卡尔曼速度矩阵来检查起重机是否静止。 如果起重机位于伸出的支腿或打开的吊臂中,则起重机应保持静止。
7、结束语
该系统的结果表明,它可以24小时监控起重机活动,无需人工干预。 这样可以防止可能导致设备损坏和生产时间损失的事故,从而节省金钱和时间。