基于YOLOv3和词袋模型的行为识别方法

文档序号:25023312发布日期:2021-05-11 16:48阅读:133来源:国知局
基于YOLOv3和词袋模型的行为识别方法

本发明涉及行为识别领域,具体涉及基于yolov3和词袋模型的行为识别方法。



背景技术:

近年来,随着智慧城市的推广和视频监控在日常生活中越来越广泛的应用,行人目标检测这一课题在计算机视觉领域得到了越来越多的关注,在很多场景下也发挥着越来越重要的作用。在军事领域中,它可用于罪犯定位与追踪,行人分析等任务,在民用领域中,它可用于智能辅助驾驶,智能监控等工作。可以说,行人目标检测技术已经在不知不觉中为我们的生活提供了极大的便利。在实际工程中,人们往往需要对大量图像或视频进行行人的检测与定位,这些工作若全部由人工来完成,不仅耗时耗力,其检测准确性也无法保证。因此,行人目标检测技术在当今时代背景下有着极为广阔的发展前景。

行人目标检测的发展分为基于传统方法的行人目标检测,基于机器学习的行人目标检测和基于深度学习的行人目标检测。早期人们主要使用传统方法来进行行人检测,如pbas算法等,但这些方法受光照,阴影等因素的影响很大,且若目标的颜色和背景颜色接近,极易造成漏检。基于机器学习的行人检测方法是很多工程应用中的主流方法,例如hog+svm,icf+adaboost等。尽管经典的机器学习算法相较于传统方法有了一定程度上性能的提升,但仍存在对姿态,角度各异的行人检测精度不高的问题。基于这些问题,人们逐渐提出了基于深度学习的行人检测算法,经典网络例如fasterr-cnn和ssd等在行人目标检测方面均有不错的成绩。但人们在实际工程中始终追求更高的检测精度和检测速度。yolo(youonlylookonce)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统,yolov3在2018年被正式提出,在v2的基础上,将darknet-19扩展至darknet-53,用更深的网络确保更高的检测精度,同时检测速度并没降低,且目前yolov3对行人的检测置信度高达0.99,这说明该网络可以很好地区别行人及非行人目标;词袋模型可以有效描述视频序列中局部特征,该模型较容易理解和实施且涉及参数少,算法复杂度低。



技术实现要素:

本发明提供了基于yolov3和词袋模型的行为识别方法,利用yolov3网络检测目标并准确截取目标区域,将其和词袋模型结合,减少训练参数和背景噪声,在kth数据集上识别率达到96.09%,为视频行为的高效、精准识别提供了新的方法。

基于yolov3和词袋模型的行为识别方法,包括如下步骤:

步骤1:读取视频帧,用yolov3网络进行目标检测,返回目标的位置信息;

步骤2:截取目标区域、生成动作序列;

步骤3:对动作序列中的序列帧进行预处理,然后分别提取多尺度hog特征和sift特征;

步骤4:对提取的多尺度hog特征和sift特征进行特征加权融合;

步骤5:利用k-means聚类算法对上一步骤加权融合后得到的融合特征进行聚类,构造视觉词典;

步骤6:将动作序列的视觉词典向量输入svm多分类器模型进行训练和识别。

进一步地,步骤1中,yolov3网络先用imagenet数据集预训练模型初始化,获得网络的初始化权重,再用coco数据集里跟视频行为有关的图像来微调网络,最后用训练好的yolov3网络识别出目标区域和非目标物体;根据识别的目标区域,返回目标位置信息(x,y,w,h),其中(x,y)为目标检测框的左上角坐标,(w,h)为框的宽和高。

进一步地,步骤2中,根据目标的位置信息(x,y,w,h),对目标区域进行截取,截取边框为[y:y+1.04h,x-0.08w:x+1.08w],对视频帧的目标区域进行截取后,返回含有基本动作的动作序列帧。

进一步地,步骤3中,对动作序列帧进行图像预处理:首先彩色图像灰度化,其次灰度图像亮度归一化,增强图像对比度,接着对图像进行滤波去噪处理,最后采用双线性插值方法对图像尺寸归一化,使得图像具有相同的尺寸以进行后续特征提取。

进一步地,步骤3中,提取多尺度hog特征具体为:按照差分公式计算图像梯度大小矩阵和梯度方向矩阵,将360度即2π分割成n个bins,每个bin包含度,即然后根据每个像素点的梯度方向,找到对应的bin,并且在bin值所在的维度加上梯度大小,得到一个n维的直方图;对直方图进行分块处理,得到小cells,针对每个小cell,统计其梯度方向直方图,将多个小cell构成一个block,每个block的梯度方向直方图为每个cell的梯度方向直方图的级联,级联所有block的梯度方向直方图得到整个图像的hog特征直方图;按该步骤提取两种尺度的hog特征直方图,并且级联两个尺度的hog特征直方图得到多尺度的hog特征直方图h(i)。

