一种基于图像相似度的手势图像关键帧提取方法与流程

文档序号:18705538发布日期:2019-09-17 23:38阅读:609来源:国知局
一种基于图像相似度的手势图像关键帧提取方法与流程
本发明属于关键帧提取方法,尤其涉及一种基于图像相似度的手势图像关键帧提取方法。
背景技术
:手势视频关键帧提取是动态手势识别过程中的关键步骤,是视频结构化分析的重要问题,对手势视频进行关键帧提取,降低了数据复杂度,提升了手语识别算法的实时性,保证关键帧的提取效果是实现手语准确识别的重要条件。如何判定手语视频中的动作关键帧始终是一个难点,这主要是因为手势变化幅度比较小,不容易进行关键帧的判定,进行关键帧提取时容易出现关键帧冗余的情况。目前常见的手势分割技术有视频分割法、首尾帧和中间帧法、基于颜色、纹理、形状特征法、基于运动信息法、基于聚类方法等。视频关键帧提取的方法多种多样,但是在实际提取过程中,由于手势变化幅度较小,常常会出现提取的关键帧较少或者关键帧冗余的情况,关键帧的提取成功与否直接影响到手语识别的精度。当前手势视频关键帧提取的主要挑战如下:1)在利用视频镜头分割算法时,提取的关键帧数量固定,代表性不强;2)在利用颜色、纹理、形状等视觉特征信息进行比较衡量相似度时,对视频内容变化和特征的选择敏感,容易提取过多的关键帧而造成信息冗余;3)在基于运动信息的关键帧提取时,对于运动信息的计算量比较大,对于运动量的局部极小值的确定不精确,提取的关键帧鲁棒性不强;4)对于变化幅度比较小的视频,往往会出现关键帧冗余或关键帧漏检的问题。技术实现要素:为了解决关键帧冗余和关键帧漏检的问题,本发明提出了一种基于图像相似度的手势图像关键帧提取方法,是一种针对手语视频这种动作幅度变化较小的视频关键帧提取方法。本发明提出利用mobilenet-ssd目标检测模型实现手势图像的分类,对不同类的手势图像进行批次处理,利用余弦距离计算图像的相似度,得到动态图像序列的关键帧提取和静态手势图像的关键帧预提取,利用vgg-16网络模型提取手部抽象特征,不仅使得图像的表达能力大大增强,降低了参数量,减小了模型的复杂度,而且对预提取的静态手势能够做到再次提取,降低了静态手势关键帧的数量,适用于这种小幅变化的视频关键帧提取。本发明采用的技术方案如下:本发明包括以下步骤:1)读取手势视频,然后将手势视频转换为手势视频帧图像。2)通过mobilenet-ssd目标检测模型训练得到手势检测模型,利用手势检测模型对所有手势视频帧图像中的手势进行分类,得到静态手势图像和动态手势图像。3)将步骤2)得到动态手势图像进行余弦距离的计算,通过计算相邻两帧动态手势图像的相似度,完成动态手势关键帧的提取。4)将步骤2)所得到的静态手势图像进行余弦距离的计算,通过计算相邻两帧静态手势图像的相似度,完成静态手势图像初始关键帧的提取。5)将步骤4)静态手势图像的初始关键帧输入cnn网络模型训练输出后,得到初始关键帧的抽象特征;所述cnn网络模型采用vgg16训练模型,vgg-16训练模型中的block2-pool层作为输出层。6)对初始关键帧的抽象特征进行空间梯度计算,并根据计算得到的空间梯度值绘制梯度直方图。7)根据相邻两帧静态手势图像初始关键帧的梯度值差异,绘制差值折线图,通过差值折线图的波动情况设定自适应阈值,根据阈值完成静态手势图像最终关键帧的提取。8)将静态手势图像的最终关键帧和动态手势图像的关键帧进行合并,完成手势视频帧图像的关键帧提取。所述步骤2)具体为:2.1)从所有手势视频帧图像中随机选取1500张手势视频帧图像,利用labellmg标注工具对1500张手势视频帧图像中的手势进行标记,并将标记的手势分类为动态手势和静态手势;标记有动态手势的手势视频帧图像分类为动态手势图像,标记有静态手势的手势视频帧图像分类为静态手势图像;2.2)按3:1的比例将步骤2.1)标记后的且经过动态手势图像和静态手势图像分类的手势视频帧图像分为训练集和测试集;2.3)将训练集和测试集输入mobilenet-ssd目标检测模型中,训练得到手势检测模型;2.4)将所有手势视频帧图像输入步骤2.3)的手势检测模型进行手势检测后,所有手势视频帧图像被分类为静态手势图像和动态手势图像,从而得到静态手势图像子集和动态手势图像子集。所述步骤2.1)中,静态手势为两手悬置于大腿两侧的手势,动态手势为除静态手势之外的手势。所述步骤3)提取动态手势关键帧的方法具体为:3.1)将步骤2)得到的动态手势图像进行图像大小归一化处理;3.2)分别用两个向量a、b表示相邻两帧动态手势图像;动态手势图像用向量表示的方法为:遍历动态手势图像中的所有像素点,并获取图像中每个像素点的rgb值,对每个像素点的r、g、b值进行平均值计算,将所有像素点的平均值存入向量中,该向量即为对应动态手势图像的向量;3.3)计算相邻两帧动态手势图像对应的两个向量的l2范数a_norm和b_norm,计算公式如下:其中,‖x‖表示向量的l2范数,xi表示向量中的每个数值,n表示向量的长度;3.4)将相邻两帧手势图像对应的两个向量及向量对应的l2范数进行点积计算获得相邻两帧手势图像的相似度similarity,点积计算的计算公式如下:cos(θ)表示相邻两张手势图像对应的两个向量的夹角余弦值,图像相似度similarity用cos(θ)表示;a、b分别表示相邻两张手势图像对应的两个向量,ai表示其中一个向量中的每个数值,bi表示另一个向量中的每个数值,n表示向量的长度;3.5)将步骤3.4)获取的相似度similarity进行数据处理;3.6)将相似度不为0的相邻两帧动态手势图像中的后一帧动态手势图像保留,将第一张动态手势图像保留,所有保留的图像即为动态手势图像的关键帧。所述步骤3.5)中,数据处理为进行数值规约处理,即将相似度similarity扩大10000倍再减去9999,然后取整。所述步骤4)具体为:采用步骤3.1)~步骤3.6)提取动态手势图像关键帧的方法提取静态手势图像的初始关键帧。所述步骤5)具体为:5.1)下载keras下的vgg-16训练模型;5.2)将步骤4)静态手势图像的初始关键帧输入vgg-16训练模型中,初始关键帧的原始特征分别经vgg-16训练模型的输入层、卷积层、池化层训练后输出转化为初始关键帧的抽象特征;其中选择vgg-16中的block2-pool层作为输出层输出。所述block2-pool层为vgg-16训练模型的中间层,即为vgg-16训练模型第二个池化层。初始关键帧输入vgg-16训练模型中维度为224×224×3的输入层,经过两层相同的卷积层和一层池化层,再经过两层相同的卷积层和一层池化层,让宽和高越来越小,通道数逐渐增加,最后选择block2-pool层作为输出层来获取手势分割图像的抽象特征。其中,卷积层中卷积filter为3×3,步长为1,filter数为64。抽象特征的维度为56×56×128。所述的步骤6)具体为:6.1)利用opencv工具中的sobel算子对每帧初始关键帧的抽象特征进行空间梯度计算从而得到每帧初始关键帧所有通道的梯度值,将不同方向的梯度值进行权重计算得到每帧初始关键帧所有通道最终的空间梯度值;其中,所述权重计算中的权重设为0.5;6.2)将每帧初始关键帧所有通道的最终的空间梯度值保存在一维数组ⅰ中,统计不同空间梯度值出现的个数,绘制不同梯度值对应个数的直方图。所述的步骤7)具体为:7.1)将每帧初始关键帧一维数组ⅰ中数值为0的梯度值删除,将剩余梯度值中相同的梯度值出现的个数以及对应的梯度值所组成的键值对保存在一维数组ⅱ中,对相邻两帧初始关键帧的一维数组ⅱ进行差值计算,并将得到的差值保存在新建数组中,根据新建数组绘制相应的折线图,观察波动情况;7.2)根据所有折线图的波动情况,设定阈值key;将大于阈值key的折线图所对应的相邻两帧初始关键帧中的后一帧图像保留,将静态手势图像中的第一帧图像保留,所有保留的图像为静态手势图像的最终关键帧。本发明的有益效果:1)本发明采用mobilenet-ssd目标检测模型完成目标手势的分类,确定了视频突变边界,分别获得动态手势和静态手势序列子集,通过对不同类别的手势图像进行批次处理,提高了关键帧判定的精准度。2)本发明对动态手势图像序列进行关键帧提取时,采用余弦距离进行图像相似度的判定,提取的关键帧未出现漏检和冗余的情况,在动态图像序列中取得较好的效果。3)本发明对静态手势图像序列进行关键帧预提取时,采取vgg-16网络模型提取静态手势图像的抽象复杂特征,使得图像的表达能力大大增强,利用静态手势关键帧图像的抽象特征进行空间梯度的计算,根据相邻图片的梯度差设定自适应阈值来进行关键帧的有效判定,减小了静态手势关键帧的数量,解决了静态手势关键帧冗余的问题。该关键帧提取方法具有较好的鲁棒性。附图说明图1为本发明方法的流程图。图2为本发明方法所用到的部分数据集;(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)分别为部分手势视频帧图像。图3为本发明实施例的ssd网络结构图。图4为本发明实施例的手势目标标注结果图;(a)(b)(c)(d)(k)(l)为标注的部分静态手势图像,(e)(f)(g)(h)(i)(j)为标注的部分动态手势图像。图5为本发明实施例提取出的动态手势结果图;(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)分别为部分动态手势图像。图6为本发明实施例的梯度直方图;(a)(b)分别为两个不同的静态手势图像对应的梯度直方图。图7为本发明实施例的相邻两帧图像的差值图;(a)(b)分别为两张不同的差值图。图8为本发明实施例提取出的静态手势结果图;(a)(b)(c)(d)(e)(f)分别为部分静态手势图像。图9为本发明实施例的提取最终结果图;(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)为实施例中最终的关键帧提取结果图。具体实施方式下面结合附图和实施例对本发明作进一步说明。本发明主要针对手势视频中的关键帧提取情况,由于本发明的识别对象为自定义的手势动作,所以具体实施中自建了动态手势视频数据库,具体实施中所用到的部分数据集如图2所示,该图表示其中一个手势视频转换成的部分手势视频帧图像,将图像保存成.jpg格式,最后的图片大小为1280×720。如图1所示,本发明方法先将手势视频转换为手势视频帧图像,通过mobilenet-ssd目标检测模型检测出手势目标区域,根据标注出的手势进行分类,将手势图像分为静态手势图像集和动态手势图像集。对于动态手势图像序列,根据图像的余弦距离计算相似度,从而进行关键帧的判定,对于静态手势图像序列,先通过余弦距离计算相似度,对静态手势图像进行初步的关键帧提取,而后通过vgg-16模型提取静态手势关键帧的抽象特征,并对提取出的抽象特征进行空间梯度的计算,统计各个梯度值出现的次数,去除值为0的梯度并计算相邻的两帧图像间各个梯度值出现的次数差,将得到的数据进行可视化,观察数据波动情况,通过设定自适应阈值来进行静态关键帧的判定。将得到的静态关键帧和动态关键帧融合得到最终的关键帧序列。本发明实施例如下:步骤1:采用opencv中的videocapture函数读入手势视频,并将读入的视频转换成手势视频帧图像,部分手势视频帧图像如图2所示。步骤2:采用如图3所示的mobilenet-ssd目标检测模型训练得到手势检测模型,利用手势检测模型对所有手势视频帧图像进行分类,得到静态手势图像和动态手势图像。2.1)编译protobuf,完成tensorflowobjectdetectionapi的模型训练与配置;2.2)利用labellmg标注工具对手势视频帧图像中1500张手势进行标记,并按照3:1的比例分为训练集和测试集;2.3)将标记好的手势视频帧图像生成的xml文件转换为csv文件,并将生成的csv文件转换为tfrecord格式,将需要的数据保存在工程文件夹data下;2.4)在工程文件夹data目录下创建标签分类的配置文件(sign.pbtxt),这里将手势类别设为2类,一类为静态,另一类为动态;2.5)配置相应的管道文件ssd_mobilenet_v1_coco.config,在该文件中修改类别数、文件路径、以及网络参数;2.6)标记后的手势图像输入mobilenet-ssd目标检测模型中进行训练,并导出相应的手势检测模型;2.7)利用训练后的手势检测模型对所有手势视频帧图像进行手势图像的分类,检测结果如图4所示,根据如图4目标框的标签将手势图像进行分类,(a)(b)(c)(d)(k)(l)为标注的部分静态手势图像,(e)(f)(g)(h)(i)(j)为标注的部分动态手势图像。步骤3:将步骤2)得到动态手势图像序列进行余弦距离的计算,通过计算相邻两帧动态图像的相似度,完成动态手势关键帧的判定。3.1)对步骤2.7)所得到的动态手势图像序列进行大小图像统一化处理,统一图像大小为64×64。3.2)将相邻两张图像分别用两个向量a、b进行表示。3.3)计算所得到的两个向量的l2范数a_norm和b_norm。计算公式如下:其中,‖x‖表示向量的l2范数,xi表示向量中的每个数值,n表示向量的长度。3.4)利用所得到的向量及向量范数进行点积计算,用cos(θ)表示图像相似度similarity。所用到的公式如下:cos(θ)表示相邻两张手势图像对应的两个向量的夹角余弦值;a、b分别表示向量a和向量b,ai表示向量a中的每个数值,bi表示向量b中的每个数值,n表示向量的长度;3.5)将得到的相似度的值进行数据处理,扩大10000倍再减去9999,然后取整,保存第一张图像和数值不为0的图像,即可得到关键帧。本实施例的动态手势图像的关键帧部分提取结果如图5所示。步骤4:同步骤3一样,完成静态手势图像的初始关键帧提取,得到初步提取的静态手势关键帧;步骤5:利用vgg-16网络模型提取静态手势初始关键帧的抽象特征,选择block2-pool层作为输出层来获取静态手势初始关键帧的抽象特征。表1为步骤5用到的vgg-16网络模型中的网络层。layer(type)outputshapeparaminput_1(inputlayer)(none,224,224,3)0block1_conv1(conv2d)(none,224,224,64)1792block1_conv2(conv2d)(none,224,224,64)36928block1_pool(maxpooling2d)(none,112,112,64)0block2_conv1(conv2d)(none,112,112,128)73856block2_conv2(conv2d)(none,112,112,128)147584block2_pool(maxpooling2d)(none,56,56,128)05.1)从keras的api下载训练好的vgg-16网络模型,在提取特征时,直接使用训练好的权重。手势分割图像输入vgg-16训练模型中维度为224×224×3的输入层,经过两层相同的卷积层和一层池化层,再经过两层相同的卷积层和一层池化层,让宽和高越来越小,通道数逐渐增加,最后选择block2-pool层作为输出层来获取手势分割图像的抽象特征。其中,卷积层中卷积filter为3×3,步长为1,filter数为64;5.2)载入静态手势初始关键帧图像,将图片标准化统一的大小224×224,将图像转为数组形式并除以255,保证图片的精度;5.3)利用vgg-16网络模型下的process_input函数对数组进行预处理;5.4)提取经过block2-pool层的静态手势初始关键帧图像的特征值,即为静态手势初始关键帧图像的抽象特征。步骤6:对静态手势初始关键帧图像的抽象特征进行空间梯度计算并绘制不同帧静态手势初始关键帧图像的梯度直方图。6.1)对静态手势初始关键帧图像的抽象特征进行空间梯度计算:利用opencv工具中sobel算子对抽象特征矩阵进行水平方向和竖直方向的梯度计算,将矩阵中水平方向和竖直方向获得的梯度值进行权重计算,得到手势分割图像的最终空间梯度值;其中,所述权重计算中的权重设为0.5;6.2)利用cv2.convertscalerabs()函数将水平方向和竖直方向上的梯度值转换为绝对值的形式;使用cv2.addweighted函数将水平方向和竖直方向上的sobel算子的结果结合;6.3)统计静态手势初始关键帧图像上不同空间梯度值出现的个数,绘制不同梯度值对应个数的直方图,绘制出的梯度直方图如图6所示。步骤7:根据相邻两帧静态手势初始关键帧图像的梯度值差异,绘制如图7所示的差值折线图,通过差值折线图的波动情况设定自适应阈值,根据阈值完成最终关键帧的判定。7.1)利用python中的counter函数统计每帧静态手势初始关键帧图像中各个梯度值出现的次数,由于图片的不同,所以图片所对应的梯度值也不同,对梯度值从0-100进行遍历,如果梯度值不在该范围内,就将梯度值设为0;7.2)如图6(a)和图6(b)所示,不同静态手势初始关键帧图像梯度值为0出现的次数相差较大;去除梯度值为0的点,消除图片间梯度值的差异;7.3)设定一个一维数组dist_list[],对所有图片帧序列进行遍历,将每张图片对应的梯度值以及该梯度值出现的次数所组成的键值对存入到该数组中,对一维数组dist_list[]进行外层循环、梯度值从0到100进行内层循环后得到相邻两帧图片的梯度以及该梯度出现的次数差值,建立数组two_image_diff[]用于存放次数差值;7.4)利用matplotlib库中的pyplot模块对数组two_image_diff[]进行折线图的绘制,观察折线图的波动情况,当相邻两帧的波动差异较小时,就不判定为出现最终关键帧,如图7(a);而波动差异较大时,则就判定为出现关键帧,如图7(b)。对数组two_image_diff[]进行遍历,当出现某个梯度值对应的键值大于自适应阈值key时,就判定该相邻两帧关键帧中的后一帧为最终关键帧。本实施例中判定出的最终静态关键帧所图8所示。自适应阈值key的计算方法为:1)将每帧静态手势初始关键帧图像数值为0的梯度值删除,存入数组ii(i=1,2,3,…n)中,n的大小为静态手势初始关键帧的个数。2)将数组ii(i=1,2,3,…n)中所有图像的最大值存入数组arr中。3)去除数组arr中的最大值和最小值,计算剩余数值的平均值即得自适应阈值key。步骤8:将静态手势图像的最终关键帧和动态手势图像的关键帧进行融合,完成如图9手势视频帧图像的关键帧提取。上述具体实施方式用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明做出的任何修改和改变,都落入本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1