赵 勇,巨永锋
ZHAO Yong1,2,JU Yongfeng1
1.长安大学 电子与控制工程学院,西安 710064
2.西安邮电大学 自动化学院,西安 710121
1.School of Electronic and Control Engineering,Chang’an University,Xi’an 710064,China
2.School of Automation,Xi’an University of Posts and Telecommunications,Xi’an 710121,China
人是各种社会活动的主体,因此人体动作行为识别一直都是计算机视觉领域一个非常热门的研究方向,在视频监控、人机交互、虚拟现实和视频检索等方面都有着非常广泛的应用。人体是由头部、躯干、四肢、手和脚等多个部位通过关节相互连接而成的,人类的各种动作和行为都是靠人体部位来完成,人体动作不同,人体部位的姿态也不同。因此若能确定人体各部位的定位位置,将给人体动作行为的识别打下良好的基础。人体姿态估计就是这样一种自动确定头部、躯干和四肢等人体部位,或肩、肘、腕、膝和踝等关节在静态图片或视频帧图像中的定位位置的过程[1],是人体动作行为识别的一个基础问题,受到了众多研究人员的关注,并且已经提出了多种人体姿态估计算法[1-13]。
现有人体姿态估计算法主要可分为基于整体和基于模型的两大类。基于整体的人体姿态估计算法将人体视为一个整体并用图像特征来描述,通过回归分析或样例比较的方式来确定人体部位或关节的定位位置。基于模型的人体姿态估计算法将人体视为多个存在关联的个体,其中每个个体为一个部位或关节,或者连在一起的多个人体部位或关节,利用图像特征对个体建立外观模型来代替其真实外观,并根据人体部位或关节间外观和空间的相互关联情况建立人体模型,通过优化由人体模型构造的能量函数来确定部位或关节的定位位置。
基于模型的人体姿态估计算法的研究主要集中在部位或关节外观模型和人体模型的建立两方面。近几年来,部位或关节外观模型的研究主要集中在深度学习方向,与传统外观模型利用诸如边缘、颜色、形状等手工设计的图像特征[1-6]相比,深度学习可以获取表达和区分能力更强的抽象特征,能更准确地表征真实人体部位或关节的外观特征。卷积神经网络(Convolutional Neural Network,CNN)是目前建立部位或关节外观模型时应用最成功的深度学习模型[8-13],Jain等[8-9]将训练后的CNN作为关节外观模型,网络输出即为关节可能定位与外观模型的相似度,并考虑到关节间空间定位的先验分布,提出了一种基于空间先验的人体模型;Chu等[10]在传统CNN的卷积层引入几何变换核表征关节间的依赖关系,将改进后的CNN用来建立关节外观模型,并将树形图结构人体模型集成进CNN进行人体姿态估计;Lifshitz等[11]将两个CNN级联起来作为关节外观模型,第一个为传统CNN结构,用于计算图像中每个像素对关节定位的权重系数,第二个在传统网络中添加了一个反卷积层,用于计算关节可能定位与外观模型的相似度,并在树形图结构模型中添加了投票因子并将其作为人体模型,投票系数由第一个CNN计算出的权重系数来确定;Chu等[12]利用CNN提出了一种多情境注意力机制网络,通过设计的3种多尺度、多语义和全局-局部注意力机制模型来学习图像上下文信息,在考虑到关节间关联的前提下利用条件随机场模型建立了人体模型,并将其集成进CNN进行人体姿态估计;Ning等[13]对关节间的先验知识进行学习,并将其映射进CNN结构,提出了一种知识导向的深度学习网络,并用于人体姿态估计。
人体姿态估计中人体部位或关节定位位置的估计除了要考虑可能定位与外观模型的相似度之外,还需要考虑部位或关节之间的外观和空间位置的约束。虽然文献[8-9]在建立人体模型时同时考虑了关节可能定位与关节外观模型的相似度和关节间的先验定位分布,但却将基于同样先验分布建立的人体模型用于不同待处理图片进行人体姿态估计,并没有考虑到不同图片中关节的实际定位对先验分布服从程度的不同,而实际上,对于服从程度高的图片,关节间的先验分布会对关节的准确定位提供有效的帮助,但对于服从程度较低的图片,关节间的先验分布反而可能会对关节的准确定位造成消极的影响。为此,本文提出了一种基于条件先验的人体模型,并将其用于人体姿态估计。
本文的贡献主要有两方面:(1)设计了一种计算关节间空间先验分布的方法;(2)提出了一种基于条件先验的人体模型,在基于空间先验的人体模型中添加了一个自适应调节参数,用来调节关节间空间先验分布在计算关节定位概率时所起作用的大小,参数值根据关节可能定位与外观模型的相似度的大小来确定。
由于图像内容的复杂多变性,以及关节外观模型并不一定能完全准确描述关节的真实外观特征,在进行人体姿态估计时,除了考虑与关节外观模型的相似度之外,还要考虑关节之间的相对定位位置。虽然关节间的定位会满足一定的先验分布,但不同图片中相连关节的实际定位情况并不相同,对关节间定位先验分布的服从程度可能差别很大,如果对每幅待处理图片都采用相同的关节间定位先验分布的话,服从先验分布程度较低图片的估计结果可能较差。为解决这个缺陷,本文提出了一种基于条件先验的人体模型,根据图片的实际情况自适应调节关节间空间先验分布在计算关节定位概率时所起作用的大小。
人体是由头、躯干、四肢以及手脚等部位通过肩、肘、腕、膝和踝等关节连接而成的,但不同关节之间有着不同的连接和相对定位关系。例如肩关节和脸部虽然没有直接连接,但却具有相对固定的定位关系,肩关节和肘关节相互连接,而且具有相对固定的定位关系,肩关节和膝关节互不相连,而且没有相对固定的定位关系。
定位关系相对固定的关节之间的空间先验分布的学习可由4个步骤来完成,图1以左肩关节相对于脸部中心的空间先验分布为例给出了学习过程。
(1)在训练图像中标注左肩关节和脸部中心,利用人体上半身检测器[14]检测出人体上半身正方形框,如图1(b)所示。
(2)根据人体上半身的正方形框尺寸与标准尺寸(本文设置为120×120像素)的比例对左肩关节和脸部中心同时进行缩放,并以左肩关节为中心标注出64×64大小的左肩区域,如图1(c)所示。
(3)将所有训练图像都按照步骤(2)进行缩放和标注,然后将标注出的左肩关节区域都投影到同一坐标系下,即可得到左肩关节相对于人体上半身的先验定位区域,如图1(d)所示。
图1 关节间空间先验分布概率学习示意图
(4)将所有训练图像经过缩放后得到的如图1(c)所示的左肩关节和脸部中心都投影到同一坐标系,其中所有脸部中心均投影到中心位置。根据投影到每个位置的左肩关节的多少即可计算空间先验分布概率,如图1(e)所示,颜色越深定位概率越低,计算公式如式(1)所示。
其中,n为投影到x上的左肩关节个数;N为训练图像总个数。
采用相同的方法,所有定位关系相对固定的关节间的空间先验分布概率都可以学习确定,如图2所示。出于对称的原因,将左肘相对于左肩的先验分布旋转180°即可得到左肩相对于左肘的先验分布概率。其他的类,如右肩相对于右肘、左右肘相对于左右腕、左右胯相对于左右膝、左右膝相对于左右踝的空间先验分布可采用同样方法得到。
图2 关节间空间先验分布
考虑到相邻关节的空间先验分布,文献[8-9]提出了一种空间先验人体模型。在计算关节定位概率时除了考虑关节可能定位与关节外观模型的相似度之外,还将与相邻关节的空间先验对关节的影响也考虑进来。该模型可较为有效地剔除掉相似度虽然很高但与相邻关节间的空间定位与空间先验分布严重不符的关节可能定位,从而可以更好地确保估计出的各关节定位更符合真实人体情况。
其中,p′i(x)为关节定位在像素点x时的定位概率;pi(x)为关节定位在像素点x时与关节外观模型的相似度;U为与关节i的定位关系相对固定的关节集合;bu为U中关节u对关节i的消息,类似于置信传播算法中的局部消息。
其中,pi|u=0为关节i位于x,而关节u位于y,并将其视为图像中心时,根据2.1节学习得到的先验分布而确定的先验概率;pu(y)为关节u定位在y时与外观模型的相似度。
不同人体关节的定位具有很大的随机性,关节间的真实定位可能恰好处于空间先验分布概率较低的相对位置,但文献[9]将关节可能定位和外观模型的相似度与关节间的空间先验分布对关节的影响同等对待,从而使得计算得到的关节真实定位概率可能并不是很高。为解决这个缺陷,本文在文献[9]所提基于空间先验的人体模型中引入自适应调节参数来调节关节间空间先验分布在计算关节定位概率时所起的作用,如式(4)所示。通过自适应调节参数,可以使得在计算具有较高相似度的关节定位概率时相似度起更大的作用,而对于相似度较低的关节定位,在计算关节定位概率时关节间的空间先验起的作用更大。
其中,μ为自适应调节参数,如式(5)所示,参数取值示意图如图3所示。
图3 自适应调节参数示意图
其中,T1和T2为相似度阈值;a1、a2、θ1、θ2均为调节因子。据前所述,当关节可能定位的相似度较小(小于T1)时,在计算关节定位概率时关节间的空间先验所起的作用更大,而且相似度越小,关节间空间先验所起的作用越大。为此本文将参数θ1的取值范围设置为θ1>1,从而使得相似度在[0,T1]范围内变化时,μ逐渐从1+a1减小至1,但为防止过于强化关节间空间先验所起的作用,本文将a1的取值范围设置为[0,2]。当关节可能定位的相似度较大(大于T2)时,在计算关节定位概率时关节间的空间先验所起的作用较小,而且相似度越大,关节间空间先验所起的作用越小。为此本文将参数θ2的取值范围设置为(0,1),从而使得相似度在[T2,1]范围内变化时,μ逐渐从1减小至1-a2,但为防止过于弱化关节间空间先验的作用,本文将a2的取值范围设置为[0,0.6]。上式中的参数T1、T2、a1、a2、θ1和θ2可根据训练集中关节定位准确度的最大化准则来确定:
其中,p为对训练集中所有图片的关节定位准确度。
对式(4)进行自然对数变换,即可得到关节定位概率的计算公式。人体上半身的左肩、左肘、左腕、左胯、左膝和左踝关节的计算公式分别如式(6)~(8)所示,右肩、右肘、右腕、右胯、右膝和右踝关节的计算公式与此类似。
卷积神经网络在人脸检测中已经取得了良好的效果,具有很高的检测效率。为此,本文在计算人脸定位概率时仅利用脸部可能定位与外观模型的相似度,并不考虑人脸与肩部关节的空间先验分布,实验结果也证明了考虑人脸与肩部关节的空间先验分布反而会降低人脸检测准确度。
CNN是目前建立部位或关节外观模型时应用最成功的深度学习模型,主要包括卷积层和池化层,卷积层为特征提取层,池化层是特征统计层。卷积层通常包含多个卷积核,每个卷积核提取一种特征,采取局部感知和权值共享的方式来减少参数数量。
现有利用CNN建立的关节外观模型大都仅利用最后一个池化层的输出视为图像特征,类似于人类利用整体轮廓来进行目标识别,而这与人类在识别物体时往往同时利用局部细节和整体轮廓的特性并不相符。为此,本文同时采用最后一个卷积层和最后一个池化层的输出合在一起视为图像特征,卷积层输出用于表达局部细节特征,池化层输出用于表达整体轮廓特征。采用的卷积神经网络结构如图4所示,由3个卷积层、3个池化层和3个全连接层组成,具体参数如表1所示。
图4 卷积神经网络结构
表1 卷积神经网络结构参数
本文从训练图像中剪切以关节为中心的64×64图像块,并将其作为网络训练正样本,将从训练图像任意剪切出的同样大小图像块作为网络训练负样本。在将图像块引入CNN前,先对图像块进行局部响应归一化[15]操作,此举可有效提高CNN的泛化能力。
网络3个卷积层和前两个全连接层中的神经元采用具有很强防过拟合能力的修正线性单元(ReLU)[16]作为激活函数,全连接层3的一个神经元采用logistic函数作为激活函数,神经元的输出即为关节的定位概率。
本文采用随机梯度下降算法作为卷积神经网络的训练算法,设置目标函数为:
其中,W为网络权值矩阵;N为样本个数;fi(W)为CNN全连接层输出;di为样本标签,正、负样本分别为1和0。
将建立的关节外观模型和基于条件先验的人体模型用于人体姿态估计,主要包含以下几个步骤,图5以左肩关节的定位为例给出了定位过程示意图。
(1)用人体上半身检测算法[14]检测人体上半身,并按照其与标准大小(120×120像素)的比例缩放待处理图像,然后利用基于CNN的人脸模型检测人脸,并标注出人脸中心,如图5(a)所示。
(2)根据前面学习的左肩关节相对于人体上半身的先验定位标注出左肩关节的定位区域,如图5(b)所示。
(3)对于左肩关节的定位区域,通过滑窗的方式计算每个关节可能定位与关节外观模型的相似度,如图5(c)所示,颜色越黑表示相似度越高。
(4)利用基于条件先验分布的人体模型计算关节的定位概率,如图5(d)所示。
(5)定位概率最大的即为关节最终定位,如图5(e)所示。
图5 人体姿态估计过程示意图
为方便比较,本文采用人体姿态估计领域常用的FLIC图像集[4]和LSP图像集[17]构造训练和测试图像集。FLIC数据集是从多部影视作品截取的视频帧图像组成,LSP数据集由各种运动员的运动照片组成,两个图像集中的人体姿态和背景都是复杂多变的,尤其是LSP图像集中的人体姿态更加复杂多变。将FLIC图像集中的3987张图片和LSP图像集中的1000张图片合在一起构造训练图像集,将FLIC图像集中剩余的1016张图片和LSP图像集中剩余的1000张图片合在一起构造测试图像集。为增加卷积神经网络的训练样本数量,本文将训练图像集中的图片在3°~7°范围内按顺时针和逆时针分别随机旋转两个角度,从而将训练图像数量扩大为原来的5倍。由于不同训练图像中人体尺寸大小的不同,在从训练图像中获取关节样本时,本文首先检测人体上半身,然后根据其大小与标准大小120×120的比例来缩放图像,最后从缩放后的训练图像中剪切出以关节为中心的64×64的图像块作为训练CNN的正样本,将从训练图像随机剪切出的同样大小的图像块作为CNN的负样本。仿真实验在英伟达Tesla M40 GPU硬件平台上进行,模型训练时间约为1.5天。
图6给出了文献[9]和本文算法对图5中待处理图片的左肩关节定位结果。如图6(a)所示,图中人体左肩关节实际定位区域与外观模型的相似度很高,但由于左肩关节处于其相对于人脸的先验分布概率较小的位置,而文献[9]对任一待处理图像采用的都是基于相同空间先验的人体模型,从而导致计算出的左肩关节实际定位区域的定位概率并不是最大,计算出的定位概率如图6(b)所示,出现了定位错误。而利用本文所提的基于条件先验分布的人体模型计算左肩关节的定位概率时,虽然实际定位区域的先验分布概率较小,但由于大幅弱化了空间先验分布的作用,仍然得到了很大的定位概率,如图6(c)所示,从而实现了正确定位。
图6 左肩关节定位比较
图7给出了利用本文基于条件先验的人体模型对几幅图片进行人体姿态估计的结果,图中圆点表示关节定位位置。从图7可以看出,将本文所提基于条件先验的人体模型用于人体姿态估计时,处于不同背景和场合下的人体都取得了良好的估计结果。
表2和表3分别给出了将本文基于条件先验的人体模型用于人体姿态估计和其他一些经典人体姿态估计算法的估计准确度比较结果。从两个表可以看出,将本文基于条件先验的人体模型用于人体姿态估计时,人体各个部位的估计准确度都得到了一定程度的提高。
图7 人体姿态估计示例
表2 LSP数据集估计准确度比较 %
表3 FLIC估计准确度比较 %
本文针对当前部分人体模型在利用部位或关节空间定位的先验分布建立时并没有考虑到不同图片中部位或关节的实际定位对先验分布服从程度的不同,提出了一种基于条件先验的人体模型,添加自适应调节参数来调节先验分布在计算关节定位概率时所起作用的大小。如何进一步完善基于条件先验的人体模型及将其集成进CNN将是今后的研究内容。