进一步地,步骤3中,提取sift特征具体为:先构建尺度空间,对序列帧图像和高斯卷积核进行卷积获得不同的尺度图像,根据尺度空间构造高斯差分空间dog;再对dog相邻两层图像进行对比初步获得关键点,在进行极值点检测时,需将该检测点与上下相邻尺度对应的18个像素点以及同一尺度下的8个相邻像素点进行对比,当该检测点的数据大于或者小于所有相邻数据时,则该点位当前尺度下极值点;然后精确定位极值点位置,去除不稳定极值点,利用关键点领域像素的梯度方向分布特性确定关键点方向,利用直方图对特征点领域内像素对应的梯度方向和幅值进行统计,将0~360度的方向范围分为8个bins,每个bin包含45度,最后在关键点尺度空间内4×4窗口计算8个方向的梯度信息,得到4×4×8=128维sift特征向量s(i)。

进一步地,步骤4中,针对不同特征提取算法提取出的特征尺度不一致的问题,对得到的特征向量h(i)、s(i)进行尺度归一化;对归一化的hog特征和sift特征进行融合,得到一个新的融合特征t(i)=αh(i)+βs(i),α,β是权值,且满足α+β=1。

进一步地,步骤5中,k-means算法先将融合特征分为k组,随机选取k个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心,聚类中心以及分配给它们的对象就代表一个聚类,每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算,直到满足终止条件停止计算;由k-means算法获得词袋模型的码本,每一类的聚类中心就是码本中的码字,码本即视觉词典,把动作序列中所有的融合特征根据欧式距离映射到离其最近的码字,统计动作序列中每个码字对应的特征出现的次数,构成直方图向量l。

进一步地,步骤6中,将数据集分成训练集和测试集,把对应的视觉词典向量输入到svm多分类器模型进行训练和分类识别;

svm采用rbf核函数:

其中li和lj表示视频的码本直方图向量,σ2表示高斯函数的方差。

本发明达到的有益效果为:

(1)yolov3多用于基于图片的目标检测及识别,本发明将该网络用于基于视频的目标检测,运行速度快,实时性较好,目标识别和定位效果好。

(2)yolov3网络先用imagenet数据集预训练模型初始化,获得网络的初始化权重,再用coco数据集里跟视频行为有关的图像来微调网络,使得该网络在kth数据集上可以准确检测出人物及其所在区域位置,再根据返回的位置信息(x,y,w,h)对目标区域根据边框[y:y+1.04h,x-0.08w:x+1.08w]进行截取,这样操作既可以完整保留运动区域,又可以有效去除与动作无关的背景噪声。

(3)引入词袋模型,减少训练参数和运行时间。k和f的大小对识别率有影响,k是k-means中聚类中心个数,f为特征的贡献率,在一具体实验中发现k=5000,f=0.8时,识别率达到96.09%。

附图说明

图1是本发明具体实施例中提供的一种基于yolov3和词袋模型的行为识别方法及系统的流程示意图。

图2是本发明具体实施例中的yolov3网络结构示意图。

图3是本发明具体实施例中原视频帧及目标截取效果图。

图4是本发明具体实施例中多尺度hog特征融合示意图。

图5是本发明具体实施例中单尺度以及多尺度进行融合来完成人体行为识别得到的识别率表。

图6是本发明具体实施例中不同尺度hog特征的识别效果图。

图7是本发明具体实施例中sift关键点直方图示意图。

图8是本发明具体实施例中sift由领域梯度信息生成特征向量示意图。

图9是本发明具体实施例中动作“boxing”对应的直方图向量示意图。

图10是本发明具体实施例中聚类中心k=800时,不同f对应的识别率示意表。

图11是本发明具体实施例中k=800时,f对行为识别率的影响示意图。

图12是本发明具体实施例中特征贡献率f=0.8时,不同k对应的识别率示意表。

图13是本发明具体实施例中f=0.8时,k对行为识别率的影响及两种方法对比示意图。

图14是本发明具体实施例中k=5000,f=0.8时,svm识别混淆矩阵示意表。

图15是本发明具体实施例中多种算法行为识别效果示意表。

图16是本发明具体实施例中多种算法效果对比图。

具体实施方式

下面结合说明书附图对本发明的技术方案做进一步的详细说明。

基于yolov3和词袋模型的行为识别方法,包括以下步骤:

步骤1:读取视频帧,用yolov3网络进行目标检测,返回目标的位置信息。

步骤2:截取目标区域、生成动作序列。

步骤3:对序列帧分别提取多尺度hog特征和sift特征。

步骤4:对提取的hog特征和sift特征进行特征加权融合。

