基于深度学习的视频中人群分布检测与计数方法
文献发布时间:2023-06-19 12:13:22
技术领域
本发明涉及视频图像处理技术领域,具体涉及一种基于深度学习的视频中人群分布检测与计数方法。
背景技术
近年来,随着计算机视觉的发展,智能视频监控技术逐渐应用于交通安全、公共安防等领域。人群分布检测与计数是智能视频监控邻域的一个研究热点,有着重要的社会意义和市场应用前景。例如,在人群容易聚集的公共场所,人群计数与分布检测可以对踩踏等安全问题进行预警,并实现人力、物力及资源的合理分配与调度;对于城市公共交通系统,可以根据乘客数量变化灵活调派车辆,既提高乘客出行质量又能保证车辆利用率;对于大型商场,可以通过客流量信息来制定更好的营销策略,提高经济效益。
目前人群计数的方法主要可以分为三类:基于检测的方法、基于回归的方法和基于密度图的估计。
基于检测的方法出现得较早,通过检测单个物体,例如头部或身体某个部位,计算图像中的总数。基于检测的方法存在的主要缺陷是在复杂场景下存在大量遮挡,导致该方法准确率较低。
基于回归的方法能有效解决这一问题,其主要思想是通过学习一种特征到人群数量的映射,首先提取低级的特征,随后学习一个回归模型,建立一个低级特征到人群数的映射关系。基于回归的方法的缺点是对空间信息考虑较少和缺乏可解释性。
基于密度图估计的方法通过学习人群分布的密度图,保证了人群计数准确性的同时,保留了图像中人与人之间的空间信息,有利于后续的人群分析工作。但现有的这类方法大多没有充分考虑背景的影响,会导致误识别,并且对整个图像上所有的人群区域都给予相同的注意力,不符合人类视觉系统的特点。
因此,亟需提供一种人群计数方法,克服以上三种现有方法存在的问题。
发明内容
本发明的目的在于,提供一种准确率高的基于深度学习的视频中人群分布检测与计数方法。
为实现上述目的,本发明所设计的基于深度学习的视频中人群分布检测与计数方法包括以下步骤:
步骤(1),获取大量含不同密度人群的视频,制作数据集,所述数据集包括训练样本集、测试样本集及真实密度图;
步骤(2),建立基于注意力机制的深度神经网络;
步骤(3),将训练样本集输入到深度神经网络,设置训练参数,利用损失函数进行训练,直至损失减小到一定程度且训练达到迭代最大次数,生成训练模型;
步骤(4),将测试样本集输入至训练好的模型中,输出人群密度图,评估模型性能;
步骤(5),用CFDP聚类方法对人群密度图进行点聚类来识别组群,快速得到组群的人数和位置信息。
作为优选实施方式,在所述步骤(2)中,基于注意力机制的深度神经网络具体包括以下网络模块:
特征图提取器,用于从人群图像中提取出一般特征图,作为后续模块的输入;
人群区域识别器,用于判断一个区域是否包含人群,并生成一幅粗粒度注意力图CAM;
密度等级估计器,用于估计有人群区域的密度等级,生成一幅细粒度注意力图FAM;
密度图估计器,在细粒度注意力图FAM的帮助下生成一幅高分辨率、高质量的密度图。
作为优选实施方式,所述特征图提取器为编码器-解码器模式,采用VGG16的前10个卷积层和3个池化层作特征提取,在每个阶段分别获得大小为1、1/2、1/4、1/8的特征图;
所述人群区域识别器将特征图中的每个像素点分为人群区域和背景区域两类,所述人群区域识别器包含5个卷积层和3个上采样层;
所述密度等级估计器进一步将人群区域分类为不同的密度等级,所述密度等级估计器包含5个卷积层和3个上采样层;
所述密度图估计器生成高分辨率、高质量的密度图,所述密度图估计器包含5个卷积层和3个上采样层。
作为优选实施方式,所述特征图提取器的网络结构是:C(64,3) *2-P-C(128,3)*2-P-C(256,3)*2-P-C(512,3)*2,其中C表示卷积层,C(64,3)是卷积核大小为3*3、64通道的卷积层,P表示窗口大小为2*2的最大池化层;
所述人群区域识别器的网络结构是:C(256,3)-U-C(128,3)-U- C(128,3)-U-C(64,3)-C(1,3),其中,C表示卷积层,C(256,3) 是卷积核大小为3*3、256通道的卷积层,U代表系数为2的双线性上采样层;
所述密度等级估计器的网络结构是:C(256,3)-U-C(128,3)-U- C(128,3)-U-C(64,3)-C(1,3),其中,C表示卷积层,C(256,3) 是卷积核大小为3*3、256通道的卷积层,U代表系数为2的双线性上采样层;
所述密度图估计器的网络结构是:C(512,3,2)-U-C(256,3,2)- U-C(256,3,2)-U-C(64,3,2)-C(1,1),其中,C表示卷积层,C(512,3,2) 是实际卷积核大小为3*3、膨胀率为2、512通道的空洞卷积层,U代表系数为2的双线性上采样层。
作为优选实施方式,在所述步骤(2)中:
在人群区域识别器的每个阶段,特征图输入3*3的卷积层,生成一幅粗粒度注意力图CAM,然后输入密度等级估计器的对应阶段;
在密度等级估计器的每个阶段,特征图输入3*3的卷积层,生成一幅细粒度注意力图FAM,修正后的细粒度注意力图FAM'的计算公式为::FAM′=FAM+CAM,将修正后的细粒度注意力图FAM'输入密度图估计器的对应阶段;
在密度图估计器的每个阶段,修正后的特征图FM'的计算公式为: FM′=FM+FAM′*FM,修正后的特征图被上采样至输入图像大小后输入3*3的卷积层,生成一幅密度图。
作为优选实施方式,在所述步骤(2)中,人群区域识别器、密度等级估计器、密度图估计器模块的损失函数求和后反向传播。
作为优选实施方式,所述步骤(3)中生成训练模型包括以下步骤:
步骤(3.1),将训练样本集输入到深度神经网络,每个图像被随机裁剪成
步骤(3.2),特征图提取器由预训练的VGG-16网络的参数初始化,其它参数由σ=0.01的高斯分布随机初始化;采用Adam优化算法,迭代次数为500,学习率为2e-5且每迭代100次减小一半;
步骤(3.3),利用损失函数进行训练,得到一个用于人群计数的模型,取网络最深层的输出密度图作为输出密度图,对密度图积分得到人数。
作为优选实施方式,损失函数L
L
其中,SL为结构损失函数,BL为背景损失函数,L
作为优选实施方式,所述结构损失函数SL定义为:
其中,DM和
所述背景损失函数BL定义为:
其中,C
作为优选实施方式,在所述步骤(4)中,评价指标包括平均绝对误差MAE、均方根误差RMSE、结构相似性SSIM和峰值信噪比PSNR;
所述平均绝对误差MAE、所述均方根误差RMSE按照如下方式计算:
其中,
所述结构相似性SSIM和所述峰值信噪比PSNR的计算公式如下:
其中,MAX表示图像可能的最大像素值,此处为255;DM(i)表示真实密度图的每个像素,
作为优选实施方式,所述步骤(1)中的制作数据集方法包括以下步骤:
步骤(1.1),将视频切割成图像帧,对每幅图像中的每个人头的中心进行标注,在标注后的图像中挑选2/3作为训练样本集,剩余1/3 作为测试样本集。
步骤(1.2),将每个人头的标注点p
作为优选实施方式,所述步骤(5)包括以下步骤:
步骤(5.1),对于每个数据点i,计算高斯核相似度作为每个点i 的局部密度ρ
其中,d
(5.2)将局部密度从大到小排序,并求出最大密度ρ
(5.3)计算点i到更高密度点的距离δ
(5.4)将具有高局部密度和相对较高的距离的点作为聚类中心,具有低局部密度和相对较高的距离的点作为异常点;
(5.5)将点i归于高于该点密度的距离最近点的类别:x
(5.6)将每个类别中与其它类别的点的距离小于d
(5.7)根据聚类结果划分组群,对每一个组群内的密度图进行积分得到该组群的人数,根据密度图聚类的位置在原图上框出组群位置。
本发明的有益效果是:本发明的基于深度学习的视频中人群分布检测与技术方法可以准确地检测出有人群的区域,并且高精度的估计密集人群的人数。
附图说明
图1为本发明的基于深度学习的视频中人群分布检测与计数方法的整体流程图;
图2为本发明实施例的基于深度学习的视频中人群分布检测与计数方法的注意力机制的深度神经网络的示意图;
图3为利用本发明实施例的基于深度学习的视频中人群分布检测与计数方法的检测结果示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的详细说明。
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于深度学习的视频中人群分布检测与计数方法的流程示意图如图1所示,具体包含以下步骤:
步骤(1),获取大量含不同密度人群的视频,制作数据集。
在步骤(1)中,数据集包括训练样本集、测试样本集及真实密度图。步骤(1)中的制作数据集方法具体包括以下步骤:
步骤(1.1),将视频切割成图像帧,对每幅图像中的每个人头的中心进行标注,在标注后的图像中挑选2/3作为训练样本集,剩余1/3 作为测试样本集。
步骤(1.2),将每个人头的标注点p
步骤(2),建立基于注意力机制的深度神经网络。
基于注意力机制的深度神经网络如图2中所示。步骤(2)中的基于注意力机制的深度神经网络具体包括四个网络模块组合而成:特征图提取器、人群区域识别器、密度等级估计器、密度图估计器。
特征图提取器,用于从人群图像中提取出一般特征图,作为后续模块的输入;人群区域识别器,用于判断一个区域是否包含人群,并生成一幅粗粒度注意力图CAM;密度等级估计器,用于估计有人群区域的密度等级,生成一幅细粒度注意力图FAM;密度图估计器,在细粒度注意力图的帮助下生成一幅高分辨率、高质量的密度图。
步骤(2.1),特征图提取器设计为编码器-解码器模式,采用VGG16 的前10个卷积层和3个池化层作特征提取,在每个阶段分别获得大小为1、1/2、1/4、1/8的特征图。
特征图提取器的具体的网络结构是:C(64,3)*2-P-C(128,3)*2- P-C(256,3)*2-P-C(512,3)*2,其中C表示卷积层,C(64,3)是卷积核大小为3*3、64通道的卷积层,P表示窗口大小为2*2的最大池化层。
步骤(2.2),人群区域识别器将特征图中的每个像素点分为两类:人群区域和背景区域。
人群区域识别器包含5个卷积层和3个上采样层,具体的网络结构是:C(256,3)-U-C(128,3)-U-C(128,3)-U-C(64,3)-C(1,3),其中C表示卷积层,C(256,3)是卷积核大小为3*3、256通道的卷积层,U代表系数为2的双线性上采样层。在人群区域识别器的每个阶段,特征图输入3*3的卷积层,生成一幅粗粒度注意力图CAM,然后输入密度等级估计器的对应阶段。
步骤(2.3),密度等级估计器进一步将人群区域分类为不同的密度等级。
密度等级估计器包含5个卷积层和3个上采样层,具体的网络结构是:C(256,3)-U-C(128,3)-U-C(128,3)-U-C(64,3)-C(1,3),其中,C表示卷积层,C(256,3)是卷积核大小为3*3、256通道的卷积层,U代表系数为2的双线性上采样层。
在密度等级估计器的每个阶段,特征图输入3*3的卷积层,生成一幅细粒度注意力图FAM。将特征图输入卷积层生成的细粒度注意力图FAM和之前得到的粗粒度注意力图CAM相加得到更精确的修正后的细粒度注意力图FAM':FAM′=FAM+CAM。然后,将修正后的细粒度注意力图FAM'输入密度图估计器的对应阶段。
步骤(2.4),密度图估计器生成高分辨率、高质量的密度图。
密度图估计器包含5个卷积层和3个上采样层,具体的网络结构是:C(512,3,2)-U-C(256,3,2)-U-C(256,3,2)-U-C(64,3,2)-C(1,1),其中,C表示卷积层,C(512,3,2)是实际卷积核大小为3*3、膨胀率为2、512通道的空洞卷积层,U代表系数为2的双线性上采样层。
在密度图估计器的每个阶段,对输入密度图估计器的特征图FM 和修正后的细粒度注意力图FAM'进行组合,从而得到更精细的修正后的特征图FM',修正后的特征图FM'的计算公式为:FM′=FM+ FAM′*FM。在密度图估计器的每个阶段,特征图被上采样至输入图像大小后输入3*3的卷积层,生成一幅密度图。
深度神经网络设计多级监督机制,用于协助反向传播和减少过拟合。人群区域识别器、密度等级估计器、密度图估计器等多个模块的损失函数求和后反向传播。这里损失函数L
步骤(3),将训练样本集输入到深度神经网络,设置训练参数,利用损失函数进行训练,直至损失减小到一定程度且训练达到迭代最大次数,生成训练模型。
步骤(3)生成训练模型具体包括以下步骤:
步骤(3.1),将训练样本集输入到深度神经网络,每个图像被随机裁剪成
步骤(3.2),设置训练参数。特征图提取器由预训练的VGG-16 网络的参数初始化,其它参数由σ=0.01的高斯分布随机初始化;采用 Adam优化算法,迭代次数为500,学习率为2e-5且每迭代100次减小一半。
步骤(3.3),利用损失函数L
损失函数L
其中,SL为结构损失函数,BL为背景损失函数;L
考量结构相似性和计数准确率,结构损失函数SL定义为:
其中,DM和
背景损失函数BL用于降低错误识别率,其定义为:
其中,C
对于粗粒度注意力图CAM,如果一个像素在真实密度图中对应位置的值大于1e-5(1e-5即为0.00001),将该像素值设置为1,否则设置为0,以此作为粗粒度注意力图的真实值;对于细粒度注意力图FAM,如果一个像素在真实密度图中对应位置的值小于1e-5,归类为0级,在[1e-5,1]范围内的按大小顺序归到k-1个级中,其中k为人工设置的所有像素的密度等级数量。
步骤(4),将测试样本集输入至训练好的模型中,输出人群密度图,评估模型性能。
将测试样本集输入至训练好的模型中,输出密度图,积分得到人数,计算整个测试集的平均绝对误差MAE、均方根误差RMSE、结构相似性SSIM和峰值信噪比PSNR。
步骤(4)中评价指标包括:评估计数准确性的指标和评估密度图质量的指标。
评估计数准确性的指标:平均绝对误差MAE和均方根误差RMSE,计算公式如下:
评估密度图质量的指标:结构相似性SSIM和峰值信噪比PSNR,计算公式如下:
其中,MAX表示图像可能的最大像素值,此处为255;DM(i)表示真实密度图的每个像素,
步骤(5),用CFDP聚类方法对步骤(4)中输出的人群密度图进行点聚类来识别组群,快速得到组群的人数和位置信息。
CFDP(Clustering By Fast Search And Find Of Density Peaksd)为快速搜索聚类方法,步骤(5)中快速识别组群的方法具体包括:
步骤(5.1),对于每个数据点i,计算高斯核相似度作为每个点i 的局部密度ρ
其中d
步骤(5.2),将局部密度从大到小排序,并求出最大密度ρ
步骤(5.3),计算点i到更高密度点的距离δ
步骤(5.4),将具有高局部密度和相对较高的距离的点作为聚类中心,具有低局部密度和相对较高的距离的点作为异常点。
步骤(5.5),将点i归于高于该点密度的距离最近点的类别:x
步骤(5.6),将每个类别中与其它类别的点的距离小于给定的距离阈值d
步骤(5.7),根据聚类结果划分组群,对每一个组群内的密度图进行积分得到该组群的人数,根据密度图聚类的位置在原图上框出组群位置。
以图3为例,其为采用本发明的基于深度学习的视频中人群分布检测与计数方法的人群计数与组群识别结果示例。由图3可以看出,本发明的方法可以准确地检测出有人群的区域,并且高精度的估计密集人群的人数。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
- 基于深度学习的视频中人群分布检测与计数方法
- 基于卡尔曼滤波与深度学习的视频中全时段车辆检测跟踪方法及系统