非线性化改进的KP-Detector 模型在人体姿态识别中的应用

2022-03-25 04:44鹏,逄博,徐欣,韦
软件导刊 2022年3期
关键词:关节点置信度肢体

张 鹏,逄 博,徐 欣,韦 博

(杭州电子科技大学通信工程学院,浙江杭州 310018)

0 引言

对人体姿态进行关节点检测具有重要的现实意义,如对病人的病态进行监护和调理、在自动驾驶技术上对行人的行为进行识别以保证驾驶安全等。早在2008 年,叶蓬等[1]就提出了传统的基于代数计算的方法,对视频帧之间简单运动模式进行指数形式的线性化操作,经过简化欧式变换的矩阵对线性操作后的数据进行提取和重组,求得表征运动参数,实现对目标姿态的计算;Toshev 等[2]提出的“DeepPose”,将人体姿势估计研究从经典方法[3]转变到深度网络,利用网络直接回归关节的x,y 坐标。这种方法比较直接,但最大的缺点是检测速度慢,检测效果依赖于标签数据的完整性;与之不同的是,Tompson 等[4]通过并行运行多个分辨率库中的图像,同时捕获各种比例特征来生成热图,将ConvNet 和图形模型联合使用,学习关节之间的典型空间关系;Pishchulin 等[5]以类似方法解决这一问题,其中包括如何处理一元分数生成和相邻关节成对比较问题。

对关节点估计进行连续预测的方法有:Carreira 等[6]研究输入一组预测,并每次通过网络完善这些预测。但该方法需要多阶段训练,并且权重在每次迭代中被共享;Ludi等[7]引入一个模块化仿真框架,针对各种以人为中心的场景算法进行训练和验证,描述了如何利用模拟数据训练人体姿态估计算法来识别城市中不寻常的人类活动,但其检测速度略有不足;Verma 等[8]提出一种新的连续帧跟踪算法,通过计算单个身体部位在帧间的集体遍历,反馈给TNN 进行学习,该方法可有效提高识别速度;Angelini 等[9]给出一种新的基于二维姿态的姿态层次HAR 方法,从人体姿势中提取低层次和高层次特征,并将其提供给长—短期记忆神经网络和一维卷积神经网络进行分类;张剑书等[10]采用YOLO 算法结合AlphaPose 模型从视频或图像中提取出人类目标,将目标检测任务作为回归问题解决。采用YOLO 算法检测速度较快,但总体精度偏低;蔡兴泉等[11]提出一种少量关键序列帧的识别技术,对原有运动序列预选构造出初选关键帧序列,利用帧消减获取关键帧序列,然后分别对不同人体姿势建立隐马尔科夫模型,得到的结果精度很高但检测速度不佳;Farrajota 等[12]采用一系列残差自动编码器产生多个预测,然后结合起来提供一个身体关节可能性地图,关注各关节点联系,可以较好地保证精度;Nguyen 等[13]提出一种基于混合深度学习的手势识别方法,该方法利用RGB 帧、三维骨骼关节信息和身体部位分割来解决这些问题。

鉴于上述模型存在检测精度不高、检测周期过长或检测模型规模过大等问题,本文提出改进模型,将关节点和肢体分开检测和识别,引用OpenPose[14]模型中的PAF(Part Affinity Fields)方法,并对该方法进行非线性化改进以提高检测精度和检测速度。block 之间使用Dense 连接机制减少模型的复杂度,优化使用6 层模型结构,进一步提高模型精度。本模型相对于其他模型有参数较少、精度较高、检测周期较短等优势。

1 相关技术

1.1 Dense 连接机制

传统模型中,除了DensePose 模型使用全部的Dense 连接机制以外,其他都没有使用Dense 连接机制,而只是简单的层之间叠加。这样通过加深网络或加宽网络的方法得到的模型非常容易过拟合,不利于模型表征。本文使用Dense 连接机制而不使用卷积层或者池化层,这是参考Gao 等[15]提出的DenseNet(Densely Connected Convolutional Networks)作出的改进。

