在建筑工地上,工人的安全至关重要。根据职业安全健康管理局(OSHA)的数据,工地上最常见的四种撞击危害是被飞行、坠落、摆动或滚动物体撞击。为了预防这些危害,政府和安全组织制定了严格的建议。随着计算机视觉技术的发展,通过使用摄像头提醒人们靠近移动车辆,可以进一步降低事故率。
本文将讨论一个由Roboflow社区成员Troy发起的项目,该项目跟踪建筑工地上工人与移动机械的距离。模型收集的信息可以用来为处于危险区域的工人建立预警系统。
所有计算机视觉项目都始于问题陈述。该项目假设计算机视觉可以用来识别在工地上与建筑设备过于接近的工人。这个应用可以作为一个早期预警系统,提醒驾驶员他们接近工地上的人,从而帮助避免事故。
为了解决这个问题,构建了一个模型来识别工地上的机械和人员。借助摄像头和目标检测模型,计算机可以像安全官员一样高效地监控建筑工地的安全。
这可以通过使用目标检测算法来实现,该算法可以检测到每个人、设备的底部(一个人可以从地面触摸到的部分,例如轮子)以及整个设备(包括起重机的顶部)。对于这个用例来说,计算设备的底部非常重要,因为视频是以2D录制的。
如果使用整个设备来确定与车辆的接近程度,那么在建筑工地后面的工人可能会因为摄像头的位置而在摄像机的前景中看起来接近起重机的顶部。
使用了一个脚本,该脚本可以查看机器的坐标(特别是标识机器位置的“边界框”),以查看它们是否与视频的前一帧发生了变化。如果边界框的坐标在视频的帧之间发生了变化,那么脚本可以标记该设备为活动状态。在同一个脚本中,可以使用围绕人的边界框的坐标来计算他们与设备底部之间的距离。
有了明确的问题陈述和解决方案的想法,下一步是为计算机视觉模型准备数据。为了收集数据,从YouTube上传了一段建筑工地的视频到Roboflow。然后使用Roboflow的平台对视频进行注释,绘制围绕视频中所有感兴趣的对象的框:人、设备底部和整个设备。
以下是项目的一个注释图像示例:
这张注释图像展示了所有设备,包括一台起重机、五台挖掘机和十个人。
在注释图像之后,模型准备好进行训练。在训练阶段,应用了自动定向增强以防止图像的方向影响训练过程。还应用了一系列增强技术,以提高数据集的样本量,并帮助模型在不同的光照条件、摄像头角度和数据中存在的噪声下表现更好(例如,当下雨时可能会发生这种情况)。
以下是添加的增强技术:
// 示例代码:增强技术的应用
augmentations = [
// 这里可以添加各种增强技术
];
脚本注释视频流并识别工人是否过于接近移动设备,可以在GitHub上找到。让从编写代码开始,以捕获不同建筑视频的帧。然后,这些帧可以被Roboflow API注释,并修改以包括指示工人是否过于接近设备的标签。
代码首先将建筑视频分成一系列不同的帧。在生产中,这个阶段是不必要的,因为模型可以连接到实时视频摄像头。然后,每个帧被发送到Roboflow API。API返回一个JSON对象,显示图像中工地上的任何人和设备的特征列表。
这个准备工作随后被用来构建一个系统,以识别每个工人与不同设备的距离。这个系统跟踪所有工人和机械的坐标列表。如果一个人靠近建筑工地,记录将记录工人可能处于危险之中。
在这个阶段,模型会在工人靠近设备时发出警报。这将产生很多误报,因为开始在起重机上工作的工人会被标记为过于接近设备。这就是下一阶段工作的内容:只有在工人过于接近正在移动的设备时才标记他们。
为了确定设备是否在移动,脚本跟踪过去四个帧中的预测。如果设备在帧之间的位置变化超过一定数量的像素,脚本会向设备添加一个标签以指示“活动”。
// 示例代码:确定设备是否在移动
function isEquipmentMoving(prevCoordinates, currentCoordinates) {
// 比较前后帧的坐标,确定设备是否移动
}
这个用例必须考虑“如果边界框的坐标稍微移动了怎么办?”这是一个关键的考虑因素,因为训练好的模型可能会返回稍微不同的坐标,指示人或设备的位置。Troy解释了他用来确定物体是否移动的方法:
// 示例代码:确定物体是否移动
function determineIfObjectIsMoving(pastCoordinates, currentCoordinates) {
// 保存前一帧的坐标数据,并用当前数据一起使用
}
然后,脚本在每个图像的每个对象周围绘制边界框。这是一个关键步骤,以便可以可视化模型在视频录制上的表现。
此外,在图像馈送的右上角添加了一个表格,显示帧中有多少工人,有多少机器处于活动状态,工人多少次过于接近设备等信息。这个跟踪器总结了迄今为止在场景中看到的内容,将会是。
靠近设备的工人被标记为“警告”标签,如下所示:
在上图中,一名工人靠近正在移动的机械。机械的运动由“活动”标签表示。工人被赋予橙色的“警告”标签,表示他们离车辆太近。另一名工人靠近起重机的顶部,并被标记为“警告”。背景中的其他车辆没有被标记为活动,因为它们在最近的帧中没有移动。
每个帧被重新组合成视频并保存为文件,以便以后分析。如前所述,如果模型部署在建筑工地上,这一步将不必要。模型可以实时运行,以分析现场并立即标记安全问题。
监控工人与移动设备的距离是向警报系统迈出的一大步,该系统在有人过于接近他们的车辆时通知驾驶员。在生产中,这样的模型可以用来向建筑车辆中的监控器发送通知。
例如,起重机屏幕上可以出现一个红色危险图标,以指示有人靠近基础。这样,驾驶员就有一个额外的系统来监控他们设备附近的工人,以防他们没有注意到有人。
事件可以记录在一个记录簿中,该记录簿会不断更新有关事件的定性信息,以便建筑公司确切知道当工人靠近移动设备时发生了什么。