一种基于视觉的公交车内乘客人数统计方法与流程

文档序号:11216901阅读:3759来源:国知局
一种基于视觉的公交车内乘客人数统计方法与流程

本发明涉及一种机器学习、模式分类和识别技术领域,特别涉及一种基于空间金字塔池化的深度网络模型的车型识别方法。



背景技术:

城市公共交通作为市民出行的主要交通工具,在城市经济和建设等方面起着越来越大的作用。2005年,我国城市公共交通体系中,公共汽车、电车就已占据主体,承担了城市80%以上的客流量。随着社会经济的迅速发展和城镇化进程速度的持续加快,城市公共交通压力越发明显。然而,在市民出行总量持续增长的情况下,由于缺少实时、确切的乘客流量和交通信息,经常出现乘客等车时间过长或车辆空车率过高等情况,使得城市公共交通分担率连续降低,严重影响了市民生活水平的进步和城市的发展。

基于视频图像处理技术的统计方法已成为获取公交车乘客流量信息的关键途径。在国内外学者的努力下,针对乘客的目标检测、跟踪以及计数判定准则等方法得到了很大的发展,并逐渐成为研究公交车乘客人数统计方法的热点。

最初的基于视频图像处理乘客流量技术分为行人检测、目标跟踪、虚拟线设置等三个步骤。d.m.gavrila等通过随机优化的方法针对目标轮廓建立分层模板,实现了行人的检测。h.l.eng等采用背景差分法和结构分割获得人体,计算人体部位的贝叶斯方程,实现计数。massimilianobozzoli等人采用光流法通过检测场景中像素的变化对经过场景的行人目标进行统计计数。satarupamukherjee等针对乘客头部的几何特征,采用霍夫圆进行检测计数。同时,也出现了去寻找行人运动轨迹特征等方法进行人数判定,该方法通过行人特征轨迹聚类或特征回归进行人群计数。近几年来,随着深度学习的发展,ciregand又提出了一个适用人群计数的深度卷积神经网络模型,相比于人工特征对人群有更好的表述能力,采用交替回归该图像块的人群密度和人群总数来实现人数估计。zhangy等提出多列卷积神经网络结构将图像映射到其人群密度图上,统计人数。

然而,传统的采用几何特征等方法来进行检测并计数依赖于一个优秀的预处理,而且往往难以分割出目标,且受光照、乘客间相互遮挡等影响大;传统的针对多个摄像头进行公交车内场景的建模并实现人数统计由于使用三维深度信息,所以对图像中乘客判断比较准确,受乘客间相互遮挡的影响较小,但是其也存在问题:(1)其具有成熟的模型,实用性好,但实时性有待提高;(2)通过行人特征轨迹聚类或者特征回归进行人群计数,其易于分析运动行为,但是算法复杂;(3)由于使用多个摄像头,并需要准确标定,体积较大,系统成本也较高。



技术实现要素:

本发明的主旨在于为了克服现有技术中实时性差、计数不准确且速度慢、可靠性低以及虚警率高的缺点,提出实时性更好且检测准确率高的针对公交车复杂下车内乘客人数统计方法,为实现实时获得公交车内乘客拥挤状况信息的公交车运营公司提供技术支持和指导。

为了解决上述技术问题,达到上述目的,本发明所采用的技术方案如下所述。

一种基于视觉的公交车内乘客人数统计方法,其特征在于,包括如下步骤:

步骤1:制作公交车场景下人头样本库,提取人头样本库中样本的梯度方向直方图(hog)特征,并采用支持向量机(svm)对样本的hog特征进行线下学习,得到公交车场景下人头分类器;

步骤2:输入待检测的视频,提取待检测的视频的当前帧图像并进行预处理,再对预处理后的当前帧图像进行降采样,对降采样后的图像提取兴趣区域(roi),计算提取的roi内的hog特征,再通过步骤1训练好的人头分类器进行乘客人头目标识别;

步骤3:若无检测队列和跟踪队列,则新建检测队列和跟踪队列,再转入步骤4;否则直接转入步骤4;

步骤4:判定分类器是否检测到目标;若检测到人头目标,采用非极大值抑制算法(nms)进行多余框处理并标记目标区域,将目标区域加入到检测队列,再判定跟踪队列是否为空,若为空,则将目标区域加入到跟踪队列;若不为空,则对跟踪队列中已有目标采用核相关滤波跟踪算法(kcf)进行跟踪,并用新的目标区域更新当前跟踪队列;若当前帧内检测队列和跟踪队列都不为空,则进行步骤5;

