一种基于改进运动历史图像和支持向量机的行为识别算法
2020-06-08苏寒松陈震宇刘高华
苏寒松,陈震宇,龙 鑫,刘高华
(天津大学 电气自动化与信息工程学院,天津300072)
基于视频序列的人体行为识别技术作为计算机视觉的重要研究领域,一直是近年来的研究热点,被广泛地应用于智能视频监控、人机交互、教育等各个领域[1]。行为识别方法大致分为两类:模板匹配法和状态空间法[2]。模板匹配法首先从视频序列中提取特征向量,然后将该特征向量与预先建立好的样本行为进行比较分析从而实现行为识别;该方法计算简单,但对噪声和运动持续时间变化比较敏感,鲁棒性较差。状态空间法把各种静态行为定义为由概率相联系的状态,运动序列可看成不同状态之间的一次遍历,通过计算联合概率完成行为识别;该方法可避免时间间隔建模的问题,但计算复杂,需要样本大,很难应用于实际工作中。
国内外学者在行为识别方向上已有大量研究,文献[3]提出将图像划分为多个小区域,并对每个区域计算稠密光流的归一化方向直方图,最后利用K近邻进行分类。由于光流计算复杂度高,所以该方法难以满足实时性要求,此外K近邻的分类性能也不甚理想。文献[4]提出一种基于支持向量机分类器训练出头部、手臂和腿部状态检测器,根据身体部位的随机变化建立隐马尔可夫模型,最后根据三个部位的状态实现行为识别;该方法将重点放在决定运动的三个关键部位上,对一般相似行为有较好的区分性,但忽略了很多其他的运动信息,故在KTH数据集上的总体识别率仅达到79.2%。文献[5]提出一种三维卷积神经网络模型,通过三维卷积操作从视频序列中提取特征,通过分类器函数完成分类;该方法的优点是不需要人为选择特征,避免由于特征选取不当而导致的识别率低的问题,但该方法属于深度学习领域,需要预先标记好大量的数据,数据集较大,同时对样本的规模和选择有一定的要求。文献[6]从图像中提取人体骨骼结构信息,以关节的相对位置构成骨骼四边形,将其作为特征向量输入支持向量机进行分类;该方法在MDH5数据集上的识别率达到93.89%,在仅利用骨骼信息进行行为识别的方法中有着较高的识别率,但准确率仍需进一步提升。文献[7]提出一种运动历史图像和非负矩阵分解相结合的行为识别算法,通过运动历史图像将三维的运动信息保存到二维灰度图上,然后利用非负矩阵分解从中提取特征进行行为分类;该方法计算简单,易于实现,但运动历史图像不能很好体现运动的细节信息,从中提取的初层特征识别率较低,需进行二次特征提取,增加了一定程度的计算量,实时性效果不太理想。
基于上述分析,本文提出基于改进运动历史图像和支持向量机的人体行为识别方法,通过区域光流求得的运动矢量信息对运动历史图像进行改进,得到易于区分相似行为的改进运动历史图像;然后从中提取具有平移、旋转和尺度不变性的Hu矩[8]作为特征向量;最后结合机器学习知识,利用支持向量机对行为进行分类。
1 运动历史图像
1.1 传统运动历史图像
运动历史图像(motion history image,MHI)是由Bobick和Davis提出的一种运动全局时空表示法[9],能够将视频序列中的三维时空信息转换为一个单一的二维灰度图像。该过程首先需要通过适当的目标检测算法进行目标检测,从而在每一帧视频图像中分割出前景目标区域;然后给前景目标区域的每一个像素分配一个设定的初始灰度值,该值的大小代表该像素位置上动作的持续时间;当该像素变为背景时,它的灰度值随着时间的推移以设定常数进行衰减,直至为0。因此,运动历史图像中每个像素的灰度值记录了该像素位置上动作随时间的变化过程,运动历史图像的具体表达由下式[10]定义:
其中:ψ(x,y,t)是用于表明t时刻前景目标的二值图像,由常用的目标检测算法得到,称之为更新函数,ψ(x,y,t)=1代表t时刻像素(x,y)属于前景区域,反之ψ(x,y,t)=0代表t时刻像素(x,y)属于背景区域;τ是前景像素设定的初始灰度值;δ是背景像素的衰减参数。τ和δ决定了动作在运动历史图像中所能持续的时间长短,如果τ的值设置过小而δ的值设置过大,则一个动作中发生比较早的部分会丢失,不能在运动历史图像中表现出来;如果τ的值设置过大而δ的值设置过小,则运动历史图像会因为灰度变化不明显而变得模糊,并且很久之前的一些无关动作也会残留在运动历史图像中。
运动历史图像描述了运动的时间和空间分布,图像中每个像素的灰度值都是关于动作时间和位置的函数[11]。像素灰度值越大,表明该动作发生的时间距离当前时间越近;反之灰度值越小,表明该动作发生得越早,灰度值的变化反映了运动方向。运动历史图像可以将描述三维时空变化的视频序列转换为一个二维的灰度图像[12],由视频序列到灰度图像的转换,运算速度快、存储量低,所以运动历史图像被广泛地应用于模板匹配行为识别算法中。
尽管运动历史图像已经成功地应用于很多行为识别任务,但其现有形式仍存在一些限制条件。在运动历史图像中,每个被检测到的前景像素点都被分配相同的初始灰度值,无论目标的运动速度如何,该点的灰度值都是固定的,因而它不能有效地描述运动目标的局部移动[13]。此外,运动的持续时间也明确地由初始灰度值τ和衰减参数δ给出,导致该方法对于各种动作持续时间的变化是敏感的[14]。上述缺陷使得运动历史图像对类似行为之间的区分变得非常困难,比如步行和跑步、举手和挥手等相似的人体行为,它们的运动历史图像非常相似,从中提取的特征向量差别也不大,所以导致识别性能不甚理想。综上,根据运动历史图像提取的特征向量进行行为识别,得到的准确率不是特别理想。
1.2 改进运动历史图像
在传统的运动历史图像中,视频序列中的动作过程可以用二维灰度图像简明地表示,但是忽略了每个像素位置处目标的运动速度和动作持续时间。相反地,光流法可以明确地给出图像中每个像素的运动速度,但它通常只能给出视频序列中仅两帧(或几帧)连续图像的运动信息,不能有效地描述一个动作的完整过程。此外,对整幅图像求取光流,计算量大、复杂度高,难以满足实时性要求。
基于上述思想,本文提出了一个改进的运动历史图像法:(1)用帧差法和背景减除法提取出视频帧的前景目标并画出前景目标的外接矩形框。首先对视频相邻两帧图像做帧间差分,找出运动区域的轮廓;然后对该轮廓范围内的区域进行背景减除,从而提取出完整的前景运动目标,再根据前景目标的横纵坐标最小、最大值,得出外接矩形框。这样既解决了帧差法容易产生大面积空洞、提取目标完整性较差的缺点,又弥补了背景减除法计算量大的不足;而且帧差法计算量小、效率高,背景减除法提取前景目标更加完整精确。通过背景减除法和帧差法的结合,让前景目标的提取既高效又完整,实现两个算法的优势互补。(2)对前景目标所在的外接矩形进行区域光流,求取每个前景像素点的光流矢量;对背景区域不作处理从而提高光流计算的实时性。(3)运动历史图像中前景像素点的灰度值由该像素处的光流矢量大小来确定,而不是使所有前景像素点设置为相同的灰度值,这样可以更好地获得运动目标各个身体部位的局部动作描述。(4)运动历史图像中每个背景像素点的灰度值以指数形式更新,从而不需要明确指定运动持续时间,就可以区分不同位置处的运动持续时间。
上述改进运动历史图像通过区域光流对传统运动历史图像进行改进,得到的运动历史图模板对步行、慢跑和跑步等类似行为具有更好的区分性,从而在行为分类阶段能够获取更好的识别结果,并且该改进方法也能够满足实时性要求。以图1为例,对改进运动历史图像进行具体说明如下。
图1 改进运动历史图像原理Fig.1 The principle of improved motion history image
光流法[15]利用像素与其邻域像素的相关性以及像素在相邻帧间的灰度一致性来寻找像素在帧间位置上的对应关系,从而得到目标的运动矢量信息。该方法计算量大,复杂度高,很难满足实时性的要求。为了解决光流法计算耗时的问题,改进算法只对前景目标区域进行光流计算。如图1a和1b为视频序列中的相邻两帧图像,图1c为利用目标检测算法求得的目标二值图,且目标的外接矩形已求得并标记在图中。在改进算法中不以完整图像1a和1b作为输入进行光流计算,而是对目标所在的外接矩形区域进行光流,即以图1d和1e中的矩形区域作为输入进行区域光流。记完整图像面积为st,目标外接矩形区域面积为sr,对完整图像计算光流耗时为tt,对矩形区域计算区域光流耗时为tr。由于sr小于st,光流计算过程中的像素点数变少,所以tr必然小于tt,从而降低了光流的用时。
对于前景区域的光流矢量计算,本文采用计算效率较高的Lucas-Kanade方法。Lucas-Kanade光流法基于亮度恒定假设[16],即相邻两帧之间所有像素点的灰度值不变,表示为
其中,I(x,y,t)是t时刻像素(x,y)的灰度值,该像素在d+dt时刻相对于x轴和y轴分别移动dx和dy。基于时间连续性假设,对公式等号右侧进行一阶泰勒展开可得
对上式进行化简,并改写为向量形式有
其中,u为水平光流矢量,v为垂直光流矢量,Ix、Iy、It分别为∂I/∂x、∂I/∂y和∂I/∂t的离散形式,并可由下式求得:
基于空间一致性假设,n像素邻域窗口Wx,y内的所有像素偏移恒定,则有
通过求解公式,则像素(x,y)处的光流矢量u和v可通过下式求得:
对前景目标区域求取光流矢量后,基于光流矢量u和v,定义像素(x,y)处的光流长度为
则改进运动历史图像按下式进行更新:
其中,ψ(x,y,t)是用于表明t时刻前景目标的二值图像;d(x,y,t)为t时刻像素(x,y)的光流长度;参数α是前景像素处历史灰度保留率,参数β是背景像素的更新速率,且0<α,β<1。
由(12)式可知,在改进运动历史图像中,如果某像素是前景点,则它的灰度值大小将由该像素的光流长度决定;如果该像素保持为前景点,它的灰度值将以保留率α更新并累加上新的光流长度;当该像素变为背景点时,它将以更新速率β呈指数趋势减小。当保留率α较大时,光流长度在前景像素的灰度中所占比重小,不能很好地体现运动的细节信息;当保留率α较小时,光流长度占比增加,能更好地体现运动的最新细节信息。当更新速率β较大时,背景像素灰度值减小缓慢,较早发生的运动也能被记录;当β较小时,背景像素灰度值减小加快,只有近期的运动被保留。因此,针对想要体现运动细节的场景,可将α的值设置得适当小一些;对于目标运动速度较快的场景,如交通道路上的车辆监控,通常需要为其设置较大的更新速率β;对于目标运动速度缓慢的场景,如人体的行为分析,通常需要较小的更新速率。
在人体行为分析这类目标运动速度相对缓慢的场景中,为了避免因更新过程中光流长度过小而导致的改进运动历史图像整体偏暗现象,对(12)式进行修正得到适用于本研究的运动历史图像更新公式,即
其中,参数λ是光流长度的加权倍数,参数γ是光流长度的初始值,且λ和γ均为大于1的整数。在修正后的运动历史图像更新公式中,如果光流长度d(x,y,t)不大于阈值εs,则认为像素(x,y)为背景点,将其光流长度设置为0;如果光流长度d(x,y,t)大于阈值εs,则对原始光流长度放大λ倍并叠加上初始值γ。阈值εs的大小和具体应用场景有关,本文取经验值为15;从而解决了在目标运动速度较慢的研究场景中,因相邻两帧间的光流长度较小而导致的运动历史图像不清晰问题[17]。该修正中的经验值是本研究场景下的最佳经验值,不会影响行为识别的结果。按上述改进算法得到的运动历史图像如图1f所示。
2 行为分类
2.1 特征提取
区分性明显的改进运动历史图像是行为识别的基础[18],而从改进运动历史图像中提取特征向量,对行为识别的准确性起着关键作用。
对于灰度分布为H(x,y)的改进运动历史图像,其(p+q)阶几何矩(标准矩)定义为
其中p、q=0,1,2,…。
(p+q)阶中心矩定义为
其中,x0和y0代表图像的重心,x0=m10/m00,y0=
m01/m00,p、q=0,1,2,…。
归一化中心矩为
其中,r=(p+q+2)/2,p+q=2,3,…。利用二阶和三阶归一化中心矩能够得到7个不变矩,即
Hu在1962年把这7 个不变矩构成一组特征量,简称Hu矩[8],定义Hu矩I=[I1,I2,…,I7],并且证明了他们具有旋转、缩放和平移不变性,经常用于各种人体行为识别[19]任务,因此本文从改进运动历史图像中提取作为行为识别的特征向量。
2.2 支持向量机
支持向量机[20](support vector machine,SVM)是用于二分类任务的典型机器学习算法,它通过划分超平面对样本进行分类。支持向量机可以通过核函数将样本从线性不可分的样本空间映射到线性可分的高维特征空间,有着较好的分类性能。支持向量机支持多种核函数,根据输入样本集的大小,提取特征的维度,可以选择不同的核函数。多种核函数中 的 高 斯 核 函 数[21]即 径 向 基 函 数(radial basis function,RBF),其目的是希望通过将输入空间内线性不可分的数据映射到一个高维的特征空间内,使得数据在特征空间内是可分的。高斯核函数是一种具有强局部特性的核函数,灵活性高,对于大样本数量和小样本数量都有比较好的性能,而且其相较于其他核函数需要的参数更少,在多种核函数中应用最为广泛。在特征数量比较少、样本数量一般的情况下,通常优先选择高斯核函数。本文选择KTH人体行为识别数据库,属于较小的样本集;同时选择Hu矩阵作为特征向量,特征的维度相对于样本集属于维数较小的特征;基于这两个特点,本文后续实验均选择高斯核作为核函数。
人体行为具有多种形式,因此本研究是一个典型的多分类任务。在多分类场景中可以使用多分类器,也可以用多个二分类器组合成多分类器。而使用多分类器还是组合二分类器,主要看分类的类别是否互斥,如果互斥则用多分类器,如果不互斥则使用组合分类器[22]。由于本文的目标是实现行为识别,在行为识别真实场景下,多个行为可能同时发生,可能存在非互斥类别的分类,因此本文在后续实验中均选择支持向量机二分类器做分类。
为了将支持向量机用于本研究,将人体行为多分类任务拆分为若干个二分类任务,并为每一个二分类任务训练一个支持向量机分类器;测试时,通过集成若干个二分类的预测结果而得到最终的多分类结果。更具体地,本研究结合“一对其余”(one vs rest)[23]策略利用支持向量机来解决人体行为多分类问题。假设人体行为共有N个类别,每次将一个类作为正类,剩余其他的N-1个类别总和作为反类来训练N个支持向量机分类器;测试时,如果只有一个分类器将测试样本预测为正类,则将测试样本分类为该唯一正类所对应的标记,如果有多个分类器将测试样本预测为正类,则通过各个分类器的预测置信度[24]来确定最终分类结果,把置信度最高的类别预测为正类,将测试样本分为该正类所对应的标记。
3 实验结果
为验证所提方法的检测效果与实时性,基于KTH 数据集进行实验。KTH 数据集共含有599段视频序列,包括了25个人在4种不同场景下的6类 动 作(walking、jogging、running、boxing、hand waving、hand clapping),每段视频序列都以25帧/s的帧率拍摄,下采样可得到160×120 像素大小的图像[25]。
图2为基于一组KTH 视频序列的传统运动历史图像与改进运动历史图像的对比,由图可知传统运动历史图像对于运动的细节不能很好地体现,尤其是walking、jogging和running这3 类运动历史图像非常相似,在后续的行为分类阶段很难提取到具有区分性的特征向量并准确分类,从而导致行为识别结果不准确。而改进运动历史图像在细节上的差异比较明显,能更好地描述目标的局部运动,易于区分相似运动。
图2 改进运动历史图与传统运动历史图对比Fig.2 Confrontation of MHI and improved MHI
本文提出的改进运动历史图像,是在传统运动历史图像表达式(见(1)式)的基础上增加了α、β、λ、γ这4个参数,改进的运动历史图像表达式见(14)式。其中,参数α是前景像素的历史灰度保留率,参数β是背景像素的更新速率,且0<α,β<1;参数λ是光流长度的加权倍数,参数γ是光流长度的初始值,且λ和γ均为大于1的整数。
随着参数α的减小,光流长度占比增加,运动历史图像的最新细节信息越明显,因此本文在后续实验中,将参数α设置为0.3,经过实验验证取得了良好的行为分类效果。而参数β的设置就和我们实际应用的视频场景息息相关,参数β的大小随着运动目标的运动速度变化而变化。运动目标的运动速度越快,相应参数β设置的值越大;运动目标的运动速度越慢,参数β设置的值就越小。本文后续实验中使用的KTH 数据集,每类行为的运动速度都比较缓慢,故本文在后续实验中,将参数β设置为0.4,经实验验证取得了满足应用要求的行为分类效果。
由于人体行为分析这类目标的运动速度相对缓慢,为了避免因更新过程中光流长度对改进运动历史图像的影响,本文加入了参数λ和γ。随着参数λ的不断增加,运动历史图像更新的过程中光流长度不断增加,改进的运动历史图像不断由暗到亮。本文后续实验选择KTH 行为数据集,经过大量调参实验,当λ由2递增到6时,运动历史图像的亮度最佳,因此在后续实验中将参数λ设置为6,参数γ设置为25。
本文改进的运动历史图像算法,当α=0.3、β=0.4、λ=6且γ=25时,具体的实验效果如图2中的a3—f3所示。既体现了每种行为的细节信息,又合适地更新了背景像素,有区分度地描述了每类行为的特征和运动趋势。
对KTH 数据集在SVM 分类器上采用10 次10折交叉验证,即每次将KTH 数据集随机划分为10个互斥子集,轮流将其中9个子集作为训练集,剩余的一个子集作为测试集进行10 轮实验,取这10 轮实验结果的平均值作为一次行为识别结果。按照上述操作进行10次实验,取这10次行为识别结果的均值作为最终的识别结果。最终结果如图3所示,walking 类和jogging 类的识别率分别为98.1%和98.7%,其他类的识别精度均达到99%以上,能够满足行为识别的需求。
为了更加直观地描述本文提出的改进运动历史图像(MHI)的优势,本文在KTH 数据集上,分别使用传统的MHI和改进的MHI对视频提取特征向量,然后将两种运动历史图像得到的特征向量分别输入到SVM 分类器中进行“一对其余”分类,从而实现基于传统MHI的行为识别和基于改进MHI的行为识别。对比结果如表1 所示,相较于传统MHI,改进后的MHI分类准确率提高了30%左右,效果提升最明显的是jogging行为,比传统方法提升了35.3%的分类准确率。通过表1 中的数据我们不难得出基于改进MHI 的行为分类算法对walking、jogging和running这3类相似行为的分类准确度提升明显,均提升了30%以上。由改进后的MHI得到的特征向量,对类似行为间的识别变得更为可靠。改进MHI在细节上的差异比较明显,能更好地描述目标的局部运动,易于区分相似运动。优化了基于传统MHI提取相似行为特征向量区分度较低的缺点。
图3 KTH 数据集上的混淆矩阵Fig.3 Confusion matrices on KTH datasets
表1 传统MHI与改进MHI的准确率对比Tab.1 Comparison of the accuracy of traditional MHI with improved MHI 单位:%
对区域光流和传统完整光流的输入图像面积和运行时间进行统计,并绘制出图4,图像横坐标为目标外接矩形面积与完整图像面积之比sr/st,纵坐标为区域光流与整体光流用时之比tr/tt。由图可知,tr/tt和sr/st大体成正比关系,即光流法的计算用时随着图像面积正比例增加。而在KTH 数据集中,sr/st多处于0.15~0.3之间,因此与传统的完整光流相比,本文改进算法中的区域光流可以节约大量时间,极大地满足了实时性需求。在Intel Core i5 3.20GHz的处理器上通过C++编程实现,以160×120像素大小的图像作为输入,处理速率可达55帧/s。
图4 光流用时与输入图像面积的关系Fig.4 The relation of optical flow time and image area
4 结语
本文提出了一种基于改进运动历史图像和支持向量机的行为识别方法。该方法通过对运动目标所在的外接矩形计算区域光流,然后设置运动历史图中每个像素的灰度值由其像素位置处的光流长度和历史灰度进行累积并以一定比例衰减的形式更新,最后利用SVM 分类器对从运动历史图中提取的Hu矩进行分类,判定目标行为。该方法能有效地记录人体局部动作,更好地区分相似行为;区域光流也大大节约了算法运行时间。实验结果表明,算法在KTH 数据集上的识别率达到99%,速率可达55帧/s,满足行为识别任务的准确性和实时性要求。本文在小型行为视频库上的实验效果比较理想,后续研究将对算法进一步改进,大幅提高对微小动作和噪声干扰较大的动作识别能力。