编者按在电力行业中,异常危险行为报警对于防范安全事故至关重要。传统人工视频监控方法需耗费大量人力,且存在准确度低与实时性较差的问题。近年来,基于图像的人体行为识别算法研究成为热点,相关技术逐步在医疗、安防、人机交互等领域得到应用。这些为行为识别算法在电力行业中的应用,为开展电力人员异常行为监测提供了可能性。《中国电力》2023年第11期刊发了周震震等人撰写的《基于分组查询注意力的可扩展电力人员行为分类方法》一文。文章提出了一种基于姿态估计和Transformer的编码器解码器架构的行为识别算法,构建基于深度学习的人体姿态估计模型,根据姿态估计结果输入基于Transformer的行为分类模型并判断人员行为。电力人员行为识别是电力系统安全运维的重要环节,现有的人员行为识别算法主要采用支持向量机和多层感知机进行行为分类,存在识别精度低、未考虑人体骨架之间交互关系、迁移性、通用性差等问题。针对上述问题,提出一种基于自注意力与交叉注意力机制的行为分类解码器,充分考虑了人体骨架之间的关联。其分类精度相比传统分类方法提升10%~20%,较深度学习多层感知机(multilayer perceptron,MLP)分类方法提升2%以上。该方法运用编码器-解码器架构的二阶段方法进行行为识别,使得解码器可以适用于任意姿态估计,网络后端具有很强的可扩展性。此外,采用分组解码的方式克服了注意力机制带来的二次方复杂度,使得该解码器可以扩展到更多行为类别,具有更好的普适性。该行为识别算法能够在基于变电站工作场景下的人员图像数据集验证中达到优异的识别效果,综合识别率达91.1%,验证了所提电力人员行为分类方法的有效性和适用性。
本文所提出的基于姿态估计的行为分类方法,其通用性主要表现在2个方面:一是第1阶段算法的可扩展设计;二是行为识别类别的可扩展设计。一方面,由于整体算法结构可以认为是2阶段网络结构,而第1阶段可以选用任意姿态估计算法,将其输出按照特定形式输入本文提出的行为分类模型即可实现人员行为识别,无须对其进行复杂的改进,从而有效避免算法实现过程烦琐的问题。同理,第2阶段算法也可使用行人重识别等特征提取网络,使用本文分类方法也可完成行为分类任务。另一方面,在方法应用验证方面,本文主要以电力人员行为识别为例,实现了若干电力场景下的人员行为的准确识别,但实际上该行为分类方法可以通过在各类行为数据集上训练来适应更多类别的行为识别任务。因此,其行为识别方法本身在应用领域方面具有可扩展性。除电力人员安全管控外,城市安防监控、人机交互等多个领域也是本文所提算法的潜在应用场景。在图像领域中获取全局感受野可以帮助提取更有表征意义的特征,自注意力机制的核心是捕捉全局的信息来获得更大的感受野,但注意力机制的缺点也很明显,随着输入序列长度的增加呈现二次复杂度O(n2)为

式中:n为序列长度;d为每个头的维度;h为头的数量。为了解决行为分类解码器(BC-Decoder)的计算复杂度随着行为分类的增加呈现二次方增长,本文提出了分组解码算法以减少参数量和计算量。在全解码中,一个查询对应一个行为类别,而在分组解码中,一个查询通过仿射变换和池化操作对应若干个行为类别。通过分组解码操作,提出的行为解码器和行为类别之间呈现线性复杂度,在一些需要实际落地的应用场景中有较大的优势(如边缘终端)。同时,在一些行为类别较多且类别之间差异较小的场景中,本文所提的行为解码器相比传统行为分类方法有更大的优势,通过注意力机制重点关注不同身体关节点之间的相互关系以提高算法识别精度。
本文的整体网络采用Encoder(编码器) + Decoder(解码器) 架构。如图1所示,Encoder可以是任意姿态估计网络,Decoder部分即本文提出的BC-Decoder。Encoder部分编码出图片中所有人员的关键点特征向量,输入BC-Decoder后,其通过自注意力与交叉注意力机制将特征向量解码出人员的行为类别。