步骤5:将检测队列和跟踪队列通过匈牙利算法进行数据关联,若关联匹配成功,则将跟踪队列中该目标的属性用跟踪队列关联上的检测队列中目标的属性更新代替,若关联匹配失败,则作为新目标加入到跟踪队列;

步骤6:对跟踪队列各目标进行运动轨迹分析,设置虚拟线,当有目标“越过”,则上或下车人数加或减一,得到当前帧车内乘客人数;

步骤7:判定当前帧是否为最后一帧,若不是,则进入下一帧重复步骤2到步骤7;否则,步骤6所得车内乘客人数为最终车内乘客人数。

上述技术方案中,所述步骤1中具体有以下几个步骤:

步骤1.1:获取公交车视频,从公交车待检测的视频中截取制作正负样本,正样本为公交车场景下人头区域图像,负样本为公交车场景下非人头区域图像;

步骤1.2:将各个正负样本由rgb图像转化为灰度图像,转化公式为:

gray=(r*299+g*587+b*114+500)/1000(1)

步骤1.3:计算灰度图像中任一像素点(x,y)的梯度,计算公式为:

式中,gx(x,y)、gy(x,y)、h(x,y)分别表示输入灰度图像的像素点(x,y)处的水平方向梯度、垂直方向梯度和像素值;

步骤1.4:计算像素点(x,y)处的梯度幅度和梯度方向,计算公式为:

式中,g(x,y)为该点梯度幅度,α(x,y)为该点梯度方向;

步骤1.5:利用步骤1.4中求得的各像素点的梯度方向α(x,y)来构建梯度方向的直方图,接着将窗口图像划分成若干个cells,统计每个cell的梯度方向直方图,即可形成每个cell的描述符,然后将连续几个cell组成一个block,一个block内所有cell的特征描述符串联起来便得到该block的hog特征描述符,最后将图像内的所有block的hog特征描述符串联起来就可以得到该灰度图像样本的hog特征;

步骤1.6:进行区间归一化,即对步骤1.5最后得到的该通道分量的hog特征进行归一化,由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大,因此需要对梯度强度作归一化。

上述技术方案中,所述步骤2具体有以下几个步骤:

步骤2.1:对输入待检测的视频的当前帧图像进行降采样处理,先提取图像f(x,y)的宽和高,分别记为m和n。然后根据宽m和高n是否为偶数进行相应的处理,如果为偶数则直接进行降采样操作,否则先舍弃图像f(x,y)的最后一行或最后一列,再进行降采样操作;

降采样方式为隔行隔列降采样,计算公式为:

式中m为输出图像g(x,y)的宽,n为输出图像g(x,y)的高;

步骤2.2:针对所检测的公交车视频,对降采样图像g(x,y)提取roi。

步骤2.3:计算兴趣区域内的梯度方向直方图特征,再通过步骤1训练好的人头分类器进行乘客人头目标识别;

上述技术方案中,所述步骤4具体有以下几个步骤:

步骤4.1:新建检测队列和跟踪队列,判定人头分类器是否检测到人头目标,当人头分类器检测到人头目标后,会出现交叉重复的矩形框,采用nms进行多余矩形框剔除,得到最佳的目标位置,并将包含最佳目标位置的当前图像以及最佳目标位置加入到检测队列;

步骤4.2:判断跟踪队列是否为空,若为空,则读取跟踪队列中的目标,设跟踪队列中的样本图像集为m,其中一张样本图像为xc,记xc是1×n的向量,使用循环移位矩阵p对唯一的样本图像进行循环移位,得到训练样本集合{pixc|i=0,1,…,n-1},其中p为:

记xi为循环移动i位后的训练样本,xi=pixc,将x0x1…xn-1构成循环矩阵x;

x=c(x)=[x0x1…xn-1]t(6)

然后对训练样本集合赋予标签yi,yi服从高斯分布;

步骤4.3:对跟踪队列中已有目标进行kcf分类器训练,训练分类器的过程可以用以下数学公式描述:

其中,λ是正则化参数,用来防止过拟合,w指训练xi与其对应标签yi构成的点zi=(xi,yi)前面的系数,通过求解使得式(7)最小,得最优解为:

