一种基于膨胀卷积的人群密度图生成方法与流程

文档序号:16470608发布日期:2019-01-02 23:03阅读:347来源:国知局
一种基于膨胀卷积的人群密度图生成方法与流程

本发明涉及一种数字图像处理技术,尤其涉及的是一种基于膨胀卷积的人群密度图生成方法。



背景技术:

随着中国城市化水平的不断提高,越来越多的人口涌入城市工作生活,人口密度大的城市中许多公共基础设施,如火车站、地铁站、公交车站以及超市等经常会迎来短期的人流高峰,一方面人群的高度拥挤容易造成灾祸,具有很大的安全隐患;另一方面,在人流高峰期,若不能对人群进行迅速有效疏散分流,也会对居民日常生活造成不便。针对这一现状,近年来城市的许多公共场合都安装了监控系统对人群进行监控。传统的人群监控系统都是通过闭路电视对不同场景进行监视,由监控室的工作人员针对监视场景中的情形进行人工判断。这种方法具有主观性,不能定量分析,而且耗费人力,尤其当监控人员疲惫的时候,容易忽视监视器上的突发状况,从而造成不可挽回的后果。随着现代数字图像和视频处理技术的发展,自动、实时的智能化人群密度监控系统成为人们的研究重点。

中国发明专利公开号为cn103985126a,介绍了一种计算视频图像中的人群密度图的方法,该方法通过harris算法提取图像中的角点,对每个角点进行密度扩散,获取检测区域内相应于该角点的每个像素点的密度扩散值,再将该扩散值进行累加,获得该像素点的密度值,由密度值得到人群密度图。由于角点和人群之间没有一一对应关系以及角点检测本身存在一定不确定性,导致得到的人群密度图精确性不高。

中国发明专利公开号为cn106203331a,介绍了一种基于卷积神经网络的人群密度估算方法,构建了一个基于mixed-pooling的卷积神经网络模型,将图像监控区域按照远近分为两个分开,采用随机梯度下降算法分别训练一个卷积网络模型,最后利用提出的分类检测策略对整体区域人群密度进行估计。该方法相对于传统方法改善了人群密度估计准确率,但是因为采用了池化运算没有生成输入图像尺寸的人群密度图,不能提供直观的人群密度信息,人群密度估计准确率也有待进一步提高。



技术实现要素:

本发明所要解决的技术问题在于:无法生成高精度原图像尺寸大小的人群密度图,提供了一种基于膨胀卷积的人群密度图生成方法。

本发明是通过以下技术方案解决上述技术问题的,本发明包括以下步骤:

(1)从网络上下载现有的关于人群密度估计的数据库;

(2)从现有的数据库中根据人群密度的大小挑选训练样本构建两个新的训练数据库:小人群密度数据库,大人群密度数据库;

(3)基于两个新的训练数据库,分别离线训练一个膨胀卷积cnn网络模型:简称小cnn网络模型m1,大cnn网络模型m2;

对卷积网络进行训练的过程如下:

第一步:前向计算最终的输出结果,在整个网络中,每层网络对象里面都有一个前向计算该层网络输出结果的函数,即前向传播函数,当前层的前向传播函数计算完成之后,先把数据保存在当前对象中,然后进入下一层的前向传播函数继续进行计算,最终,整个网络的每一层的输出都会计算到;

第二步:反向传播计算梯度,每一层网络中有进行反向传播的函数,根据反向传播函数先计算输出和目标的差值,然后利用插值先计算最后的输出相对于倒数第二层的梯度,等计算完毕,参数保存之后,再计算插值相对于倒数第三层的梯度,一直循环下去,每个网络的前向后向传播的实现函数都不相同;

第三步:更新权值和偏置网络参数,更新网络参数利用前面计算得到权值和偏置的梯度对网络参数进行修正;

(4)在测试阶段,根据运动区域检测和运动区域的纹理分析得到人群密度粗略估计,根据估计的人群密度大小选择使用步骤(3)训练得到的小cnn网络模型或大cnn网络模型,得到精确的输入图像尺寸大小的人群密度图。

所述前向传播函数的形式为y=f(wx+b),x是每层网络的输入,w是每层网络的权重,w根据随机初始化策略进行初始化,后面则反向传播来迭代权重,b是偏置,默认初始化全部为0,f是激活函数,激活函数为非线性函数。

所述步骤(1)中所下载的数据库图像需要有用于可模型训练对应的人群密度真值图。

