一种基于时空显著性区域检测的人体行为分析方法
技术领域
本发明涉及视频分析技术领域,具体涉及一种基于时空显著性区域检测的人体行为分析方法。
背景技术
基于视频的人体行为分析属于视频分析领域,由于人体行为具有姿态形变、视角变化、时长差异、尺度不一等多变性,且视频图像易受到相机抖动、光照变化的影响,使得基于视频的人体行为分析成为一个亟待解决的难题。
人体行为分析的方法主要大致可以分为基于人体模型跟踪、基于光流直方图以及基于局部时空特征的方法三大类。基于人体模型跟踪的方法要求提取精确的人体模板,该方法的鲁棒性相对较差。基于光流直方图的方法采用光流直方图进行人体动作识别。但是光流对背景噪音以及不同光照强度的鲁棒性很差。基于局部时空特征的方法通过滤波和非极值抑制法提取出兴趣点,并进一步提取人体动作的局部时空特征作为识别的依据,该方法适用于低分辨率的视频数据,并且局部时空特征的提取对尺度伸缩、拍摄视角和光照亮暗与否不敏感。
基于视频的人体行为分析主要包括两个部分:目标运动区域检测和人体行为分析。目标运动区域检测对视频图像进行特定目标的提取,检测出目标运动区域,有利于提升人体行为分析的精度。静态图像目标检测的优点是可以利用空间结构显著性提取出各类目标,缺点在于缺少时间序列分析,导致感兴趣的显著运动区域表达不准确,而且特定目标(如人体或物体)之间缺乏关联语义分析,从而影响人体行为识别的精度。如果同时使用连续视频帧进行时间显著性分析,通过混合高斯模型来判断提取出前景目标的有效运动区域,就可以结合基于空间显著性的目标运动区域,合理分析视频中人体行为活动的所属类别。
发明内容
本发明提供一种基于时空显著性区域检测的人体行为分析方法,其能够实现对连续视频帧中的人体行为进行分析。
为解决上述问题,本发明是通过以下技术方案实现的:
一种基于时空显著性区域检测的人体行为分析方法,包括步骤如下:
步骤1.利用数据集作为训练集,训练基于卷积神经网络的Faster R-CNN模型;
步骤2.将输入视频分割为视频图像帧,并利用步骤1训练出的Faster R-CNN模型,检测视频图像帧中的人体目标区域;
步骤3.分析步骤2得到的人体目标区域,生成基于空间显著性的前景目标运动区域;
步骤4.利用视频图像帧的时序信息,通过块匹配来寻找整个图像的各个点在视频数据中的位移,并建立运动矢量场;
步骤5.利用基于混合高斯模型的概率密度,从步骤4所建立的运动矢量场中找出感兴趣区域矢量,感兴趣区域矢量即构成基于时间显著性的前景目标运动区域;
步骤6.合并步骤3的基于空间显著性的前景目标运动区域和步骤5的基于时间显著性的前景目标运动区域,得到前景目标时空显著性区域;
步骤7.对步骤6生成输入视频数据的前景目标时空显著性区域,进行特征采样和特征预处理;
步骤8.用提前训练好的混合高斯模型,对特征采样和特征预处理后的前景目标时空显著性区域,进行编码量化和池化操作;
步骤9.用提前训练好的分类器,对编码量化和池化操作后的前景目标时空显著性区域,进行人体行为分析识别;
步骤10.将分析识别结果写入对应视频片段的前景目标时空显著性区域框中。
上述步骤3的具体为:
设当前图像帧人体目标区域的左上角坐标(x1,y1)和右下角坐标(x2,y2),上一图像帧人体目标区域的左上角坐标(x′1,y′1)和右下角坐标(x′2,y′2),下一图像帧人体目标区域的左上角坐标(x″1,y″1)和右下角坐标(x″2,y″2);
先将x1与x′1进行比较,当|x1-x′1|大于设定阈值n时,将x1更新为x1和x′1中的较小值,否则,保持x1不变;再将x1与x″1进行比较,当|x1-x″1|大于设定阈值n时,将x1更新为x1和x″1中的较小值,否则,保持x1不变;
同理,先将y1与y′1进行比较,当|y1-y′1|大于设定阈值n时,将y1更新为y1和y′1中的较小值,否则,保持y1不变;再将y1与y″1进行比较,当|y1-y″1|大于设定阈值n时,将y1更新为y1和y″1中的较小值,否则,保持y1不变;
先将x2与x′2进行比较,当|x2-x′2|大于设定阈值n时,将x2更新为x2和x′2中的较大值,否则,保持x2不变;再将x2与x″2进行比较,当|x2-x″2|大于设定阈值n时,将x2更新为x2和x″2中的较大值,否则,保持x2不变;
同理,先将y2与y′2进行比较,当|y2-y′2|大于设定阈值n时,将y2更新为y2和y′2中的较大值,否则,保持y2不变;再将y2与y″2进行比较,当|y2-y″2|大于设定阈值n时,将y2更新为y2和y″2中的较大值,否则,保持y2不变;
由此所得到更新后当前图像帧人体目标区域的左上角坐标(x1,y1)和右下角坐标(x2,y2)即为最终所确定的基于空间显著性前景目标运动区域。
上述步骤3中,基于空间显著性前景目标运动区域采用对角线拉伸变化方式,即
图像帧人体目标区域的左下角坐标的横坐标与左上角坐标的横坐标始终一致,图像帧人体目标区域的左下角坐标的纵坐标与右下角坐标的纵坐标始终一致;
图像帧人体目标区域的右上角坐标的横坐标与右下角坐标的横坐标始终一致,图像帧人体目标区域的右上角坐标的纵坐标与左上角坐标的纵坐标始终一致。
上述步骤5的具体子步骤为:
步骤5.1.分别计算图像中的各个点在连续t帧的水平位移和垂直位移;
步骤5.2.根据混合高斯模型,利用步骤5.1所得水平位移和垂直位移计算出各个点的所指MB宏块的概率密度;
步骤5.3.将步骤5.2所得各个点的所指MB宏块的概率密度与概率密度阈值进行比较;如果点的概率密度小于设定概率密度阈值,则该点所指MB宏块属于感兴趣区域矢量;否则,该点所指MB宏块不属于感兴趣区域矢量;
步骤5.4.步骤5.3所得感兴趣区域矢量即构成基于时间显著性的前景目标运动区域。
上述步骤6中,前景目标时空显著性区域为基于空间显著性的前景目标运动区域和基于时间显著性的前景目标运动区域的并集。
与现有技术相比,本发明使用连续视频帧进行时间显著性分析,有助于提取出前景目标的有效运动区域,结合使用实践于混合高斯模型空间显著性的目标运动区域检测,可以合理分析视频中的人体行为活动的所属类别。
附图说明
图1为一种基于时空显著性区域检测的人体行为分析方法的流程图。
图2为根据块匹配来寻找任意点(x,y)的运动矢量;其中(a)为第i帧的任意点(x,y)的建立N×N非重叠的MacroBlock(MB)fi,(b)下一帧中fi+1(M+N)×(M+N)区域。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实例,并参照附图,对本发明进一步详细说明。
一种基于时空显著性区域检测的人体行为分析方法,如图1所示,其具体包括如下步骤:
步骤1:利用数据集作为训练集,训练基于卷积神经网络的Faster R-CNN模型。
步骤1.1:准备数据集PACSAL VOC 2007作为训练集;
步骤1.2:将步骤1.1所得到的训练集图像调整成M×N像素大小的网格图像块并放人ZF网络(short for Zeiler&Fergus Net)前5层中做特征提取,输出256个M/16*N/16大小的特征图;
步骤1.3:用3*3卷积核与特征图进行卷积,得到256维特征向量,作为RPN(区域候选网络)的第一层得到的特征向量输入两个并行的分类层和回归层,根据正样本中前景概率的得分高低,选取得分高的前300个候选框;
步骤1.4:使用ROI_Pooling层将步骤1.3的300候选框映射到ZF网络的第五层卷积后得到的特征图输入到连接层fc6、fc7,最终得到1*4096维特征;
步骤1.5:将步骤1.4的1*4096维特征,输入到两个并行的全连接层cls_score层和bb_predict层,cls_score层用于分类,输出背景的概率和K类样本的概率,其中,K是样本类别数,bbox_predict层用于调整候选框的[x′,y′,w′,h′],x′为调整后的候选框左上角角横坐标,y′为调整后的候选框左上角角纵坐标,w′为调整后的候选框的宽度,h′为调整后的候选框的高度;
步骤1.6:训练过程判断迭代次数是否小于阈值,如果不大于阈值,转到1.3,否则结束。训练网络时学习速率初始值设定为预设阈值lr=0.01(不同应用场景的阈值可能不同),每当当前迭代次数达到步长值的整倍数时,学习速率衰减一次,当前迭代次数达到总迭代次数时,结束,衰减后的lr=lr*gmma,其中,预设阈值gmma=0.1(不同应用场景的阈值可能不同),迭代次数≤总迭代次数。最终得到一个后缀为.caffemodel的模型。
步骤2:将输入视频分割为视频图像帧,并利用步骤1训练出的Faster R-CNN模型,检测视频图像帧中的人体目标区域。
首先采用caffe中的Net函数初始化步骤1训练好的网络模型,用多线程处理输入的多路视频,再用OpenCV的VideoCapture函数捕获视频流,最后将视频流分割成视频图像帧,将新的视频图像帧加入作业队列中,并将人体目标区域位置写入bb_file文件。
步骤3:分析步骤2得到的人体目标区域,生成基于空间显著性的前景目标运动区域。
在本实施例中,基于空间显著性前景目标运动区域采用对角线拉伸变化方式,即图像帧人体目标区域的左下角坐标的横坐标与左上角坐标的横坐标始终一致,图像帧人体目标区域的左下角坐标的纵坐标与右下角坐标的纵坐标始终一致;图像帧人体目标区域的右上角坐标的横坐标与右下角坐标的横坐标始终一致,图像帧人体目标区域的右上角坐标的纵坐标与左上角坐标的纵坐标始终一致。
设当前图像帧的左上角坐标(x1,y1)和右下角坐标(x2,y2),上一图像帧的左上角坐标(x′1,y′1)和右下角坐标(x′2,y′2),下一图像帧的左上角坐标(x″1,y″1)和右下角坐标(x″2,y″2);
先将x1与x′1进行比较,当|x1-x′1|大于设定阈值n时,将x1更新为x1和x′1中的较小值,否则,保持x1不变;再将x1与x″1进行比较,当|x1-x″1|大于设定阈值n时,将x1更新为x1和x″1中的较小值,否则,保持x1不变;
同理,先将y1与y′1进行比较,当|y1-y′1|大于设定阈值n时,将y1更新为y1和y′1中的较小值,否则,保持y1不变;再将y1与y″1进行比较,当|y1-y″1|大于设定阈值n时,将y1更新为y1和y″1中的较小值,否则,保持y1不变;
先将x2与x′2进行比较,当|x2-x′2|大于设定阈值n时,将x2更新为x2和x′2中的较大值,否则,保持x2不变;再将x2与x″2进行比较,当|x2-x″2|大于设定阈值n时,将x2更新为x2和x″2中的较大值,否则,保持x2不变;
同理,先将y2与y′2进行比较,当|y2-y′2|大于设定阈值n时,将y2更新为y2和y′2中的较大值,否则,保持y2不变;再将y2与y″2进行比较,当|y2-y″2|大于设定阈值n时,将y2更新为y2和y″2中的较大值,否则,保持y2不变;
由此所得到更新后当前图像帧的左上角坐标(x1,y1)和右下角坐标(x2,y2)即为最终所确定的基于空间显著性前景目标运动区域。
步骤4:利用视频图像帧的时序信息,通过块匹配来寻找该块在视频数据中的最佳位移,以便于建立运动矢量场。
步骤4.1:对视频图像帧连续的两帧i和i+1,对i帧的点(x,y)的建立N×N非重叠的宏块MacroBlock(MB)fi,在下一帧中fi+1(M+N)×(M+N)区域里搜索最相似的块作为(x,y)的运动矢量,如图2;
其中M=2×N,
是水平位移,
是垂直位移,e(x,y,u,v,i)可表示为:
步骤4.2:由步骤4.1的点(x,y),对
构造运动矢量场
w和h分别对应于视频帧中的宽度和高度。
步骤5:利用基于混合高斯模型,从步骤4所建立的运动矢量场中找出感兴趣区域矢量,感兴趣区域矢量即为基于时间显著性的前景目标运动区域。
步骤5.1:计算点(x,y),连续t帧的水平位移
和垂直位移
其中
和
分别为
其中
为第i帧到第i+1帧上的水平方向的位移,
为第i帧到第i+1帧上的垂直方向的位移;
步骤5.2:由步骤5.1得到的水平位移
和垂直位移
可以根据混合高斯模型,计算出点(x,y)所指MB宏块的概率密度:
其中,K表示有K个高斯模型,
表示第i帧(x,y)坐标点所指MB宏块在水平垂直方向上的位移
是连续t帧偏移量
形成的高斯分布,θ表示高斯模型的三个参数π
k、μ
k和σ
k,这3个参数分别表示第k个混合高斯的权重、均值和方差;
步骤5.3:T1为预设阈值(不同应用场景的阈值可能不同),如果概率密度P小于阈值T1,那么点(x,y)所指MB宏块的运动矢量属于感兴趣的运动矢量MVI(Motion Vector ofInterest);否则不属于MVI。MVI可表示为:
步骤5.4:步骤5.3所得感兴趣区域矢量即为基于时间显著性的前景目标运动区域。
步骤6:合并步骤3所得的基于空间显著性的前景目标运动区域和步骤5所得的基于时间显著性的前景目标运动区域,即取两者的并集,即可得到前景目标时空显著性区域。
步骤7:对于单路视频片段,根据步骤6的前景目标时空显著性区域,进行特征采样和特征预处理。
得到的前景目标综合运动区域需要通过特征点对和随机采样一致性修正光流场,先用
算法求出当前视频帧的稠密光流场矢量ω
t,通过前后两帧的SURF特征点和关键特征强角点组成特征点对,再用RANSAC算法和这些特征点对求出修正后的光流场矢量ω′
t;
通过修正光流场矢量ω′t,记录关键特征强角点pt在t+1帧的位移坐标pt+1,公式如下:
其中M表示中值滤波器的核,(xt,yt)表示角点pt+1在视频帧的坐标位置。
步骤8:用提前训练好的混合高斯模型,对单路视频片段的目标时空显著性区域进行编码量化和池化操作;
利用预先训练好的GMM,可使用vlfeat工具箱的vl_gmm函数进行字典(码本)学习,然后再调用vlfeat工具箱的vl_fisher函数对视频进行编码量化后生成码字;
根据GMM模型对视频进行编码量化的Fisher Vector(FV)可表示为:
其中πk、μk、σk分别表示第k个混合高斯的权重、均值和方差,但是这三个参数的值与步骤5.1完全不同,γk表示特征向量fea(如DT、IDT等)对于第k个高斯模型的权重:
经过GMM+FV编码生成的码字,即fisher vectors是将所有
和
串联后形成的2DK维向量(即码字)。
步骤9:用提前训练好的分类器,对单路视频片段的目标时空显著性区域进行人体行为分类类别。
在步骤8中得到了对应视频量化后的数据,利用支持向量机(SVM)训练分类超平面,生成多个指定行为类别的二分类器,然后使用这些训练好的分类器预测新视频中人体行为的类别。调用libsvm工具箱中的svmtrain函数完成分类器的训练。
支持向量机训练分类超平面的方法可表示为:
输入:线性可分的m个样本(xvec1,ylabel1),(xvec2,ylabel2),…,(xvecm,ylabelm),其中xvec为特征向量,ylabel为对应视频样本所属的行为类别,其值为1或-1,分别代表正样本或负样本。
输出:分离超平面的参数w*,b*和分类决策函数。
得到的分类决策函数:
f(x)=sign(w*·xvec+b*),
其中,w*是法向量,b*是截距,xvec是码字。
在预测过程中,根据分类决策函数计算得当前视频与所有预先训练的样本对比的得分(相似概率),对得分进行降序排列,从中选出前三个行为类别,如果最大得分小于阈值(不同应用场景的阈值可能不同),则认为此视频中的行为是未知行为。
步骤10:将分析识别结果写入对应视频片段的目标时空显著性区域框。
在视频中写入从步骤6得到的前景时空显著性区域,用红色目标框标注人体目标区域,并在对应的目标框写入分析识别行为的类别,以及所属类别的概率,从而得到显著性区域的人体行为分析结果。
本发明利用数据集训练Faster R-CNN模型;输入多路视频并将单路视频分割成视频图像帧;对分割的视频图像帧使用Faster R-CNN模型进行目标检测;分析目标检测结果并重新计算目标候选框;对单路视频使用块匹配构造运动矢量场;通过运动矢量场计算感兴趣区域的运动矢量,用混合高斯模型计算出的概率选定前景显著运动区域;根据目标候选框和显著运动区域合成时空显著性区域;对目标时空显著性区域进行特征采样和特征预处理;对视频的目标时空显著性区域进行编码和池化;对视频的时空显著性区域进行人体行为分析识别;将分析识别结果写入时空显著性区域框。
需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。