式中,ai为对应训练样本xi的系数,是将训练样本xc映射到高维度特征空间的函数,任意两个样本xc和xc*在高维度特征空间的相关性或相似度为κ为高斯核函数;

式中,xc'为与xc不同的另外一张样本图像,f是离散傅里叶变换;f-1为离散傅里叶逆变换,由所有训练样本pixc构造核矩阵k,k的元素ki,j=κ(xi,xj),其中,xi,xj就是步骤4.2中的循环移动i位和j位后的训练样本;

参考线性最小二乘法求解方法对式(7)进行求解,得到基于核函数的岭回归的解为

a=(k+λi)-1y(10)

对上式进行傅里叶变换,得

式中,为a的离散傅里叶变换,a=[a1,a2,…an],为核矩阵k的第一行向量。于是训练分类器的过程从寻找最优解w转化为寻找最优a,其中,a指包含ai在内的训练样本xi的系数;

步骤4.4:快速检测,对于新输入的图像区域z,z为目标的概率大小为:

ai是a中的元素,kcf同样对新输入的图像z进行循环移位操作来构造候选区域样本集pi-1z,定义矩阵kz=κ(pi-1z,pj-1xc),其满足循环矩阵的条件:

式中,为kz矩阵的第一行,从而得到输入图像z在所有候选区域位置处成为跟踪目标的概率分布f(z):

可知f(z)为1×n向量,f(z)元素值对应所有候选区域称为跟踪目标的概率值,f(z)取到最大值的元素所对应区域即为跟踪目标,并用该跟踪目标的新信息去更新跟踪队列。

上技术方案中,由于检测不一定保证每帧都能检测到对应的目标,因此对于同一乘客的检测框和跟踪框需要用同一种方法进行匹配,让计算机判定为同一目标,以防重复计数,所述步骤5采用匈牙利算法,具体有以下几个步骤:

步骤5.1:设{dk}和{tl}分别为检测队列和跟踪队列,{xk,yk}为检测序列中第k个检测目标的中心点,{xl,yl}为跟踪序列中第l个检测目标的中心点。定义二者的空间距离为:

由此可得跟踪目标队列和检测目标队列之间的距离矩阵为:

步骤5.2:如果dkl在距离矩阵a第k行和第l列中均属于最大值,则认为检测目标dk能和跟踪目标tl正确关联匹配上。然后去掉矩阵a中的k行和l列,得到新矩阵a*,在a*中继续寻找满足关联条件的项,若存在这样的项,则认为检测目标和跟踪目标正确关联匹配上,于是用检测目标的信息去更新跟踪目标以此反复迭代下去。

与现有技术相比,本发明有如下有益效果:

(1)区别于传统的针对多个摄像头进行公交车内场景的建模并实现人数统计,具有实时性高,计数准确等特点;

(2)通过大量公交车内视频样本测试表明,本方法较于传统方法识别率高、计数速度快、虚警率低且可靠性高;

(3)对公交车内复杂场景下的乘客人数统计技术不仅仅为实现实时获得公交车内乘客拥挤状况信息的公交车运营公司提供技术支持和指导,并且在商场、电梯等场景也能延伸应用。

附图说明

图1为乘客计数系统算法设计流程;

图2为样本库正负样本图像;

图3为动态场景乘客目标检测效果图;

图4为动态场景乘客目标检测及跟踪效果图;

图5为动态场景乘客下车人数统计效果图。

具体实施方式

下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

本发明提出了一种基于视觉的公交车内乘客人数统计方法,在公交车内的乘客量识别上取得了良好的效果。整个算法设计方案流程如图1所示,包括步骤:

步骤1:制作公交车场景下人头样本库,提取人头样本库中样本的梯度方向直方图(hog)特征,并采用支持向量机(svm)对样本的hog特征进行线下学习,得到公交车场景下人头分类器;

具体地,hog特征是一种局部区域描述符,它通过计算局部区域上的梯度方向直方图来构成人体特征,能够很好地描述人体的边缘。由于hog特征对图像几何和光学的形变能保持很好的不变形,因此应用于行人检测相比其他特征描述子拥有更大的优势。支持向量机是一种监督式学习的方法,被广泛应用于统计分类以及回归分析中,因此采用svm来进行样本分类和训练,然后得到公交车场景下关于人头的线性目标分类模型的分类器,包括以下几个步骤:

