本发明涉及图像处理技术领域,特别是一种基于视频序列深度学习的人物行为语义识别方法。
背景技术:
图像处理技术是指用计算机对图像进行分析,以达到所需结果的技术,一般指数字图像处理。数字图像指用拍摄设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。利用图像压缩技术能将二维像素阵列以一维的特征向量来表示,从而大大的减少了对图像运算所需的时间。
rbf神经网络是人工神经网络的一种,是一种对人脑神经元进行抽象的运算模型,有大量的结点(神经元)之间相互连接构成。每个节点代表一个特定的输出函数,称为激励函数。每两个节点间的连接都代表一个对于通过该连接的加权值,称为权重,这相当于神经网络的记忆。rbf神经网络通过训练来修改权值等参数,使目标函数不断逼近最小或最大值,从而达到识别的效果。
目前的计算机视觉技术很难准确地从视频中提取出人的运动特征,如何寻找到人物动作的特征值成为识别正确性的关键。人物轮廓特征比较容易获得且对纹理变化不敏感,是作为神经网络训练的一个不错的选择,但目前基于质心-边界距离描述方法,星型骨架发等方法提取到的轮廓特征对质心依赖性较高,导致其对遮挡、数据丢失以及形变等情况鲁棒性交差。
技术实现要素:
本发明所要解决的技术问题是克服现有技术的不足而提供一种基于视频序列深度学习的人物行为语义识别方法,利用人物轮廓的特征对rbf神经网络进行训练和检测,对检测结果进行编码并将关键姿态串联成编码序列与动作库作比对,从而对人物行为语义进行识别。
本发明为解决上述技术问题采用以下技术方案:
根据本发明提出的一种基于视频序列深度学习的人物行为语义识别方法,包括以下步骤:
步骤1、定义视频镜头s={f1,f2,...,fn},s为集合,fi为第i个镜头帧,fi用大小为r*l的二维矩阵表示,其中,i=1,2,...,n,n为镜头帧总数,r为矩阵行数,l为矩阵列数;
建立运动分析模型,提取s中的子集k={k1,k2,...,km},kq为k中第q个元素,q=1,2,...,m,m为k的元素个数且m<n,提取k的具体步骤如下:
步骤11)定义d(fi)为矩阵fi中不为0的元素的个数,令k=k1=f1,q=i=2,k为临时变量;
步骤12)计算fi与k之间的差异值o=d(k-fi)/(r*l)*100%,若o>δ,δ为差异阈值,则k=kq=fi,q=q+1,i=i+1;若o≤δ,则i=i+1;
步骤13)重复步骤12)直到q=m或i=n为止;
步骤2、对子集k进行预处理获得运动前景,具体步骤如下:
定义背景模型为μ,当前画面为x,对x中的每个像素点j,计算d(j)=x(j)-μ(j);若d(j)≥λε(j),则判定j为前景点;若d(j)<λε(j),则判定j为背景点,其中,x(j)为当前画面x第j个像素点的色彩值,μ(j)为背景模型μ第j个点的像素值,λ为调节参数,ε(j)为色差阈值;
步骤3、对步骤2得到的运动前景进行边缘检测,得到只含人物外轮廓的图像;
步骤4、采用傅里叶描述子提取轮廓特征,用一维特征表示二维轮廓;具体步骤如下:
步骤41)将人物外轮廓的图像上的有序点集(xt,yt)转换到复平面上,形成一维序列zt=xt+vyt,t=1,2,...,n,t代表人物外轮廓上第t个像素点,(xt,yt)为该像素点的横坐标和纵坐标,n为轮廓像素总个数,v为虚数单位;
步骤42)计算离散傅里叶变换:
步骤5、预定义期望输出值d,将步骤4)计算出的特征向量ft和d作为rbf神经网络的输入值对网络进行训练;构建rbf神经网络的具体步骤如下:
步骤51)用随机函数随机初始化径向基函数中心cg,方差σg和隐含层到输出层的权值wg,计算输出值
步骤52)计算步骤51)中的输出值yd和预定义期望输出值d的均方误差
其中,f为高斯核函数;η为神经网络学习速率;yii代表第ii个神经元的输出值;
步骤53)重复步骤52)直到e≤γ,rbf神经网络训练结束,该网络包含确定的参数cg,方差σg和权值wg;
步骤6、对视频序列识别出的结果进行编码,利用rbf神经网络进行人物行为识别,具体步骤如下:
步骤61)结合步骤1-4,得到集合k′={f1′,f2′,...,fm′},fq′为kq对应的特征向量,利用步骤5)训练得到的rbf神经网络对k′进行识别并得到编码序列t={t1,t2,...,tm},tq为fq′经过rbf神经网络预测得到的编码;
步骤62)利用步骤61)得到的编码序列t对动作库中已存在的编码作比对,找到序列t所对应的动作即为识别结果。
作为本发明所述的一种基于视频序列深度学习的人物行为语义识别方法进一步优化方案,所述步骤3具体步骤如下:
步骤31)定义f(x,y)为通过步骤2获得的运动前景在点(x,y)处的灰度值,对于给定的二维高斯滤波函数
步骤32)计算g中像素点(x,y)的梯度值
步骤33)定义中间变量w,g1,g2,g3,g4,对步骤32)得到的梯度值进行判断:如果|dx(x,y)|<|dy(x,y)|且dx(x,y)与dy(x,y)同号,则w=|dx(x,y)|÷|dy(x,y)|,g1=d(x-1,y-1),g2=d(x-1,y),g3=d(x+1,y+1),g4=d(x+1,y);如果|dx(x,y)|<|dy(x,y)|且dx(x,y)与dy(x,y)异号,则w=|dy(x,y)|÷|dx(x,y)|,g1=d(x-1,y+1),g2=d(x,y-1),g3=d(x+1,y-1)g4=d(x,y+1);如果|dx(x,y)|>=|dy(x,y)|且dx(x,y)与dy(x,y)同号,则w=|dx(x,y)|÷|dx(x,y)|,g1=d(x+1,y+1),g2=d(x,y-1),g3=d(x-1,y-1),g4=d(x,y+1);如果|dx(x,y)|>=|dy(x,y)|且dx(x,y)与dy(x,y)异号,则w=|dy(x,y)|÷|dx(x,y)|,g1=d(x-1,y+1),g2=d(x,y-1),g3=d(x+1,y-1),g4=d(x,y+1);
步骤34)利用步骤33)得到的w,g1,g2,g3,g4,计算gtmp1=w*g1+(1-w)*g2,gtmp2=w*g3+(1-w)*g4,若d(x,y)>=gtmp1且d(x,y)>=gtmp2,则g(x,y)=d(x,y),否则g(x,y)=0,gtmp1,gtmp2为中间变量。
作为本发明所述的一种基于视频序列深度学习的人物行为语义识别方法进一步优化方案,步骤4中傅里叶描述子是假定物体的形状是一条封闭的曲线,沿边界曲线上一个动点的坐标变化是一个以形状为边界的周期函数,这个周期函数用傅里叶级数展开表示,傅里叶级数中的一系列系数是直接与边界曲线的形状有关,称为傅里叶描述子。
作为本发明所述的一种基于视频序列深度学习的人物行为语义识别方法进一步优化方案,步骤2中调节参数λ取0.4。
作为本发明所述的一种基于视频序列深度学习的人物行为语义识别方法进一步优化方案,步骤3中α=0.6。
作为本发明所述的一种基于视频序列深度学习的人物行为语义识别方法进一步优化方案,步骤6)中对视频序列识别出的结果以字符编码表示。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
(1)本发明利用人物轮廓的特征对rbf神经网络进行训练和检测,对检测结果进行编码并将关键姿态串联成编码序列与动作库作比对,从而对人物行为语义进行识别;
(2)本发明通过图像二值化处理和canny边缘检测等技术对图像进行预处理,提取出需要识别的关键信息,减少光照,阴影,颜色等无关因素的干扰,提高识别的准确度;
(3)本发明提出了用傅里叶描述子提取轮廓特征,将二维的轮廓转换为一维的向量,减少运算的时间和空间复杂性;
(4)本发明通过构建rbf神经网络对人物的轮廓特征进行学习与识别,以一定的学习速率不断逼近目标函数最优值,起到较好的识别效果。
附图说明
图1是基于视屏序列深度学习的人物行为识别方法流程。
图2是构建的rbf神经网络示例图。
具体实施方式
下面对本发明使用的基于视频序列深度学习的人物行为识别具体实施例作更详细的描述。
根据附图1所示基于视频序列深度学习的人物行为识别方法对应的流程图,附图2所示rbf神经网络对应的示例图,本发明具体实施方式为:
1)输入一个视频序列s={f1,f2,...,f30},fi为第i个镜头帧,用大小为30*30的二维矩阵表示,建立运动分析模型,提取s中的子集k={k1,k2,...,k7},计算fi与临时变量k之间的差异值o,计算o的具体步骤如下:
11)令k=k1=f1,q=i=2,设差异阈值δ为0.3,从f2开始遍历序列s,假设当前帧为f2,计算差异值
13)重复步骤12)直到q=7或i=30为止。
2)用背景减除法对集合k预处理获得运动前景,具体步骤如下:
21)假设通过步骤1)得到的关键帧序列k={f1,f5,f9,f14,f19,f24,f29},视频背景模型为μ,以当前画面x=f1为例,计算x中的像素点与μ中像素点的色彩差异值d(j)=x(j)-μ(j),当d(j)满足判定方程:
d(j)≥λε(j),判定j为前景点;
d(j)<λε(j),判定j为背景点。对k中其余元素做同样处理。
3)用步骤2得到的运动前景进行边缘检测,得到只含人物外轮廓的图像,具体步骤如下:
31)以关键帧f1为例对f1做高斯滤波,对f1中的每个像素点(x,y)计算,
32)利用步骤31)得到的图像g,计算g中像素点(x,y)的梯度值。这里以像素点(3,4)为例,设g(3,4)=1,g(3,5)=2,g(4,4)=3,由公式dx(x,y)=g(x,y+1)-g(x,y),dy(x,y)=g(x+1,y)-g(x,y)计算可得dx(3,4)=1,dy(3,4)=2;由公式
33)定义中间变量w,g1,g2,g3,g4。对步骤32)得到的梯度值进行判断。以像素点(3,4)为例,假设d(2,3)=5,d(2,4)=6,d(4,5)=7,d4,4)=8。因为dx(3,4)<dy(3,4)且dx(3,4)与dy(3,4)同号号,所以
34)利用步骤33)得到的中间变量w,g1,g2,g3,g4,计算gtmp1=w*g1+(1-w)*g2,gtmp2=w*g3+(1-w)*g4,以像素点(3,4)为例,计算得gtmp1=5.5,gtmp2=7.5。因为d(3,4)=1<gtmp1d所以g(x,y)=0。
4)采用傅里叶描述子提取轮廓特征,用一维特征表示二维轮廓;具体步骤如下:
41)把步骤3)中得到的轮廓图像k的轮廓曲线上的有序点集(xt,yt)转换到复平面上,并设轮廓像素数为10,形成一维序列zt=xt+vyt,t=1,2,...,n。
42)计算离散傅里叶变换:
5)构造rbf神经网络如图2所示,假设由步骤4)得到的ft1的轮廓特征为ft1={0.43,0.36,0.25,0.71,0.59,0.54,0.38,0.26,0.55},预定义期望输出值d。
51)随机初始化径向基中心cg,方差σg和隐含层到输出层的权值wg,随机得到的结果为:cg=0.8,σg=1,wg={0.4,0.6,0.5,0.8,0.3}。由公式
52)计算步骤51)中的输出值yd和期望输出值d的均方误差
53)重复步骤52)直到e≤γ,进过19次迭代,算出最终cg=0.46,σg=0.78,wg={0.28,0.48,0.38,0.68,0.18},rbf神经网络训练结束。
6)对视频中的关键帧识别出的姿态进行编码,利用rbf神经网络进行人物行为识别,具体步骤如下:
61)由步骤4)得到视频序列表示如下:
由步骤5)训练得到的rbf神经网络对k进行训练得到识别结果:t=[1145567]。
61)利用步骤61)得到的编码序列t对动作库中已存在的编码作比对,找到序列t所对应的动作为“起立”,即为识别结果。