孔华永,聂志勇,隋立林,张金禄
(1.国家能源集团信息公司 综合自动化部, 北京 100011;2.武汉大学 测绘遥感信息工程国家重点实验室, 武汉 430072)
大规模集中工业化生产线可以提高工业生产效率和质量,在实际的工业生产环境中,工作人员的安全保障和监管系统对构建持续化高质量的工业生产系统有着至关重要的作用。其中,对于工作人员的着装规范性检测对防范安全事故尤为重要——比如在矿场的工作人员,如果不按照要求进行着装,防护措施不到位将对工作人员生命安全和生产线造成不可挽回的损失。但是,目前关于工业生产场景下的安全监管系统大多数依赖人工完成,消耗了大量人力成本,并缺乏统一的规范化管理和评判标准。并且,工作人员着装的检测和监管具有出现频率稀疏和持续时间短的特点,依赖人工的监管系统往往存在较多漏报,且无法满足从海量视频大数据信息中快速检测筛选有效信息的需求。因此,人员着装规范性检测方法的研究具有十分重要的现实意义和应用价值。
人员着装检测首先要对人体进行检测,目前的人员检测方法往往依赖于现有的成熟的目标检测技术,然后在目标检测方案的基础上进行细粒度的特征提取、分析和识别,使模型达到判断人员是否规范着装的目的。最初,传统方法的监控系统中的目标检测技术往往通过人工构建的几何特征或纹理特征[1-3]完成对图像的分析,但这种方法由于缺少数据驱动的特性,往往只能在部分常规场景中保持较好的效果,但在异常环境(如黑暗的矿井,多人互遮挡的入口处等)中的检测效果会有漏检、误检等严重问题。之后,随着深度学习的发展,出现了很多基于神经网络(neural network)的数据驱动方法,可以在大规模数据集中取得更好的效果。YOLO系列[4-7]方法作为一阶段目标检测方法的代表,由于其在效率和检测质量上取得较好的平衡,因此在实际工业场景取得了广泛的应用和推广。对人体的检测往往倾向于使用更快速的YOLO系列方法高效地获取人体区域,从而可以对后续的各区域着装规范性判断进行更复杂、细致地处理,并保持实时性处理性能。此外,在人员着装检测任务中,主要面临的问题是人体的互遮挡、人体姿态变化和尺度变化,精确的目标定位(便于人体不同区域的定位),密集和遮挡的目标检测,加速检测等问题,面对这些问题,需要鲁棒性和针对性更强的设计方案。
在现阶段的研究中,对于人员的着装检测,现有的方法往往将其视为目标检测任务[8-11],即将画面中的人体各部位(如头部、腿部、躯干等)分别进行定位、裁剪,然后送入对应的神经网络模型中进行检测与识别。但这些方法会带来3个问题:
首先,区域的定位操作往往是基于先验知识和人体解剖结构对图片中的信息进行的,虽然方式简单,但无法有效处理下蹲、弯腰等复杂姿态情况,这会带来人体区域定位准确度较低的缺陷,进而影响分类的精度。
其次,对于不同人体部位服装的识别在特征提取过程中往往相互独立,只在最后的分类层进行融合,或直接从整个人体区域进行提取。这种做法虽然有利于提升计算效率,但有些部位具有像素低、特征区分较弱的特点,因此不同部位(如胸部、腿部、肘部等)特征提取的互不相关会导致最终不同区域的检测与分类难度提升。
最后,环境的复杂性和多变性(如光照、颜色等)对于人员着装检测的准确性有很大的影响,但这方面很少被关注。
针对上述人员着装检测领域存在的问题,对该任务进行深入调研,提出以下解决思路:
1)人体姿态估计算法可以从图像或视频当中估计人体各个关节的关键点,相比基于图像的算法,人体姿态估计算法具有鲁棒性高、对先验知识的依赖性较低的特点,基于这种特点,人体区域的定位可以基于人体姿态估计方法进行,而不完全依赖先验知识和人体解剖结构。
2)人体不同区域的特征提取应该是全局-局部交互进行的,而不只是从图像的某一个区域或整幅图像获得特征,注意力机制具有对图像全局建模的操作符(operator),并且具有出色的局部到全局的映射能力,因此本文考虑将注意力机制引入人员着装检测方法,优化人体不同区域的特征提取过程和建立不同区域的特征之间的交互关系。
3)由于人员着装检测方法落地的场景往往复杂度高、差异性大,但人员着装具有高统一性的特点,因此对于图像空间的预处理操作,将场景差异性和不同的背景语义信息进行统一是至关重要的,观察到RGB-HSV色彩空间的转换可以有效解耦图像空间中的色调(hue)、饱和度(saturation)和亮度(value),在HSV空间可以对背景信息进行高效地过滤。
近年来,随着视频监控系统的普及和成熟应用,海量的视频数据被捕获和分析。基于图像处理的目标检测方法得到快速发展,如在传统方法中,目标检测技术首先对图像进行人工特征提取,常见的特征提取手段包括Harr (harr-like features) 方法[1],SIFT(scale invariant feature transform)方法[12]等。然后将提取到的特征送入分类器中进行分类,常见的分类器有SVM(support vector machine)[13]和AdaBoost[14]等。但传统的目标检测方法存在鲁棒性较差、泛化性弱、时间复杂度高等缺陷,缺少数据驱动特性,导致其在大规模数据场景下的效果远不如理论实验效果。随着深度学习的广泛应用和卷积神经网络(CNN)[15]的快速发展,自从深度神经网络推广后,目标检测作为一项基础视觉任务受到启发,开始结合卷积神经网络(CNN)进行研究。根据检测结果的回归过程,目前主流的目标检测研究方法可以被分为两阶段和一阶段2种方式,其中前者将检测结果(检测框)的获取定义为一种从粗到细的精细化过程,而一阶段方法将检测任务结果定义为一步到位的流程,直接获取检测框。以R-CNN[16]为主的两阶段方法主张先提取候选框,然后再对候选框进行筛选和分类。YOLO是第一个基于深度学习方法的一阶段检测器。本文中使用了一个完全不同的检测方案,即将单个神经网络应用于整个图像的检测,将图像直接回归得到候选框。从验证结果上看,YOLO系列工作相比R-CNN系列工作的最大不同在于YOLO系列[4-6]更好地兼顾了效率和精度的平衡。本文中使用了最新的YOLO系列版本即YOLOv4作为检测任务的基准网络。
人体姿态估计是一项从图像或视频中得到预先定义的人体关键点(如肘部、腿部、头部等)的视觉任务。本文中仅考虑面向图像的2D人体姿态估计算法。当前的研究工作大多数集中于多人场景,根据高级语义特征或低级图像像素(即先检测人体还是先检测关键点),2D人体姿态估计方法可以被分为自上而下(top-down)方法和自下而上(bottom-up)方法。
自下而上(bottom-up)方法主张首先预测输入图像中每个人的身体部位,然后通过关键点匹配算法(如动态规划、匈牙利算法、贪婪算法等)得到每个人的关键点姿态,根据不同的方法,检测的最小单位可以是关节或肢体模板区域。而自上而下(top-down)方法主张首先检测人体,将人体检测进行裁剪、精细化等处理后,再对单个人体分别检测关键点。AlphaPose[17]使用了检测方法中常见的非极大值抑制(NMS)和沙漏网络(hourglass network)[18]提高多人姿态估计的准确性。总的来说,自上而下方法通过将现有的检测网络和单个人体姿态估计网络结合可以轻松实现自上而下的人体姿态估计方法,但是,这种方法的性能会受到人检测结果的影响,并且实际推理速度(使用GPU设备)通常不是实时的。
综上所述,自上而下和自下而上方法分别都取得了较好的表现并保持了各自的特点。但随着图像中人数的增加,自上而下方法的计算成本显著增加,而自下而上方法则保持稳定。 但伴随着人体互遮挡、低分辨率等问题,自下而上的方法将会有更大的精度损失。基于本任务中已有且必须具备的人体检测功能,在本文方法中,将两阶段的自上而下方法(即检测人体和单人姿态估计)进行解耦,利用检测出的人体进行单人姿态估计得到每个人员的人体关键点,同时降低模型计算量,提高模型推理速度。在已有行人检测结果的基础上,本文的姿态估计方法可以接近自下而上方法的效率。
注意力机制(attention mechanism)目前已经被广泛应用于计算机视觉领域的各项任务中(图像分类、目标检测、姿态估计等)[1-3,19-20]。图像任务中的注意力机制相关的研究工作大多数使用掩码矩阵作为图像中注意力的表征形式。自注意力机制(self-attention)属于注意力机制的一种,也是在图像任务中最广泛应用的注意力机制之一。在首先被ViT[1]应用于图像分类任务后,在取得亮眼表现的同时,也促进了自注意力机制在视觉任务中的改进。对于图像分类任务和目标检测任务而言,注意力机制已经取得了非常瞩目的成绩,但自注意力机制尚未被很好地应用到人员着装检测任务当中。因此,本文也是第一个尝试将自注意力融入到人员着装检测任务的基准方案中的,以使得网络自适应地关注人员着装分类的重点区域,从而提高着装分类的整体精度。
人员着装检测方法的输入为待检测的图像序列,帧率为25帧/s,对于输入的每幅图像,算法需要检测人员所在区域并准确定位到人员的不同着装部位(头盔、工装马甲、工靴和除头部以外的整体工装),并对每个部位是否正确着装进行判别,输出多分类概率结果,对于着装违规的人员,记录日志信息(时间、相机设备编号、人员坐标、违规着装图片等)。人员着装检测算法是一个系统的,包含多个模型的多任务框架(人体检测,2D人体姿态估计,局部图像分类)。如图1所示,本文的方法首先使用基于YOLOv4的人体检测模型得到待检测图像序列中的人体区域,然后输入到2D人体姿态估计算法中,得到每个人体区域的2D关键点,然后使用人体着装定位得到每个人体要进行识别的区域,最终使用一个简单的图像分类网络对着装区域进行多分类,得到每个区域的分类结果。整个流程将人体着装检测任务解耦为多个子任务,由于解耦后的每个子任务都属于较为通用的任务场景,因此大规模数据集预训练模型的迁移学习效果很好,大大减少了算法的数据需求,同时可以保证数据驱动带来的模型通用性和良好的泛化性。
黑色框为程序步骤,蓝色框为算法调用的网络模型
本文的方法基于YOLOv4作为baseline,并结合YOLOv5方案的优点,在此基础上根据实际情况进行具体模型的选择和模型的修改。借鉴了YOLOv5中的Focus操作,具体来说,在1张图片中间隔像素进行取值得到近邻下采样的结果,得到4张下采样的图片,4张图片将输入通道维度扩充了4倍,即由原始图片的RGB三通道模式变成了12个通道,最后将得到的新图片再经过卷积操作,最终得到了没有信息丢失情况下的二倍下采样特征图。此外,由于传统的SPP(spatial pyramid pooling)的多级卷积过程依然是检测任务推理过程中的瓶颈,通过统一卷积核尺寸,应用一次卷积和分级池化的策略将SPP升级为SPPF(spatial pyramid pooling-fast),金字塔池化模块可以进一步提高推理速度,降低了卷积层的计算量,网络在实际训练中的运算速度也得到提升。在训练时,首先加载预训练的YOLOv4权重,并修改最后一层的检测结果,使其只检测本文需要的结果,即行人类别,最后,在自己收集的小规模数据集上进行迁移学习,优化行人检测的效果。此外,本文还添加了部分后处理操作,对图像中的非规则人体、缺失人体或极小目标进行筛选,此过程基于检测框比例和人体结构的先验知识,无需占用计算量即可快速完成筛选。
在基于人体姿态估计的区域定位方法部分,本文使用了基于AlphaPose的2D人体姿态估计网络获取每个人员的身体关键点,并基于获得的人体关键点检测结果和区域定位策略,准确定位不同姿态下的人体局部区域,从原图裁剪各区域并输入后续多级特征自注意力机制和多分类模型,实现着装特征提取和违规工装的识别。
图2 2D人体姿态估计方法
在得到人体姿态估计的结果后,对每个人体进行切分定位。如图3所示,具体的各部位定位策略为:头和脖子均被检测到时定位到头部区域,高度为头部到脖子的距离适当扩增,宽度则根据左右肩部关节点与胸部关节点的中点进行定位;马甲(上衣)定位由左右肩部和左右臀部进行确定;工靴定位则由左右膝盖和左右脚部构成的矩形区域完成。
图3 人体工装定位示意图
使用RGB到HSV空间的变换对人体的整体区域进行筛选,为工装分类提供辅助参考,该操作无需神经网络参与,且操作简单,计算量可以忽略不计。颜色空间又称为彩色模型,以某些通常可以接受的方式对该空间中的所有色彩加以表示和说明。在颜色空间中,通常由3个独立的属性来描述颜色,常见的有 RGB、HSV、CMY、YUV 等[4]。在 RGB 颜色空间中,各颜色分量的数值越小表示亮度越低,数值越大表示亮度最高,各颜色分量的强度范围为 0~255。任意颜色的 RGB 颜色空间构成的数学表达式为:
F=r[R]+g[G]+b[B]
(1)
HSV颜色空间是一种亮分离颜色空间,分别为色相(hue)、饱和度(saturation)和明度(value)。色相是色彩的基本属性,在六角锥体模型中通过从0°~360°的不同角度来度量颜色。饱和度按照颜色与光谱色的接近程度来度量,也就是色彩的纯度。某种光谱色与白色混合得到一种颜色,其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。明度用于衡量颜色明亮的程度,当衡量光源的颜色时,发光物体的明亮程度决定了明度值的大小。
通过RGB-HSV转换后,可以轻易地利用色彩、亮度和饱和度对人员整体着装区域进行区分,以获取第一步判别(即整体工装是否穿戴正确)的结果(如图4所示),该操作无需任何神经网络参与,基于现有工装的先验特征即可设定合适的色相、饱和度、明度的阈值进行筛选,所需计算量可以忽略不计。通过RGB-HSV预处理筛选的结果可以轻易识别整体工装是否正确,当判别结果为不正确时,本文方法直接进行报警记录。这样既可以实现不依赖神经网络模型的快速检测,提高检测效率,同时又可以一定程度上避免模型过拟合带来的低泛化能力。
图4 RGB-HSV变换预处理效果
在各区域工装判别分类阶段,在图像分类模型之前引入自注意力机制,通过训练学习少量额外参数,使分类模型将注意力集中于输入工装部位中的重要区域,从而提升违规着装识别的准确率。如图5所示,对于自注意力模块,基于ViT[21]的图像任务处理模式,将输入图像的不同区域视为不同的切块,使用padding填充和双线性插值的方式将图像上采样到相同大小。经过以上预处理步骤后,再将得到的4个切块进一步切分(每个切块切分为4个小patch)得到16个patch,通过一个由全连接层构成的线性嵌入层(linear embedding layer)映射到高维特征空间,输入到多头自注意力机制计算相互之间的注意力掩码矩阵,赋给原始patch映射的高维特征。将添加过注意力的图像维特征恢复到原始大小,输入到一个简单的 Resnet-50[22]网络中,添加全连接分类层(共8类),得到最终的分类结果。
图5 工装分类模型框架与网络结构
所有实验均在单张NVIDIA RTX 2080Ti上进行,代码基于Pytorch构建,系统环境为Ubuntu 18.04。公平起见,本文的实验在公开数据集MSCOCO上测试人体检测的效果,并在本文自定义的工装数据集中验证最终的工装检测效果。
使用MSCOCO2017 val set目标检测数据集验证本文的人体检测模型的精度。分别使用准确率(AP,AP50,AP75)和推理速度(FPS)对模型进行验证,并将最好的结果进行标粗。如表1所示,实验结果表明,相比通用的检测方案,本文方法在人体检测任务中表现优异,在AP50和FPS推理速度上均达到了最优结果,因此可以证明本文基于YOLOv4改进的人体检测方案可以实现快速推理的同时,保持几乎和通用检测方案相同的精度表现。
表1 COCO2017人体检测数据集实验结果
由于煤矿场地作业场景的特殊性,以及待检测的安全帽和工装马甲,即工靴类别特征少见的特性,目前尚无统一的公开数据集支持任务验证。为了推进该任务在领域内发展以及合理验证本文方法的有效性,构建了煤矿工作场景(安检通道、矿井等)下的人员着装数据,针对煤矿作业构建专用数据集。具体来说,对3 000张无序图片分别进行安全帽、工装(蓝色和橙色)、工装马甲和工靴进行人工标注,图片分辨率为1 920 × 1 080,且其中2 030张图像中均包含佩戴安全帽及防毒面具的工作人员。鉴于违规着装的服装多样性,因此负样本的搜集不能仅限于指定的工作场景中,从DeepFashion[23]筛选了1 000张站立全身着装图,分别进行人工标注和定位,添加到违规着装的负样本类别中。数据集样本类别及数量见表2。
表2 自定义煤矿场景数据集样本类别与数量
在自定义煤矿场景数据集中使用基于注意力机制的区域特征表示和多分类网络进行着装分类实验,得到结果如表3所示,实验证明本文的方案在该工作场景中可以达到优异的效果,在开放世界中的推理结果的可视化实验见图6。本文的方法在单张RTX 2080Ti上未经任何推理加速方案(如Tensor RT等)即可达到29帧/s的检测速度,完全可以满足实时检测任务的需求。
表3 人员着装检测结果
图6 样本可视化检测场景
为了验证各模块对网络模型整体结构的贡献,在MSCOCO数据集上设计了系统的消融实验,分别验证提出方法中2D姿态估计模型对着装检测的影响和改进网络结构对参数量及实时性的影响。首先,使用多种不同的2D姿态估计模型(OpenPose,AlphaPose以及本文的姿态估计模型)分别进行着装检测任务的端到端训练,并在MSCOCO Keypoint Challenge数据集和自定义着装检测数据集上分别验证姿态估计精度和着装检测精度,结果如表4所示,本文的方法在精度上大幅优于之前的OpenPose和AlphaPose,且改进后的姿态估计模型相比AlphaPose模型推理速度也得到大幅提升,完全可以满足实时性能的要求。
表4 COCO人体关键点数据集实验结果及着装检测准确度
此外,为了验证模型的泛化性,在MSCOCO数据集上训练人体检测数据集后,直接在自定义数据集中进行迁移学习,检测数据集中的工装及类别,同时对比本文所提出的方法(在MSCOCO训练人体定位和姿态估计任务后,再迁移到自定义数据集中),结果如表5所示,直接使用检测模型完成端到端的着装检测任务时,虽然推理速度略快于本文方法,但精确率和召回率方面均大幅落后于本文的方法。鉴于FPS指标均可以达到实时性能,且由于去除了着装部位的检测回归模块,同时还可以一定程度上降低参数量,具有更好的泛化能力和迁移学习能力,因此本文方法是更适用于着装检测任务的解决方案。综上所述,实验可以证明将着装检测任务解耦为人体定位与着装分类任务具备更好的通用性。
表5 自定义数据集上本文方法与检测任务模型精度
不同于传统的检测方案,本文方法将着装检测任务解耦为人体区域定位和图像分类任务,有效提升了模型性能和效率。但同时本文方法存在小目标着装检测能力较弱的问题,这主要是由于小目标下的人体姿态难以准确估计,从而造成区域分割不准,且对于小目标人体,即使较小的姿态误差也会造成分割区域的不准确,从而导致着装分类准确率下降。并且由于现实场景中小目标常出现在画面边缘处,因此常常伴随着边缘畸变问题,这也增加了区域定位和分类的难度。因此之后的工作会集中在矫正畸变和考虑超分辨率重建等数据增强方案提升小目标情况下的着装检测效果。
1) 提出一种新颖的人员着装检测算法,该方法基于改进的人体检测算法和2D人体姿态估计模型对人员进行精准检测和着装区域的精准定位,结合注意力机制和一个简单的多分类网络完成最终的人员着装检测任务。
2) 实验证明,得益于精确的人体区域定位和RGB-HSV色彩空间变换预处理,算法的精度和效率可以得到保证,广泛适用于多种工作场景,具有较好的鲁棒性。
3) 本文算法涉及的模型包括3个独立模块,并且在工靴检测实验中精度较低,因此,如何设计端到端优化的人员着装检测模型和提升小目标(工靴)检测精度将是下一步的研究方向。