步骤5:利用k-means聚类算法对融合特征进行聚类,构造视觉词典。

步骤6:将得到的动作序列的视觉词典向量输入svm多分类器模型进行训练和识别。

步骤1的具体实施过程为:

选取kth人体行为数据库,该数据库包括6类行为(walking,jogging,running,boxing,handclapping,handwaving),由25个人分别在四个场景下执行,共599段视频,对数据库中的视频进行划分,筛选出162个视频,其中97个视频作为训练集,65个视频作为测试集。

读取视频帧图像,用图2所示的yolov3网络结构对视频帧进行目标检测,该网络有三个尺度的输出,13×13,26×26,52×52,分别对应大型目标检测、中型目标检测、小型目标检测,可以有效检测视频帧中不同尺度大小的物体。具体实施过程中,先用imagenet数据集预训练模型初始化,获得yolov3网络的初始化权重,再用coco数据集里跟视频行为有关的图像来微调网络,该网络可以识别出多达80种物体,包括人、车、猫、狗,其中人的识别置信度高达0.99,最后用训练好的yolov3识别出目标区域和非目标物体。

识别出目标区域后,返回目标的位置信息(x,y,w,h),其中(x,y)为目标检测框的左上角坐标,(w,h)为框的宽和高。

步骤2的具体实施过程为:

根据步骤1返回的目标的位置信息(x,y,w,h),对目标区域进行截取,根据人体动作主要集中表现在四肢部位这一特点,因此设计截取边框为[y:y+1.04h,x-0.08w:x+1.08w],该边框的裁剪区域理论依据是[y0:y1,x0:x1]。

对视频帧的目标区域进行截取后,返回含有基本动作的动作序列帧,如图3所示,该步骤大大减少了背景噪声的干扰,在一定程度上可以提高识别正确率。

步骤3的具体实施过程为:

对动作序列帧进行图像预处理:首先将彩色图像灰度化,其次是将灰度图像亮度归一化,增强图像对比度,接着是对图像进行滤波去噪处理,最后是采用双线性插值方法对图像尺寸归一化,使得图像具有相同的尺寸,方便后续特征提取。

提取hog特征:

计算图像中像素点(x,y)的水平方向梯度、垂直方向梯度,由下列差分公式得到,其中,ν(x,y)为像素点(x,y)的像素值:

dx(x,y)=v(x+1,y)-v(x-1,y)

dy(x,y)=v(x,y+1)-v(x,y-1)

梯度大小:

梯度方向:

在[0,2π)上划分9个区间(bin),这样每个cell对应9维特征向量,对每个cell内所有的像素点计算梯度大小和梯度方向进行统计,得到这个cell内的梯度方向直方图分布。

具体实施过程中分别对序列帧提取不同尺度的hog,尺度分别选择2×2、4×4、8×8或者16×16大小。对于每帧图像大小为256×256,若选取cell尺度为16×16,即图像划分成互不重叠的16×16个cells,然后选取上下左右相邻的2×2个cells作为一个block来获取相邻像素之间的信息,所以16×16个cell就会得到15×15个block,每个block的像素是32×32,其中因为每个cell有9个bins,所以每个block一共是由36(2×2×9=36)维特征向量来表示的,归一化有重叠的block的直方图,将全部的block的特征向量连接起来,即得到15×15×36=8100维特征向量,完成hog特征的提取。不同尺度特征的融合示意图如图4所示。通过实验可得到采用单尺度以及多尺度进行融合来完成人体行为识别得到的识别率,如图5所示。

由图5和图6可以看出多尺度融合特征得到的识别率比单一尺度特征得到的识别率普遍要高,比如单尺度2×2的识别率明显低于2×2与4×4尺度下的hog特征融合之后对人体行为的识别率;而对三种不同尺度hog特征进行融合之后识别率并没有显著改善,这是因为在特征进行融合之后,特征维数较大造成信息冗余,从而导致识别率并没有显著提高,8×8+16×16的融合特征和4×4+8×8+16×16的融合特征得到的识别率是一致的,但是8×8+16×16计算量却小了很多,所以综合考虑选择8×8和16×16的特征进行融合。

对完成图像预处理的动作序列帧分别提取8×8和16×16尺度下的hog特征,并对这两种尺度下的特征进行级联,得到多尺度的hog特征向量h(i)。

对完成图像预处理的动作序列帧提取sift特征:

构建尺度空间:

l(x,y,σ)=g(x,y,σ)*i(x,y)

其中,

构造高斯差分空间(dog):

d(x,y,σ)=(g(x,y,kσ)-g(x,y,σ))*i(x,y)=l(x,y,kσ)-l(x,y,σ)

检测尺度空间极值点,确定位极值点位置;