Dense 连接层是一种线性运算,如图1 所示。其中每个输入都通过权重连接到每个输出,因此,有n_inputs *n_outputs 个权重(n_inputs 代表输入维度,n_outputs 代表输出维度),其后通常跟随非线性激活函数,这种连接方式可以实现权重和参数共享,前面阶段的数据信息可以很方便地被后面阶段共享利用。

Fig.1 DenseNet structure图1 DenseNet 结构

本文的Dense 连接机制对单模型结构进行改进设计,实现了参数共享,简化了参数的计算过程。连接已经不是残差块block 内部的网络层对象连接,而是每一个分支网络结构branch 之间的稠密和稀疏连接,如关键点定位模块L(t)和肢体连接模块A(t)都是block,本文中block 内部的连接仍然保持普通的依序连接。之所以不在block 内部构成连接,是因为在块与块之间的信息共享度较块内部信息共享度高,在使用dense 连接机制后会伴随计算成本不断增大。因为这种机制需要维持参数共享,意味着在多层之间的参数需要来回传递,这会加大计算机运行消耗。而在块内部的信息相对于其他块是独立的,不需要再将块内部的信息共享到其他块中,所以在块内部的dense 连接机制可以取消。但是block 块之间的信息大多是共享的,在关键点定位模块中的关键点置信度信息需要与后面的肢体匹配模块共享,同时在更新一轮肢体匹配模块之后的信息也需要反馈回关键点定位模块,然后对参数进行微调,所以需要使用dense 连接机制共享参数。

1.2 基于PLF的关节点连接技术

传统的关节点连接技术是根据检测到的关节点置信度大小最相近的两个关节点进行连接匹配,这样的连接方式不具有代表性。假如某一个关节点检测结果出现了较大问题,那么得到的肢体就会发生较大偏移。为了解决这类问题,本文引用OpenPose 模型中的PLF(Point Line Fields)方法,并对该方法作非线性化改进。

主要改进点:在对肢体上的范围点进行置信度计算过程中使用指数—对数非线性化表示,以探索更高维度的空间可能存在的关键点。找到该关键点后进行指数—对数非线性化转化,增大其权重。之所以这么做,是因为在一条肢体上每一点的权重不应该只是线性的均匀变化,所以本文采用非线性表示,使用log 函数对一条肢体上每一个点的权重作非线性映射,以放大隐藏的关键点信息。同样,对关节点的计算方法也考虑了指数热度的影响,因为有的节点置信度非常小,可能是错误信息,需要使用指数调热方法避免或减少这种情况对预测结果产生太大影响,即将这些值控制在0~1 之间。

PLFs 计算肢体置信度如图2 所示。

Fig.2 Limb confidence calculated by PLFs algorithm图2 PLFs 算法计算肢体置信度

其中,j1和j2分别表示第k 个人的肢体c 上的两类关节点,每个PLF 是每个肢体的2D 矢量场。对于属于特定肢体区域中的每个像素,2D 矢量编码从肢体一个部位指向另一部位的方向,每种肢体都有一个对应的PLF 将两个相关的身体部位连接在一起。

p(u)代表连接在两个关节点dj1和dj2之间的肢体置信度:

如果通过对u的等距值进行采样和求和来近似积分,则如公式(1)得到的积分值是均匀的;而使用log 函数对一条肢体上每一个点的权重作非线性变化,得到的权重就是非线性的,如公式(2)所示。

2 KP-Detector 模型

2.1 模型流程

KP-Detector 模型流程如图3 所示。

Fig.3 Model flow图3 模型流程

主要分为3 个部分:①使用ResNet50 预训练的神经网络对图片进行特征提取,从最后一层的featuremap 中定位隐藏的候选关节点,以及给出每个关节点属于某一类的置信度值;②对得到的关节点定位信息和置信度值按照PLFs算法进行连接,组成合理的肢体信息,得到每一条肢体的置信度值;③每一条隐藏的肢体构成一个最大二分图,通过构建一棵匈牙利树,找到合理的最大匹配情况即为最后的肢体连接结果。

2.1.1 关节点检测

从预训练好的ResNet50的最后一层提取出关节点的位置信息和类别信息,生成一组输入特征图F。在此阶段,网络生成一组部分亲和力字段(PLF):