所述反向传播函数的具体形式为其中w是网络权重参数,η是学习率,表示网络权重参数更新的速率,δi表示第i层网络的输出,表示激活响应函数的梯度响应,x表示输入i分量。

所述骤2中训练样本的选择满足以下要求:1)场景的多样性;2)光照的多样性;3)图像中人群数量的多样性;4)图像中人群行为多样性;5)图像尺寸的多样性;6)摄像头角度的多样性。

所述m1中5个卷积层c1~c5,其中,c1卷积层的卷积核为3*3,滤波器数量为36个,步长为1;c2卷积层采用膨胀卷积,膨胀率为2,卷积核为7*7,滤波器数量为72,步长为1;c3卷积层采用膨胀卷积,膨胀率为4,卷积核为15*15,滤波器数量为36,步长为1,c4卷积层采用常规的卷积,卷积核为3*3,滤波器数量为24个,步长为1;c5卷积层是一个1*1的卷积,主要将多通道信息映射为单通道输出结果。

所述m2中的c1卷积层的卷积核为3*3,滤波器数量为36个,步长为1,膨胀率为1;c2卷积层的卷积核为3*3,滤波器数量为36,步长为1,膨胀率为1;c3卷积层的卷积核为3*3,滤波器数量为72,步长为1,膨胀率为1,c4卷积层的卷积核为3*3,滤波器数量为72个,步长为1,膨胀率为1;c5卷积层的卷积核为3*3,滤波器数量为36,步长为1,膨胀率为2;c6卷积层的卷积核为3*3,滤波器数量为36个,步长为1,膨胀率为4;c7卷积层的卷积核为3*3,滤波器数量为24个,步长为1,膨胀率为8;c8卷积层的卷积核为3*3,滤波器数量为24个,步长为1,膨胀率为16;c9卷积层是一个1*1的卷积,主要将多通道信息映射为单通道输出结果。

本发明相比现有技术具有以下优点:本发明根据人群密度大小能够自动选择相应复杂度的模型快速进行人群密度估计,可以满足实时视频处理要求;因为采用膨胀卷积技术,可以生成和输入图像尺寸一样大小的人群密度图,结合输入图像可以提供直观的人群密度信息;因为训练数据库的多样性,对于不同环境、光照、天气、摄像头角度都有良好的适应性。

附图说明

图1是本发明的流程图。

具体实施方式

下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

如图1所示,本实施例包括以下步骤:

步骤(1):

从网上下载现有的关于人群密度估计的数据库;

关于人群密度估计目前网络上主要有以下数据库:

1)ucsdpedestriandataset,该数据集分为ucsdpedestrian,peopleannotation,peoplecounting三个部分;

2)pets2009benchmarkdata,该数据集包含s0,s1,s2,s3四个子集,s0为训练数据,s1为行人计数和密度估计,s2为行人跟踪,s3为流分析和事件识别;

3)malldataset,主要是室内人群密集场所的数据;

4)shanghaitechdataset,该数据库有一部分是从网上搜集的,一部分是上海市人群密集场所的监控照片;

5)ucf_cc_50中佛罗里达大学建立的一个关于人群密度估计方面的数据库。

首先从网络上分别下载这5个关于人群密度估计的数据库,以此为基础构建训练数据库。

步骤(2):

从步骤(1)下载的5个数据库中根据人群密度的大小挑选合适的训练样本构建两个新的训练数据库:人群密度小的数据库a,人群密度大的数据库b;这里我们可以将图像中低于二十人的归入数据库a,大于等于二十人的图像归入数据库b。

训练样本的选择需要满足以下要求:

1)场景的多样性,尽可能的从各种不同的公共场所选择图像;

2)光照的多样性,白天,夜晚,黄昏,晴天,雨天,雾天等天气都应有所包括;

3)图像中人群数量的多样性;

4)图像中人群行为多样性,有序移动,无序移动,快速移动,慢速移动等;

5)图像尺寸的多样性,各种尺寸大小的图像都有包含;

6)摄像头角度的多样性。

步骤(3):

基于两个新建的训练数据库a和b,分别离线训练对应的两个膨胀卷积cnn网络模型:简称小cnn网络模型m1,大cnn网络模型m2;

首先设计小cnn网络模型m1:

m1采用7层网络结构,包括输入层、5个卷积层c1~c5以及输出层。