Fig.1 Overall structure of the algorithm
本文受到DETR基于查询的设计范式启发,允许设置可学习的查询,每个查询解码一个不同的行为类别。为了进一步降低解码器的复杂性,采用了分组解码的方法。这种设计选择有利于实现更高效和有效的解码过程。因为所使用的查询数量可以调整到较低的数量以减少计算时间和内存使用,使BC-Decoder成为实时应用的合适选择。此外,可学习的查询允许BC-Decoder不断适应输入数据的变化,并随着时间的推移提高其准确性。学习的查询,每个查询解码不同的行为类别。
姿态估计任务具有位置敏感性,为了获得更精准的位置信息,算法需要得到高分辨率特征,很多网络使用下采样得到语义信息后上采样回复位置信息的做法,但这样会丢失大量的有效信息。HRNet采用了多层分辨率分支并行计算的方法,并且在不同分支中跨分辨率连接进行特征交流,同时维持强语义信息和位置信息,使得预测热图在空间上更准确。其网络可分为基部(stem)、主体(backbone)、回归头(head)3个部分。基部将原图分辨率缩小到1/4原图大小,减少后续的计算量;回归头则将最后一个阶段得到的各个特征融合转化成需要的输出形式;而主体又分为阶段层和过渡层,用于提取特征。阶段层(stage)主要起到图像特征提取和多特征融合作用。特征提取模块使用残差连接结构,重复4次,以便更充分地提取特征。多特征融合则由最近邻上采样和卷积下采样实现。过渡层(transition)在原有分支基础上增加下采样分支。对已有的特征图进行卷积下采样操作,进一步得到具有更丰富语义信息的特征图。
多个阶段层级联能够更好地获得全局和局部的信息。为保持参数量和精度的平衡,本文将HRNet网络结构设置4个阶段层和3个过渡层,其网络主要部分结构如图2所示。

Fig.2 Structure of the HRNet
与其他深度学习算法类似,损失函数为均方误差损失。预测的是热力图,如果直接使用数据集中的单个真实标记点(ground truth,GT)进行计算,会由于负样本过多导致训练难以收敛,因此需要对GT作二维高斯分布扩展成GT热力图。由于不同关键点预测难度不同,在计算总损失的时候需要对不同关键点取对应的权重进行计算。
本文实现电力人员行为识别的整体思路为采用姿态估计算法结合相应的分类方法。现有研究采用的方法可分为基于传统方法的分类方法和基于深度学习的分类方法。前者存在明显的准确率低及参数依赖性高的缺点,而后者仅停留在采用MLP作为分类模块进行方法设计,难以达到理想效果。本文采用基于注意力机制和转换器(Transformer)的分类方法,参考DETR在目标检测任务中对查询模块(query)的使用方式,设计了基于query的行为分类解码器。该解码器主要依赖于多头注意力模块,而每个模块有3个输入:查询向量Q、分组键向量K、查询值向量V。注意力操作可定义为

式中:QKT为查询向量和键向量的点积;dk为向量的维度;fs表示Softmax函数。

式中:为可学习转换矩阵,fc表示多个特征的拼接,得到结果MHA(Q, K,V)即多头注意力输出。BC-Decoder的结构如图3所示,模块有2个输入,空间嵌入张量E和一组N个可学习的Query Q,每一个查询分别对应一个行为类别。BC-Decoder通过4个连续的阶段处理模块的输入,分别为自注意力模块(self-attention)、交叉注意力模块(cross-attention)、前馈层(feed-forward network,FFN)和序列池化层(token-pooling)。其中,FF为前馈全连接层。另外,标记池阶段是在序列嵌入的维度D上进行简单的池化,以产生N个输出。

Fig.3 Structure of the BC-Decoder
一个查询往往对应一个行为类别,但在一些极端行为分类场景下,类别数量较多。随着类别数量的增加,具有二次复杂度的解码器将会消耗大量计算资源,并可能会使模型性能受限。为了减少模型的二次复杂度,本文提出了分组解码方法,具体而言,使用交叉注意力模块和前馈全连接层,并固定分组查询数量M,在前馈全连接层之后,通过仿射变换层将分组查询转换为输出分类。2)沿着嵌入维度池化。定义分组因子g=N/M,那么仿射变换层产生的输出是logitsLi,即
式中:为第k个查询矩阵;第k个可学习的转换矩阵,仿射变换层结构如图4所示。

Fig.4 Affine layer and pool layer (g= 4)
本文方法的可扩展行为分类解码器可用如式(7)~(10)所示,其中,Gq为输入分组查询数,SA表示将Q1、Q2、Q3通过式(2)(3)得到多头注意力结构的输出;CA表示Gq、E、E经过多头注意力机制的输出。FF表示Gq1在网络中的前向传播得到Gq2,GMP表示对Gq2分组进行池化,得到输出结果L。