其中,φ1指第一阶段对肢体置信度值的初始化。将第一个阶段的预测结果与原始图像特征F 串联起来作为当前阶段的预测值,用于产生精确的预测结果:

其中,φt表示在第t 个阶段CNN的推理过程,T 表示总的PLF 阶段数。经过T 次迭代后,从最新的PLF 预测开始,重复进行置信度图检测:

其中,ρt表示在第t 个阶段进行推理的CNN 过程,C 表示置信度映射阶段的总数量。这种方法每个阶段都细化了PLF 和置信度图分支,因此每个阶段计算量减少了一半,改进的亲和力场预测方法可改善置信度图结果。

置信度图结果是在早期阶段进行预测,估计的结果在后期通过全局推断逐步完善。在每个阶段的末尾应用损失函数,在估计预测值与标签和字段之间使用L2损失。对损失函数进行空间加权以解决某些数据集不能完全标记所有人的问题。

在阶段ti的PLF 分支损失函数和阶段tk的置信度图分支损失函数为:

在评估方程式中的fS训练过程中,带关节点注释的2D关键点生成标签数据可信度图S*,每个置信度图都是特定身体部位位于给定像素中信息的2D 表示。理想情况下,如果一个人出现在图像中,则每个置信度图中应存在一个峰值;如果图像中有多个人,则对于每个人k,应该有一个对应于每个可见部分j的峰值。本文首先为每个人k生成个人置信度图,其中xj,k∈R2代表对应于人k的第j个关节点的标签值。定义为:

其中,σ为控制峰值的形式,网络预测的标签点置信度图是通过对各个置信度图进行汇总后得到的最大值。

之所以选择使用置信度图中最大的值而不是平均值,是因为实验结果表明,使用最大值相较于平均值效果更好。

2.1.2 关节点连接

给定一组身体部位检测结果,组装它们以形成未知人数的全身姿势,需要每对身体部位检测都具有关联性的置信度,采用方法是检测每一对可能成为关节点对的两个点的中点。但是,当人们挤在一起时,这些中点很可能支持虚假的关联,其原因是由表示方面的局限性引起的:①因为表达信息主要来自于最关键的那个点,而未考虑到整个关节点的协调配合,所以肢体的信息表达不完整;②对于关节点而言,它只注重位置信息而忽略了方向隐藏的信息;③因为用于模型训练的数据单一,所以模型的泛化能力较差。

PLFs 算法非常巧妙地解决了这些限制,保留了肢体支撑区域的位置和方向信息。每个PLF 是每个肢体的2D 矢量场。对于属于特定肢体的区域中的每个像素,2D 矢量编码从肢体一个部位指向另一部位的方向,每种肢体都有一个对应的PLF 将其两个相关的身体部位连接在一起。

考虑单个肢体PLFs 算法,设xj1,k和xj2,k为关节点的标签位置,其中j1和j2分别表示第k个人肢体c上的两类关节点,计算关键点xj1,k指向xj2,k的单位向量:

其中,lc,k代表肢体长度,如图1、图2 所示的宽度,σl代表肢体宽度,如图2、图3 所示的高度。如式(11)和式(12)所示,只有限制在肢体范围内的点p的向量才被算作单位向量v,否则就是0。

这样,一张图片中所有人的关节点p所在位置对应的PLF 值为:

式中,nc(p)是一张图片中k个人中关节点p值非零的个数。

首先对Lc进行采样,采用式(2)的方式,然后根据式(16)对采样后的信息进行积分求和,得到肢体的置信度值:

对检测置信度图执行非极大值抑制算法,以获得离散的部分候选位置。由于图像中存在多个人的关节点信息,所以可能有多个候选对象。这些候选关节点定义了大量可能的候选肢体,使用PLF 上的线积分计算公式对每个候选肢体进行综合评分,从中找到最佳匹配——K 维匹配。本文使用一个贪婪的松弛方法,该松弛方法不仅能够持续产生高质量的匹配结果,而且能够大幅度缩短匹配时间,推测原因是由于PLF 网络的接收域很大。

2.2 模型结构

KP-Detector 模型内部结构如图4 所示。

