文 峰,刘 飞,黄海新
(沈阳理工大学 信息科学与工程学院,沈阳 110159)
传统人体异常行为检测方法通常直接对图像进行特征点提取,受限于图像的外观、视角、遮挡等问题,无法充分利用图像信息,当人体姿态变化较大时,不能精确表达形变,难以提取人体异常行为特征[1-2]。
Sun M等[3]通过提取光流特征估计人群密度,将异常检测看成一个多标签分类问题,存在无法获取充足训练样本的问题。魏文华[4]提出基于模糊理论的检测方法,通过人体轮廓进行分类,其分类器使用的规则少,只能识别跌倒这一异常行为。周义[5]提出基于人体运动轨迹的方法,误判率较高。传统检测方法由于结构单一,无法应用在复杂场景中。
崔利军[6]提出利用外接矩阵标识被检测对象,通过两种特征算子的变化判断是否发生异常,但仅仅能检测下蹲、跌倒异常行为,无法对人体存在遮挡、复杂动作进行检测。郑浩等[7]提出一种基于连续自适应均值漂移算法,采用稀疏表达的检测方式,该方法虽对存在遮挡情况可以检测目标对象,但对复杂场景检测准确率较低。Sultani W等[8]提出构造行为数据库,通过计算异常分数预测是否发现异常,无法保证数据库的准确性,影响网络性能。管文华等[9]通过人体关节点构造头部与手之间的关系,仅仅能检测低头这一行为特征,无法满足人体行为的多样化。
本文提出一种基于人体关节点检测人体异常行为的方法。首先使用基于层叠沙漏网络的多人姿态估计算法[10]获取关节点数据信息,一段视频由多帧图像构成,将每个人体在相应帧图像中的关节点坐标数据组成人体行为序列,根据行为序列之间的相关性,设计一种构造人体行为的数据分布方法。其次,使用聚类算法K-means[11]标记存在异常行为的个体,检测时使用滑动窗口,对一定大小的人体行为序列进行检测。基于关节点坐标生成人体角度、距离特征数据构造异常行为数据集,解决训练数据采集困难、适应性不足等问题。最后,使用支持向量机(Support Vector Machines,SVM)模型[12]识别人体异常行为种类,经过反馈得到最终检测结果。
为获取可靠性较高的人体关节点数据信息,本文使用多人姿态估计AlphaPose算法[10]获取人体关节点坐标数据。对于每张人体姿态估计图,标定17个二维关节点位置,根据人体关节点坐标数据构建人体行为特征。具体关节点如图1所示,图中0到16分别为鼻子、左眼、右眼、左耳、右耳、左肩、右肩、左肘、右肘、左腕、右腕、左臀、右臀、左膝、右膝、左脚、右脚。
图1 人体全身关节图
采用人体关节点描述人体姿态、预测人体行为的网络结构如图2所示。
图2 预测人体行为网络结构图
预测工作原理为:将视频序列转化为图像序列,对图像中的人体进行多人姿态估计,寻找置信度最高的关节点位置作为最终的关节点,将其连线成骨架;基于关节点坐标进行特征转换,经过混合高斯模型,通过行为数据分布特征表达人体行为;使用聚类算法标记具有异常行为的人体,而具有正常行为的人体停止检测;通过行为分类器将标记具有异常行为的人体进行行为识别,得到最终结果。
1.2.1 特征转换
检测人体异常行为的关键在于构造表达人体的行为特征,由于关节点坐标存在特征分散、单一等问题,使用关节点坐标无法准确表达人体行为变化。因此,本文设计了基于人体关节点坐标的一种特征转换方法,首先设置人体中心点,根据人体关节点与中心点的位置关系,构造表达人体行为的角度特征和距离特征,提高了特征相关性。以每个人体左肩、右肩取连线中点与左臀、右臀取连线中点,连线得到垂直方向上的中线,再以左肩、左臀取其连线中点与右肩、右臀取其连线中点得到水平方向上的中线,两条中线的交点即为设置的中心点。具体特征如图3所示。
图3 人体特征图
图3a中,C为人体中心点,记为(x0,y0);A1、A2、A3为角度特征;l1、l2、l3、l4为距离特征。图3b为左臂局部特征,C1为左肩与左肘连线中点,记为(x1,y1);C2为左肘与左腕连线中点,记为(x2,y2)。
当人体左臂行为变化时,通过A1和l1、l2相结合表示人体手臂行为特征。为体现手臂与躯干之间的特征变化关系,根据手臂关节点横坐标与纵坐标数值计算欧氏距离,得到上臂、下臂与人体中心的距离,其计算公式为
(1)
(2)
为体现角度的变化,计算相应角度A1的余弦值代表角度特征,记为Z,其计算公式为
(3)
根据计算将分散的关节点特征转换成紧凑的距离特征和角度特征,表达人体手臂的变化幅度。有效解决了使用关节点坐标表达人体行为特征的局限性。
通过多人姿态估计网络预测得到人体关节点,经上述方法构建人体行为特征,数据量较大,每秒达到2000个,不利于异常行为的检测、识别。为进一步提取行为特征,将人体行为序列中的角度和距离数据分布特征作为行为特征进行异常行为的检测,利用混合高斯模型和期望最大化(Expection Maximuzation,EM)算法[13]对该分布进行参数估计,从而获得人体行为特征。
具体过程如下。
(1)首先根据每个人体的角度特征和距离特征组成数据,输入到混合高斯模型中,一个混合高斯模型含有K个单个高斯模型,设输入人体行为特征数据样本集为Y=(y1,y2…yt),数据分布符合高斯分布,若采用t表示数据编号,T代表数据最大编号,采用k表示单个高斯模型编号,共有K个高斯模型,将上述样本集数据展开成完全数据为
(4)
式中:yt样本数据代表来源于第k个单高斯模型;γt,k代表隐变量。
(2)设置初始混合高斯的二维均值、协方差和权重。权重代表单个高斯模型在混合高斯中的比重,经过EM算法迭代计算,输出最终的人体特征参数,具体迭代公式为
(5)
k=1,2,…,K
(6)
(7)
通过上述方法将行为数据分布特征表示人体在一段时间内的行为变化,从而减少了人体角度特征和距离特征的数量,提升检测精度。
1.2.2 标记异常行为
在此只区分具有正常行为的人体和具有异常行为的人体,采用聚类算法K-means仅设两个聚类中心,分别代表具有正常行为人群和具有异常行为人群。
根据每个人体所得到的均值和方差合成多组数据,随机选取人体作为K-means算法的聚类中心,计算各个数据与聚类中心的欧氏距离,当达到最大迭代次数,输出人体编号表达聚类结果。在聚类结果中,将两个聚类中心含有人体数量进行对比,少数即为具有异常行为的人群。具体流程如图4所示。
图4 标记异常行为流程图
在完整的视频检测中,通常人体行为序列较长,本文提出滑动窗口分段检测思想,将视频拆分成帧数相同的段落,按时间序列依次检测,滑动窗口处理流程如图5所示。
图5 滑动窗口处理流程图
设置滑动窗口大小,平均划分待检测视频。对于初始视频序列,每次提取其窗口相应时间长度的人体行为序列进行特征转换、标记异常行为,对得到的检测结果存储记录,重复上述步骤直至视频序列完成,获取带标记的数据。
1.2.3 人体异常行为检测
基于已获取的异常行为数据,通过设计基于有监督学习的动作识别方法,可对异常行为进行分类检测。由于使用神经网络检测存在过拟合、自适应性差等问题,本文采用SVM识别人体异常行为,识别流程见图6所示。
图6 行为识别流程图
选取数据集中的部分数据作为训练集,将标记的待测异常行为数据输入到SVM行为分类模型中,通过迭代计算,对比待测行为数据与已有行为标签数据的差异,输出一个概率最大的人体行为类别,得到人体异常行为检测结果。
实验采用 Ubuntu16.04 操作系统,图形处理器为 NVIDIA Tesla V100,内存为 16 GB,深度学习框架为 Pytorch 0.4.1。
用于训练行为分类器的数据集分为两部分:一部分为利用手机拍摄的1080p视频,主要为室内场景下13个人完成4类动作(扔,挥手,趴桌子,打架);另一部分使用人体行为数据集KTH,包括4个场景下25个人完成6类动作(行走,挥手,慢跑,鼓掌,跳,打架)。共计2761个视频样本,包含了尺度变化、衣着变化和光照变化,以评估算法性能。
为减少EM算法迭代过程中的计算量,协方差矩阵都为对角矩阵,隐变量初始值设置概率均为1/3。经实验证明,每次处理60帧的人体关节点数据,测试的准确率最高,因此,设置滑动窗口大小为60帧。
通过姿态估计获取人体关节点数据,两种数据集图例如图7所示。
图7 人体姿态估计图
本文以某会议室人体行为检测为例。通过多人姿态估计得到人体关节点数据如图8所示。
图8 多人姿态估计图
图8中矩形框为跟踪人体框,并附有每个人体编号ID标识。通过对人体行为数据分布特征聚类,将图8中人群分成具有正常行为和具有异常行为两类,聚类结果如表1所示。
表1 聚类结果
表1中1、2为聚类中心,分别代表两个簇,从上文可知,本文定义最小簇中的人群标记为异常行为的人群,因此对人体ID为1和5的人体进行异常标记。将对应的异常行为数据输入到SVM分类模型中,得到异常动作分类结果如图9所示。
图9 最终检测结果图
图9中实线矩形框代表无异常行为人群;虚线矩形框为异常行为人群;Sg代表滑动窗口滑动次数;F代表打架这一行为标签。用本文的方法检测出ID为1和5的人体具有打架行为。
在识别行为分类上,使用人体姿态特征数据集优于使用人体关节点数据集,其行为分类准确率对比如表2所示。
表2 不同数据集的行为分类准确率对比
由表2可见,本文提出的训练集在行为分类的准确率上有小幅度的提升。
为验证本文所提出的人体行为异常检测方法的合理性,选取多种不同场景下的室内视频进行检测,由于存在环境物体遮挡人体的情况,在多次实验后得出相关的指标如表3所示。
表3 有无遮挡效果对比
由表3可知,待测视频中若不发生遮挡人体的情况,检测算法准确率达到89.65%,具有一定的通用性。
提出一种基于姿态特征的异常行为检测方法,设计一种利于表达人体行为的特征数据分布方法,充分体现了人体行为变化,通过聚类标记异常行为,减少人体行为特征数据量,使基于SVM模型完成异常行为分类的准确率较高,解决了传统人体异常行为检测方法准确率不高的问题。对于存在遮挡的异常行为,准确率还需进一步提升。