步骤1.1:获取公交车视频,从公交车待检测的视频中截取图像制作正负样本,正样本为公交车场景下人头区域图像,负样本为公交车场景下非人头区域图像,本实例将正负样本大小统一归一化为64*64,如图2所示;

步骤1.2:将各个正负样本由rgb图像转化为灰度图像,转化公式为:

gray=(r*299+g*587+b*114+500)/1000(1)

步骤1.3:计算灰度图像中任一像素点(x,y)的梯度,计算公式为:

式中,gx(x,y)、gy(x,y)、h(x,y)分别表示输入灰度图像的像素点(x,y)处的水平方向梯度、垂直方向梯度和像素值;

步骤1.4:计算像素点(x,y)处的梯度幅度和梯度方向,计算公式为:

式中,g(x,y)为该点梯度幅度,α(x,y)为该点梯度方向;

步骤1.5:利用步骤1.4中求得的各像素点的梯度方向α(x,y)来构建梯度方向的直方图,接着将窗口图像划分成若干个cells,本实例将64*64窗口图像划分成8*8个cells,并统计每个cell的梯度方向直方图,即可形成每个cell的描述符,再接着将连续2个cell组成一个block,总共有7*7个block,一个block内所有cell的特征描述符串联起来便得到该block的hog特征描述符,最后将图像内的所有block的hog特征描述符串联起来就可以得到该通道分量的hog特征,本实例中得到的hog特征向量维数为2×2×9×7×7=1764;

步骤1.6:进行区间归一化,即对步骤1.5最后得到的该通道分量的梯度方向直方图特征的向量进行归一化。由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大,因此需要对梯度强度作归一化。本实例采用如下归一化方式:

式中,v表示还没有归一化的向量,ε表示一个很小的常量;

步骤2:输入待检测的视频,提取待检测的视频的当前帧图像并进行预处理,再对预处理后的当前帧图像进行降采样,对降采样后的图像提取感兴趣区域(roi),计算roi内的hog特征,再通过步骤1训练好的人头分类器进行乘客人头目标识别;

具体地,使用roi圈定目标,可以减少处理时间,增加精度,包括以下几个步骤:

步骤2.1:对输入待检测的视频的当前帧图像进行降采样处理,先提取图像f(x,y)的宽和高,分别记为m和n。本实例中,m=1280,n=780,因为宽m和高n均为偶数则直接进行降采样操作;

降采样方式为隔行隔列降采样,其公式为:

式中,m为输出图像g(x,y)的宽,n为输出图像g(x,y)的高;

步骤2.2:针对所检测的公交车视频,对降采样图像g(x,y)选取合适的roi,本实例中roi区域大小为545*320;

步骤2.3:计算兴趣区域内的梯度方向直方图特征,再通过步骤1训练好的人头分类器进行乘客人头目标识别。

步骤3:若无检测队列和跟踪队列,则新建检测队列和跟踪队列,再转入步骤4;否则直接转入步骤4;

步骤4:判定分类器是否检测到目标;若检测到人头目标,采用非极大值抑制算法(nms)进行多余框处理并标记目标区域,将目标区域加入到检测队列,再判定跟踪队列是否为空,若为空,则将目标区域加入到跟踪队列;若不为空,则对跟踪队列中已有目标采用核相关滤波跟踪算法(kcf)进行跟踪,并用新的目标区域更新当前跟踪队列;若当前帧内检测队列和跟踪队列都不为空,则进行步骤5;

具体地,若检测到人头目标,采用nms可以过滤掉一些内部窗口等,达到窗口融合效果,从而使检测的准确率更高。在判定跟踪队列若不为空时,对跟踪队列中已有目标采用kcf算法,其跟踪效果和跟踪速度优秀,可以进行有效地跟踪,具体步骤如下:

步骤4.1:判定人头分类器是否检测到人头目标,当人头分类器检测到人头目标后,会出现交叉重复的矩形框,于是采用nms进行多余矩形框剔除,得到最佳的目标位置,并将包含最佳目标位置的当前图像和最佳目标位置加入到检测队列。本实例人头分类器进行人头检测效果如图3所示,其中乘客人头的检测框用外接矩形框来表示;