关键点方向确定,梯度大小和方向计算公式如下:

将0~360度的方向范围分为8个柱,每柱45度,利用直方图对特征点领域内像素对应的梯度方向和幅值进行统计,如图7所示。

关键点特征描述,使用在关键点尺度空间内4×4窗口计算8个方向的梯度信息,共4×4×8=128维向量,示意图如图8所示,图8(1)左侧为在关键点周围取一个8×8领域,每一个小格都代表了特征点领域所在尺度空间的一个像素,箭头方向代表像素梯度方向,箭头长度代表像素梯度幅值,右侧为四分之一个领域,由4个2×2的像素区域组成,每个子区域生成一个8方向的梯度直方图,绘制每个梯度方向的累加可形成一个种子点。这样,一个特征点由4×4个种子点的信息组成,如图8(2)所示。

步骤4的具体实施过程为:

针对不同特征提取算法提取出的特征尺度不一致问题,将h(i)、s(i)进行尺度归一化;对归一化的hog特征和sift特征进行融合,得到一个新的融合特征t(i)=αh(i)+βs(i),α,β是权值,且满足α+β=1。

步骤5的具体实施过程为:

利用k-means算法获得词袋模型的码本,每一类的聚类中心就是码本中的码字,码本即视觉词典,由于聚类中心k的大小会影响分类效果,所以k值由100~9000取得,终止迭代目标为聚类中心变化差值小于0.0001;从每一类动作中提取特征集,这些特征中有些是冗余的,所以选择一定贡献率f的特征作为这一类别的特征,不同的贡献率也会影响实验结果,所以f由0.1~1.0取得。

把动作序列的特征根据欧式距离映射到离其最近的码字,统计动作序列中每个码字对应的特征出现的次数,构成直方图向量l,将底层的融合特征转化为中层的直方图特征,如图9所示,该直方图为动作“boxing”对应的视觉词典向量表示。

步骤6的具体实施过程为:

svm的做法是将多种行为分类问题看成是多次两类分类的过程:该训练器在训练某类动作样本时,只将行为看成两类,一类是当前样本的动作,其他的所有都认为不是这类的,当样本具有n类行为时,就需要n个两类svm分类器,每次分类都必须将这n个分类器组合起来使用,其中第i个svm分类器的作用时将第i类行为动作与其他的分开。

svm采用rbf核函数,其定义为:

其中li和lj表示视频的码本直方图向量,σ2表示高斯函数的方差。

选取kth人体行为数据库,从中筛选出162个视频,其中97个视频作为训练集,65个视频作为测试集,把对应的视觉词典向量输入到svm多分类器模型进行训练和分类识别,实验结果如下:

(1)聚类中心k=800时,f对识别率的影响如图10-11所示。

图10对应的折线图如图11所示。由图11可以看出,整体上行为识别率随f增大而增大,f在0.1~0.3之间取值时,增幅较大,在0.5~1.0之间取值时,增幅较小,在f=0.8处出现峰值,f=0.9处行为识别率出现短暂的下降,且f越大计算量越大,所以综合考虑,选择f=0.8作为实验参数值。

(2)f=0.8时,k对识别率的影响以及视频裁剪前后识别效果对比如图12-13所示。

图12对应的折线图如图13所示。图13中一折线代表基于原视频帧的实验结果,另一折线代表经yolov3识别并对目标进行截取生成动作序列的实验结果,两种实验效果整体上相差3%左右,这说明由yolov3识别并对目标进行截取生成动作序列对行为识别率的提高是有帮助的。

由图13可以看出,整体上行为识别率随视觉词典数目k的增加而增大,其中k在100~2000之间取值时,行为识别率增幅最大,其次是2000~4000,k在4000~9000之间取值时,行为识别率增幅较平缓。由于视觉词典数目k越大,迭代次数越多,计算量越大,行为识别率却没有明显的提高,所以综合考虑,选择k=5000作为实验参数,此时行为识别率为96.09%,说明了本发明的有效性。

(3)k=5000,f=0.8时,识别效果混淆矩阵如图14所示。

图14为k=5000,f=0.8时,svm识别混淆矩阵,其平均识别率为96.09%,其中boxing的识别效果最好,为100%,识别效果最差的是jogging,识别准确率为86.1%,这是由于jogging和running、walking在基础动作上基本一致,尤其腿部动作很相似,所以误识率较高,且jogging和boxing在上肢部分的动作也有相似之处,所以识别时也会出现一定混淆。

(4)不同方法识别效果对比如图15-16所示。

由图15和图16可以看出,本发明采用的yolov3+融合特征+视觉词袋+svm的行为识别方法有着较好的识别效果,且比融合特征+视觉词袋+svm系统方法的识别效果好,说明了本发明的有效性。

以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1