c1卷积层的卷积核为3*3,滤波器数量为36个,步长为1,膨胀率为1;c2卷积层的卷积核为3*3,滤波器数量为72,步长为1,膨胀率为1;c3卷积层的卷积核为3*3,滤波器数量为36,步长为1,膨胀率为2,c4卷积层的卷积核为3*3,滤波器数量为24个,步长为1,膨胀率为4;c5卷积层是一个1*1的卷积,主要将多通道信息映射为单通道输出结果。

m2采用11层网络结构,包括输入层、9个卷积层c1~c9以及输出层。

m2的设计与m1设计类似,多了四个卷积层。c1卷积层的卷积核为3*3,滤波器数量为36个,步长为1,膨胀率为1;c2卷积层的卷积核为3*3,滤波器数量为36,步长为1,膨胀率为1;c3卷积层的卷积核为3*3,滤波器数量为72,步长为1,膨胀率为1,c4卷积层的卷积核为3*3,滤波器数量为72个,步长为1,膨胀率为1;c5卷积层的卷积核为3*3,滤波器数量为36,步长为1,膨胀率为2;c6卷积层的卷积核为3*3,滤波器数量为36个,步长为1,膨胀率为4;c7卷积层的卷积核为3*3,滤波器数量为24个,步长为1,膨胀率为8;c8卷积层的卷积核为3*3,滤波器数量为24个,步长为1,膨胀率为16;c9卷积层是一个1*1的卷积,主要将多通道信息映射为单通道输出结果。

卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的样本对卷积网络加以训练,网络就具有输入输出对之间的映射能力。卷积网络执行的是有监督训练,所以其样本集是由形如:(输入向量,理想输出向量)的向量对构成的,这里的输入输出都是图像,可以看做特殊向量。这些向量对,是来源于网络即将模拟的系统的实际运行结果。它们是从实际运行系统中采集来的。在开始训练前,所有的权值用一些不同的小随机数进行初始化。小随机数用来保证网络不会因权值过大而进入饱和状态,从而导致训练失败;不同用来保证网络可以正常地学习。

本实施例具体的计算权值和更新网络参数过程如下:更新网络参数首先需要计算梯度,即最终的cost相对于每层网络的每一个权值和偏置的梯度,这个计算的过程很漫长,分为下面几步:

第一步:前向计算最终的输出结果,在整个network中,每层网络对象里面都有一个前向计算该层网络输出结果的函数,forward_propagation()函数,当前层的forward_propagation计算完成之后,先把数据保存在当前对象中,然后进入下一层的forward_propagation函数继续进行计算。最终,整个网络的每一层的输出都会计算到,然后就是做反向传播计算梯度。前向传播函数的形式为y=f(wx+b),x是每层网络的输入,w是每层网络的权重,w根据随机初始化策略进行初始化,后面则反向传播来迭代权重,b是偏置,默认初始化全部为0,f是激活函数,激活函数为非线性函数。它存在的价值就是给神经网络提供非线性建模能力。激活函数的种类有很多,比如sigmoid函数,tanh函数,relu函数等,本实施例选择relu函数。

第二步:反向传播的实现过程和正向传播类似,每一层网络中也有进行反向传播的函数,back_propagation()函数。先计算输出和目标的差值,然后利用插值先计算最后的输出相对于倒数第二层的梯度,等计算完毕,参数保存之后,再计算插值相对于倒数第三层的梯度,就这样一直循环下去,每个网络的前向后向传播的实现函数都不相同。反向传播函数的具体形式为其中w是网络权重参数,η是学习率,表示网络权重参数更新的速率,δi表示第i层网络的输出,表示激活响应函数的梯度响应,x表示输入i分量。

第三步:更新权值和偏置网络参数,更新网络参数利用前面计算得到权值和偏置的梯度对网络参数进行修正。

到此,一次网络的训练过程就完毕,下面就是利用不同的样本执行同样的过程,对于某一个单一的样本,程序并不是训练到完全符合最终的目标输出才完毕,而是训练一次更新以下权值就立即训练下一个样本,这样的训练是没有问题的。

步骤(4):

在线测试阶段,从视频终端监控视频中实时获取人群密度估计的检测图像,首先根据运动区域检测和运动区域的纹理分析得到人群密度粗略估计,低于二十人的我们选择使用小cnn网络模型m1,大于等于二十人的图像我们选择大cnn网络模型m2,得到精确的输入图像尺寸的人群密度图。有了最终的人群密度图,可以进一步通过对密度图进行积分得到人数估计。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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