观察式(7)~(10)可知,可扩展行为分类解码器有以下特点。1)当g=1时,称为全解码,这意味着每个查询对应一个行为类别;对应的当g≠1时,称为分组解码,这意味着每个查询对应几个行为类别。本文选择将行为分类随机地分成几组。2)就计算复杂度而言,放射变换层计算量等于全连接层,池化层计算量是N×D次乘法,可见两者的计算量都与分类类别数N呈现线性关系。
3)本文所提解码器计算量主要来自自交叉注意力模块,因为交叉注意力模块会在2个不同的输入序列之间进行注意力计算。可以将编码器的输出空间池化到固定的大小,用来减少图片尺寸对计算复杂度的影响。
本文采用预训练微调的方式对整体行为识别算法进行训练。具体来说,姿态估计算法部分即Encoder部分本文采用COCO2017公开数据集作为训练数据集。MSCOCO数据集为姿态估计的主流数据集,其中包括丰富的具有单/多人、大中小目标的图像,相关研究都将其作为训练和测试数据集使用。
BC-Decoder部分,本文主要基于私有数据集进行训练。该数据集以变电站等电力场景为主,共有12510张样本图片,包含多种室内外场景、多种人员工作姿态(攀爬、跨越、打电话、倒地、托举),不同人数分布(单人、多人)等情况,以模拟实际现场的多种场景,私有数据集样本数量如表1所示。
Table 1 Number of private data set samples
4.2 实现细节
本文所提方法的试验环境配置基于以下平台条件:Intel Xeon Gold 6242R处理器(内存754 GB)、单张NVIDIA A100(显存80 GB),Ubuntu18.04操作系统和PyTorch深度学习框架。在预训练阶段,训练编码器解码器不加入训练,训练输入图片大小为384像素×288像素,batch size大小为24,采用Adam优化器,初始学习率设置为1×10–3,学习率的调整方式为MultiStep,下降点为170和200,下降率设置为0.1,一共训练了210个周期。在微调阶段,固定编码器仅训练解码器,学习率设置为1×10–5,学习率的调整方式为余弦退火,batch size大小为128,权重衰减为1×10–8,一共训练30个周期,其余超参数均与预训练阶段相同。
数据增强通过创建新的训练样本来扩大现有数据集的大小,以提高模型的准确性,可以有效地防止过拟合,并且可以让模型更好地泛化,从而使算法在实际应用中更加准确和可靠。本文使用了随机角度水平翻转、改变亮度、改变对比度、改变饱和度等方法对原始图像以0.5的概率进行数据增强,其中,图像的亮度、对比度、饱和度分别在一定的变化区间内随机以一定的倍数进行变化,具体增强方式如表2所示。
Table 2 Settings for different data enhancement methods

实验对比的分类模型涉及传统机器学习算法KNN和SVM,深度学习算法MLP和本文提出的可扩展行为分类解码器BC-Decoder。其中,所提BC-Decoder采用HRNet-W48作为姿态估计的骨干网络对常见电力人员的5类行为识别准确率混合矩阵Top1精度如图5所示。从分类精度来看,所提的BC-Decoder容易识别出倒地(falling)和跨越(crossing)2个类别,从图6的可视化效果图来看也验证了这点,2个骨架相对其他类别具有明显的特征;对于打电话(calling)和托举(carrying)这类容易混淆的行为上精度会稍微降低,但相对传统分类算法和基于深度学习算法,所提的BC-Decoder方法均达到了最佳的行为识别准确率。

Fig.5 Mixed matrix of behavior recognition accuracy
图6

Fig.6 Power personnel behavior recognition effect
为了证明所提方法在行为分类任务上的优越性,对不同的Encoder和Decoder进行了消融实验。从表3中可以看出传统分类方法KNN和SVM在行为识别速度上有较大优势,但分类精度上相比深度学习方法低10%~20%;在深度学习分类方法中,本文提出的BC-Decoder相比MLP在精度更加突出,同时得益于分组解码的设计方法,参数量和计算量和MLP并相差不大。
Table 3 Comparative experiment results of different algorithms

本文从电力人员行为安全管控的现实应用需求出发,提出了一种基于姿态估计和注意力机制电力人员行为分类方法及相应的行为识别算法,该方法具有良好的可扩展性。相比传统人员行为分类方法,如SVM、MLP等,本文所设计的基于Query解码器BC-Decoder能够结合姿态更精确地分析人员行为。而通过在解码端采用的分组解码方式,在保持相当速度的基础上,识别准确度也得到了有效提升。同时,本文还设计了人员行为识别算法整体结构与实现流程,得益于Encoder + Decoder网络架构,所提BC-Decoder可适用于任意姿态估计算法,具有很强的通用性。通过实验对比分析,证明了本文所提方法的有效性。