设前一组阶段预测关节点置信度图为L(t),后一组阶段预测肢体置信度图为A(t),每个阶段的关节点预测结果与对应图像特征F 针对每个后续阶段进行前后级联,在每个卷积块中使用的卷积核大小为3,使用3 个这样的卷积核串联组成。连续阶段的预测t∈{1,…,T}并在每个阶段进行中间监督,相对于其他网络模型增加了网络深度。在原始模型中,网络体系结构基本包括许许多多7×7 卷积层。在当前模型中,通过使用3 个连续的3×3 内核替换7×7的卷积内核,保留了接收场,同时减少了计算量,而操作数前者为97,后者只有51。此外,3 个卷积中每个输出按照类似于DenseNet的方法将内核串联在一起,非线性层数量增加了两倍,网络可同时保留较低级别和较高级别功能。

Fig.4 Internal structure of KP-Detector model图4 KP-Detector 模型内部结构

KP-Detector 模型外部结构如图5 中L(2)、L(3)所示,分别是关节点置信度图和肢体置信度图的预测网络,其中在关节点定位模块中使用4 块重结构,在肢体置信度模块使用2 块重结构,相比其他结构结果最好。两种模块使用类似于DenseNet的连接结构,即每一块重结构之间都是以Dense 形式连接在一起的,这样保证后面的重结构可以充分利用到前面重结构的信息,从而使信息共享最大化,即在前面的重结构中将高分辨率数据送入后面的精度解析过程中实现信息之间共享最大化。

Fig.5 External structure of KP-Detector model图5 KP-Detector 模型外部结构

3 实验结果与分析

本文在MPII 数据集上评估KP-Detector、CPN、SHN 和DensePose 模型。MPII 数据集由3 844 个训练和1 758 个测试小组组成,这些小组由高度互动的姿势(具有14 个身体部位)中的多个相互作用的个体组成。数据集收集了各种场景下的图像,这些场景包含如拥挤、比例变化、遮挡和接触等现实世界中的情形,并提供本文模型与Stacked Hourglass Network 和DensePose的运行时间分析比较,以量化系统效率(见图6)。

3.1 准确度比较分析

如图7 所示,本文使用4 种模型分别在MPII 数据集上做检测精度比较实验,4 种模型分别是本文提出的KP-Detector 模 型、CPN(Cascaded Pyramid Network)模 型、SHN(Stacked Hourglass Networks)模型和DensePose 模型。从图片曲线可以看出,本文提出的KP-Detector 模型精度指标随着迭代次数的增多明显超越其他3 个模型,说明本文模型在精度方面有明显优势。

3.2 检测速度比较分析

使用4 种模型分别在MPII 测试数据集上进行检测速度比较实验,实验结果如图8 所示。本文提出的KP-Detector 模型的检测速度指标FPS(每一秒内检测的图片张数)在整体上的表现较其他模型要稳定很多,而在后期受图片数量的影响越来越小,是CPN 模型和DensePose 模型检测速度的1.25 倍左右。分析原因可能是本文模型是自底向上进行检测,而从关节点开始检测定位,然后是肢体检测,最后是肢体连接,这样的检测方式保证了如果在前一个阶段检测失败或者置信度低于某一个阈值时会被抛弃,保证在后面的阶段不会再次出现,大大缩短了检测周期。同时,使用Dense 连接机制保证了可用参数的共享性,保证了特征信息和关节点信息最大化利用。

Fig.6 Sample results of different models图6 不同模型样本结果

Fig.7 Comparison of accuracy on MPII data set图7 MPII 数据集上的精确度比较结果

Fig.8 Comparison results of detection speed of four models on MPII data set图8 4 种模型在MPII 数据集上检测速度的比较结果

3.3 模型参数比较分析