步骤4.2:判断跟踪队列是否为空,若为空,则读取跟踪队列中的目标,设跟踪队列中的样本图像为xc,记xc是1×n的向量,使用循环移位矩阵p对唯一的样本图像进行循环移位,得到训练样本集合{pixc|i=0,1,…,n-1},其中p为:

记xi为循环移动i位后的训练样本,xi=pix,将x0x1…xn-1构成循环矩阵x;

x=c(x)=[x0x1…xn-1]t(6)

然后对训练样本集合赋予标签yi,yi服从高斯分布;

步骤4.3:对跟踪队列中已有目标进行kcf分类器训练,训练分类器的过程可以用以下数学公式描述:

λ是正则化参数,用来防止过拟合,w指训练xi与其对应标签yi构成的点zi=(xi,yi)前面的系数,通过求解使得式(7)最小,得最优解为:

式中,ai为对应训练样本xi的系数,是将训练样本xc映射到高维度特征空间的函数,任意两个样本xc和xc*在高维度特征空间的相关性或相似度为κ为高斯核函数;

式中,xc'为与xc不同的另外一张样本图像,f是离散傅里叶变换;f-1为离散傅里叶逆变换。由所有训练样本pixc构造核矩阵k,k的元素ki,j=κ(xi,xj),其中,xi,xj就是步骤4.2中的循环移动i位和j位后的训练样本;

参考线性最小二乘法求解方法对式(7)进行求解,得到基于核函数的岭回归的解为:

a=(k+λi)-1y(10)

对上式进行傅里叶变换,得

式中,为a的离散傅里叶变换,a=[a1,a2,…an],为核矩阵k的第一行向量。于是训练分类器的过程从寻找最优解w转化为寻找最优a,a指包含ai在内的训练样本xi的系数;

步骤4.4:快速检测,对于新输入的图像区域z,z为目标的概率大小为:

其中,ai是a中的元素,kcf同样对新输入的图像z进行循环移位操作来构造候选区域样本集pi-1z,定义矩阵kz=κ(pi-1z,pj-1xc),其满足循环矩阵的条件:

式中,为kz矩阵的第一行,从而得到输入图像z在所有候选区域位置处成为跟踪目标的概率分布f(z):

可知f(z)为1×n向量,f(z)元素值对应所有候选区域称为跟踪目标的概率值,f(z)取到最大值的元素所对应区域即为跟踪目标,并用该跟踪目标的新信息去更新跟踪队列。本实例中某段视频跟踪效果如图4所示,其中乘客的跟踪框用外接圆形框来表示;

步骤5:将检测队列和跟踪队列通过匈牙利算法进行数据关联,若关联匹配成功,则将跟踪队列中该目标的属性用跟踪队列关联上的检测队列中目标的属性更新代替,若关联匹配失败,则作为新目标加入到跟踪队列;

具体地,由于检测不一定保证每帧都能检测到对应的目标,因此对于同一乘客的检测框和跟踪框需要用一种方法进行匹配,让计算机判定为同一目标,以防重复计数。本实例中数据关联匹配采用匈牙利算法,包括以下几个步骤:

步骤5.1:设{dk}和{tl}分别为检测队列和跟踪队列,{xk,yk}为检测序列中第k个检测目标的中心点,{xl,yl}为跟踪序列中第l个检测目标的中心点,定义二者的空间距离为:

由此可得跟踪目标队列和检测目标队列之间的距离矩阵为:

步骤5.2:如果dkl在距离矩阵a第k行和第l列中均属于最大值,则认为检测目标dk能和跟踪目标tl正确关联匹配上,然后去掉矩阵a中的k行和l列,得到新矩阵a*,在a*中继续寻找满足关联条件的项,若存在这样的项,则认为检测目标和跟踪目标正确关联匹配上,于是用检测目标的信息去更新以此反复迭代下去。

步骤6:对跟踪队列各目标进行运动轨迹分析,设置虚拟线,若有目标“越过”,则上或下车人数加或减一,得到当前帧车内乘客人数,本实例测试出的下车人数如图5所示,其中下车人数用变量exitnum来表示,该视频当前帧数用变量framenum来表示;

步骤7:判定当前帧是否为最后一帧,若不是,则进入下一帧重复步骤2到步骤7;否则,步骤6所得车内乘客人数为最终车内乘客人数。

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