我们如何认识个人防护装备

可能您一直想知道一生如何训练神经网络来识别头盔和橙色背心中的人!没有?但是我们还是会告诉你的。

我们的名字叫Tatyana Voronova和Elvira Dyaminova。我们在Center 2M公司从事数据分析,我们与最实际的工厂和企业合作。由于违反安全规定,他们遭受了数百万美元的损失,员工受伤,因此能够有系统地,尽早地检测到此类违规行为将是很好的。最好的-自动。因此,我们在识别视频上的个人防护设备(PPE)和识别危险区域中的人员或设备方面遇到了问题。

图片

在大多数情况下,会向我们发出确定头盔(更确切地说是不存在头盔)和工作服的命令。我们已经获得了执行此类任务的经验,现在我们可以描述遇到的问题以及如何解决这些问题。

由于根据合作条款,我们无权发布来自客户对象的素材,因此我们将通过互联网上的图片来说明文章,戴头盔的人常常在上面微笑并看起来很棒。不幸的是,在公共领域中,我们并没有找到我们所面临任务的所有功能,而是可以找到很好的例子。特别是在生活中,戴头盔的人微笑的可能性较小,并且互联网上秃头工人(我们稍后再讨论)的问题尚未真正得到解决!

来自互联网的图片(尺寸为1920x1280):

图片

PPE的识别可以简化为计算机视觉的两个经典问题之一:图像分类和物体检测。实际上,事实证明,最好不要使用这些方法之一,而应选择最适合每种特定情况的方法,并灵活地组合它们。例如,我们可以先确定人物在图像上的位置,然后将按轮廓切割的图像分类为“工作服”和“无”类,并在第二遍检测头盔的存在。

在预先裁剪的人物上,头盔和工作服的存在分类如下所示(原始图片的视图):

工作服和头盔的分类模型的工作结果

图片

在先前选择的相同人物上,这次使用的方法是检测头盔。

工作服分类模型和头盔检测模型的结果:

图片

第一阶段:人类检测


大框架上小物体(头盔/眼镜/手套)的清晰度一般。像人一样的计算机,要先了解人们的位置,然后再弄清楚他们的穿着,就容易得多。因此,这一切都始于确定框架中的人物。

实验结果表明,以Inception v2为特征提取的Faster R-CNN神经网络非常适合检测人。 TensorFlow已经具有用于训练对象的经过预先训练的神经网络

对我们来说,更快的R-CNN初始v2(在COCO数据集上进行训练)是解决此类问题时首先要尝试的基本方法。

最初,我们在框架上检测到人员(然后在找到的人员上找到PPE):

图片

请注意,我们沿y轴增加了“带有人”的边界框

图片

在这张照片中,工人是在光线充足的情况下并在对比鲜明的背景下拍摄的(在互联网上找到图像,这种情况一直发生)。因此,与人的边界框被很好地构建。但是,在我们的实践中,通常会出现以下情况(特别是在可见性不足的情况下):检测模型切断了人的头盔,此后在裁剪后的图像上寻找头盔就毫无用处。在这方面,沿着y轴,在继续进行第二阶段之前,我们将预测边界框增加了15%。

在检测人员时,我们会遇到一些小问题。首先,当两个人走路或站在一起时,通常会开始将他们识别为一个人。其次,碰巧有一个静态物体进入摄像机的视野,在该视野中,模型可以识别一个人,例如消防栓。这些问题可以通过各种方式解决。例如,我们是如何做到的:调和并接受它们,因为总的来说,该模型在生产率和质量方面适合我们。

一个更根本的问题是,存在“危险区域”的工业厂房通常很大,因此,框架中的人员很小。我们基于Faster R-CNN Inception v2的基本方法在这种情况下显示出较差的结果,最后我们尝试了更快的R-CNN Nas结果令人印象深刻,即使在远处人们也被公认,但是速度远低于基本模型。具有足够的资源和对高精度的需求,您可以使用Faster R-CNN Nas

第二阶段:确定恶意违规者


根据任务,通常使用以下内容:

  • 图像分类模型-Inception v3
  • 对象检测模型-更快的R-CNN起始v2

工作服和头盔的分类


我们测试了不同的神经网络体系结构以对图像进行分类,并最终决定使用Inception v3,从而决定利用其设计用于可变图像大小的事实。我们已经有很多与人剪裁的图片,并且不难计算出高度和宽度的中位数。因此,我们得出的结论是,为了训练分类器,开始将图像放大到150x400。

为了训练网络识别PPE,首先,必须从标记的示例中收集数据集。在此过程中,存在一些细微之处,这些细微之处的实现需要经验。例如,最好从数据集中删除在臀部上方被割伤的人。这将使数据集更接近实际情况,因为大多数时候,人们会从监视摄像机的视频中看到人们处于全高状态。当然也会发生重叠的情况,但目标样本的完整轮廓更具特征。

我们的工作服数据集中的示例:

图片

我们还没有发明任何特定的指标;我们使用召回率和精确度。