本文对4 种模型大小进行比较。原CPN 模型、SHN 模型和DensePose 模型大小约是本文KP-Detector 模型的12倍。如果在某工程应用或研究项目中,需要将模型迁移到内存大小严格限制的ARM 等低存储设备芯片上,那么模型大小自然是第一个需要考虑的因素。该模型成功被压缩到只有18M 左右,能满足大部分存储设备需求。本模型之所以能够相较于其他模型小如此多,主要是因为网络结构中定位模块与肢体连接模块是序列进行的,而且使用了Dense 模块,这样大大节省了参数空间,并能够充分共享将近一半的参数量。再看KP-Detector的两种结构模型,如果在Association 模块也使用Dense 连接模块,会使得到的模型规模变大3MB 左右,但是参数量却减少1 000 左右,这是因为在Association 使用了Dense 连接机制后,每一个阶段得到的数据会被其他阶段共享,在共享中难免会有很多冗余计算节点,使模型变大,但是模型整体上被共享的参数量却不一样,这些多余的参数并不是重新生成,而是被其他阶段共享,这样参数数量反而减少了。所以在这两种模型结构中,在KP-Detector的Association 模块中使用Dense连接机制会更利于模型存储和参数共享。

Table 1 Comparison results of scale of four models表1 4种模型规模比较结果

3.4 模型结构比较分析

对各种模型结构进行试验,如对{3、4、5、6、7}这5 种阶段的结构进行试验,发现阶段数为6 或者7 时最优。在阶段数为6 时,对具体的关节点定位模块和肢体连接模块中的子模块数分别进行实验,评价指标mAP(mean Average Precision)。实验结果表明,在关节点定位模块使用4 个子模块和在肢体连接模块使用2 个子模块时效果最好,在这两种模块中分别使用Dense 连接结构,保证了模型参数的共享性,模型精度得到提升。所以最后决定使用4 个关节点定位子模块和2 个肢体连接子模块,并且都使用Dense 连接机制,如表2 所示。

对KP-Detector 模型中的PAFs 和PLFs 进行比较实验,最后发现在精度mAP 上比PAFs 略高出0.5 个百分点,在检测速度FPS 上比PAFs 略快0.4,整体结果说明改进后的PLFs 相比于PAFs 效果要好一些。说明对一条肢体上的每一个点的权重不应是均匀线性变化的,增加其非线性效果会更好,如表3 所示。

Table 2 Experimental comparison results of KP-Detector model structure with different stages表2 KP-Detector 模型结构取用不同阶段实验比较结果(%)

Table 3 Comparative experiments using PAFs and PLFs表3 使用PAFs 和PLFs 比较实验

4 结语

实时多人关节点检测估计是机器能够以视觉方式理解和解释人及其互动的关键要素。本文做了以下工作:①提出关键点关联的显式非参数表示形式,对人类四肢的位置和方向进行编码;②设计了一种可以共同学习零件检测和关联的架构;③证明了贪婪的解析算法足以产生高质量的人体姿势解析;④证明了PLF 细化远比PAF 和身体部位位置细化相结合更为重要,从而大大提高了运行性能和准确性;⑤将身体和脚部估计结合到一个模型中可以提高每个组件的准确性,并减少运行时间;⑥证明在模型中适当使用Dense 连接机制可以提高参数的共享性,减轻模型的梯度消失问题,使用匈牙利算法做肢体的最大二分图匹配是一个非常好的方法。本文设计是一个用于身体、脚、手和面部关键点检测的实时系统,该系统可以广泛应用于涉及人类分析的许多研究主题,如人类的重新识别、重新定位和人机交互等。该研究对人体姿态识别技术的应用和优化有一定的参考作用。

本文还有需改进的地方:①增加更多关节点优良数据集,使用无监督学习方法或者其他方法增加这种优质数据集,使模型的表现力更强;②利用生成模型生成一些数据集,或者是一些没有标记出来的关节点,这样数据集会更丰富,非常有利于模型训练;③不断优化模型,以达到识别非真人的人形雕塑目标,使模型识别能力更强。

猜你喜欢
关节点置信度肢体
硼铝复合材料硼含量置信度临界安全分析研究
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
关节点连接历史图与卷积神经网络结合的双人交互动作识别
肢体语言
正负关联规则两级置信度阈值设置方法
肢体写作漫谈
搞好新形势下军营美术活动需把握的关节点
RGBD人体行为识别中的自适应特征选择方法
VSD在创伤后肢体软组织缺损中的应用
置信度条件下轴承寿命的可靠度分析