工作服是否存在的模型:

验证样本的结果

图片

PPE检测


分类模型的工作速度比用于检测物体的模型快,但是由于安全眼镜和手套的图像很小,因此很难为此类PPE创建良好的分类器。因此,我们在具有六个类别的数据集上训练了Faster R-CNN神经网络:

  • 眼镜/非眼镜
  • 手套/非手套
  • 头盔/ not_helmet

图片

数据收集和标记


主要问题与头盔数据集有关。这是一种令人着迷的方式:我们遇到了秃顶的人,手里拿着头盔的人,甚至穿过了秃顶的人手里拿着头盔的人。

由于在旅途的一开始我们就没有太多来自实际情况的帧,因此我们尽可能地收集了数据集:拍摄自己的照片,从Internet或建筑工地拍摄图像。不久之后,我们开始收到来自各个企业的大量视频,因此我们开始仅使用真实条件的框架来丰富数据集。在某些时候,标记图像的数量超过了5k,添加新示例的质量也不再提高,因此,我们修改了标记方法。

我们将使用来自互联网的图像示例来描述改进头盔数据集的阶段,因此角度和质量与我们的图像不完全匹配。

除了上面在臀部上方裁剪的图像外,我们还删除了头盔被裁剪一半以上的图像,以避免与帽子混淆。

图片

我们还面临这样一个事实,即如果一个人手中戴着头盔,那么该模特通常不会看到任何违规行为:是否有头盔?有。因此,我们从训练数据集中删除了一个人用手握住头盔的所有框架,即使此时头盔在他的头上。

通常,我们尝试删除背景明亮或在黑暗房间中的图像,然后将所拍摄照片的数量减至最少,主要是制作过程中的镜头。结果,我们将数据集减少了一半。

此外,我们用秃头的人丰富了数据集,否则,即使不是那样,他们也将始终戴在头盔中,而使用正方形的金发女郎也将始终戴在头盔中,对于特定角度,检测器还会确定头盔。

删除不合适的图像后,我们直接进行标记(用于检测对象)。事实并非如此简单。事实证明,最终检测器的质量很大程度上取决于图像中被标记为“头盔”或“手套”的区域的确切位置。最初,我们分配头盔和护目镜时不要抓住脸,而要手套时要握紧手。但是,根据经验,我们通过观察第一类和第二类错误来逐步改进我们的方法,人们手中拿着头盔,长久以来发现的东西变成了“手套”。现在,当标记头盔和眼镜时,我们尝试将脸抓住鼻子的末端,而当标记手套时,我们将自己限于刷子。

图片

通过对数据集进行操作,我们得到了以下结果。

以头盔为例检测PPE是否存在的模型:
在数据集上开始“全局工作”之前,在验证样本上得出结果

图片


验证样本的最终结果

图片

头盔识别的完整性略有下降,但与此同时,用于检测违规情况的指标得到了改善,这就是我们想要实现的目标。

用于对头盔存在/不存在进行分类的模型:
在数据集上开始“全局工作”之前,在验证样本上得出的结果

图片

验证样本的最终结果

图片

应该注意的是,我们没有将护目镜和护目镜划分为视觉眼镜,它们在相同的标签“眼镜”下使用,浅色手套可以看作是裸露的刷子。我们试图在数据集中最大化头盔和工作服的色域,但是为了提高可靠性,我们为此添加了最简单,最可靠的技术:如果需要,可以检测手套,告诉客户鲜艳的颜色有助于提高准确性。

目前,我们拥有用于向客户进行初次展示的通用模型。但是,应该理解,不可能为每个人创建一个通用模型,有必要适应每个客户,识别并考虑新的细微差别,丰富数据集或重新创建以满足特定要求。

图片

奖金


通常,客户希望使用尽可能少的资源来处理尽可能多的摄像机。当然,Butch是一件好事,但是不禁止使用其他技巧来优化过程。

例如,我和来自莫斯科IBM客户中心的同事有一个假设,就是将几个人聚在一起进一步检测头盔会增加每台服务器的摄像头数量,而准确性却会受到明显的影响。

作为基础,我们决定将1000x600的尺寸用于可“应用”人员的画布。最初考虑了两个布局选项:

  • 固定宽度和高度(200x600),采用这种方法,框架上有5个人。
  • 固定的宽度和高度(125x600),可容纳8人。

做出此决定是由于以下事实:使用固定数据,我们可以确切知道照片中的人数,从而可以预测负载。但是,在开发过程中,我们考虑了以下选项:
  • 固定高度和比例宽度(*** x600),人数不同。

假定随着尺寸的增加和比例的保持,与其他布局选项相比,结果会更好。人数从3到5(+/-)不等。

结果,我们获得了具有固定宽度和高度(200x600)的选项是所考虑的最佳选项。当然,此方法不适用于检测眼镜和手套,因为物体很小,但是对于检测头盔/缺少头盔,此方法显示出良好的结果。

例如,在验证样本中:

图片

图片

: (tvoronova), (elviraa)

All Articles