HTML
-
数据预处理过程包括人头部标记以及高斯滤波均采用MATLAB语言,卷积神经网络训练及测试过程采用PYTHON语言。实验详细步骤如图 4所示。第1步从人群计数数据集中提取原始图像数据,对每幅图像中人头部正中的位置进行标记,每个红点代表相应位置上出现一个人头部,并存储人头部标记位置和图像中人头部个数;第2步是图像预处理,将标记完成的图像与高斯核卷积生成密度图文件,密度图文件为矩阵形式,同时将原始图像以及对应的密度图文件中每个文件随机分割成9小份以扩增数据集;第3步将原始图像输入构造的基于多模型融合的深度卷积神经网络模型中,训练网络并优化权值;第4步通过验证集挑选出性能最优的网络模型;最后将测试图像输入性能最优的权值模型中进行测试,输出模型生成的人群密度图以及对应的预测人数,并与标准的密度图对比计算出损失函数。
实验运行硬件环境如下:Intel(R) Core(TM) i7-3770 CPU处理器、NVIDIA GeForce GTX 1060 6GB显卡、8.00GB RAM。实验运行软件环境如:ubuntu16.04操作系统, Python2.7, Matlab2014a, CUDA8.0, CUDNN6.0, OPENCV2.0, Pytorch深度学习框架。
-
现有的传统人群计数方法均采用平均绝对误差(mean absolute error,MAE)和均方误差(eean squared error,MSE)两种误差来评估模型的性能,本文中也采用这两种误差作为评价指标,其定义如下:
式中,N为输入测试图像的总数量,ci是第i幅图像的实际人群数量,$\hat c$ i是第i幅图像模型估计出的人群数量。MAE和MSE是常用的衡量算法性能的评价指标,前者的数值越小,表明方法估计得越精确;后者越小,表明方法估计的鲁棒性越高,对抗不稳定因素干扰的能力越强。
-
shanghaitech数据集是由上海科技大学采集的人群计数图像集,这个数据集包含1198幅原始图像和总计330165个人头部标记,分为part A和part B两个子集。part A是从互联网上挑选出的图像,这一子集图像的人群密度通常是非常高的;part B中的图像来自于上海繁华的闹市区,而这部分图像人群相对地稀疏。表 1为数据集内容组成成分。正因为该数据集是现有人群计数数据集中带有标记最大的一个,而且两个子集之间人群密度存在较大的差异,所以在这个数据集上验证提出模型的鲁棒性是具有挑战性的。
shanghaitech dataset number of images part A train 300 test 182 part B train 400 test 316 total 1198 Table 1. Image composition of shanghaitech dataset
在shanghaitech数据集上比较了本文中方法与现有不同方法之间的性能差异。从表 2中可以看出,本文中的人群计数方法取得了最好的MAE和与现有方法很接近的MSE。
method part A part B MAE MSE MAE MSE LBP+RR[9](local binary
pattern+ridge regression)303.2 371.0 59.1 81.7 MCNN-CCR(MCNN based crowd
count regression)245.0 336.1 70.9 95.9 ZHANG[16] 181.8 277.7 32.0 49.8 MCNN[1](multi-column con
volutional neural network)110.2 173.2 26.4 41.3 our method 97.99 158.02 23.36 41.86 Table 2. Comparison of our method and the other four methods in shanghaitech dataset
-
UCF_CC_50数据集同样是著名的人群计数数据集,由IDREES等人首先提出。该数据集中仅有50幅来自互联网的图像,且每幅图像中人数波动较大,平均每幅图像中有1280个人,因此UCF_CC_50是一个进行人群估计较为困难的数据集。IDREES等人为这个数据集添加了63974个人头部标注。本文中采用5种交叉验证方法在这个数据集上验证提出人群计数模型的性能。
在UCF_CC_50人群计数数据集上,同样比较了本文中的方法与现有5种方法之间的性能差异。从表 3中可以看出, 提出的人群计数方法取得了最好的MAE和与现有方法接近的MSE。
-
在图像预处理阶段,对图像中出现人头部的位置添加高斯核时,由于不同大小的高斯核将直接地影响卷积神经网络的收敛速度及测试性能,因此采用不同大小的高斯核进行图像预处理,通过对比实验确定网络性能最优时高斯核的大小。本文中在UCF_CC_50数据集上采用不同大小的高斯核对输入图像进行预处理,对比实验如表 4所示。结果表明, 当高斯核大小为39时,网络模型可以获得最优的性能。
Gaussian kernel size MAE MSE 30 406.17 558.63 35 392.21 552.86 39 354.27 501.68 40 387.65 510.26 45 420.43 562.17 50 398.25 541.11 Table 4. Comparison experiment of different Gaussian kernel sizes in UCF_CC_50 dataset
在构造的基于多模型融合的深度卷积神经网络当中,将卷积核大小为1×1的卷积层代替传统卷积神经网络的全连接层,极大地降低了网络参量,同时人群计数精度还有一定的提升。在shanghaitech和UCF_CC_50两个数据集上进行了1×1卷积核层与全连接层不同网络结构之间的对比实验,如表 5和表 6所示。对比结果表明, 采用卷积层代替全连接层的结构误差相对于传统结构较低。
network structure part A part B MAE MSE MAE MSE fully connected layer 102.78 172.60 25.48 46.07 convolution layer with
filter size is 1×197.99 158.02 23.36 41.86> Table 5. Comparison experiment of different network structures in shanghaitech dataset
network structure MAE MSE fully connected layer 378.83 535.60 convolution layer with filter size is 1×1 354.27 501.68 Table 6. Comparison experiment of different network structures in UCF_CC_50 dataset
-
如果一种人群计数模型在一个包含不同大小人头部的大型数据集上被训练,然后可以很容易地迁移或适应于另一个相似的人群计数数据集上,则证明了该种模型良好的泛化能力。为了证明作者提出的人群计数模型的泛化能力,进行迁移学习测试实验。本文中进行两组迁移学习测试:第1组,在shanghaitech数据集上训练出性能较优的权值模型,然后在UCF_CC_50数据集上测试人群计数结果和误差; 第2组, 在UCF_ CC_50数据集上训练模型优化网络,在shanghaitech数据集上测试人群计数结果和误差,两组迁移学习实验如表 7所示。
grouping MAE MSE group 1 319.89 409.59 group 2 165.49 249.03 Table 7. Two groups of experimental errors in transfer learning
从表 7中可以看出, 本文中的方法在第1组实验中平均绝对误差约为319.89,在第2组实验中平均绝对误差约为165.49。由于UCF_CC_50数据集中图像之间人群密度变化极为剧烈,所以第1组估计误差较高。实验结果表明:本文中提出的人群计数模型在一个数据集上训练得到性能较优的权值模型,可以较容易地迁移到另一不同的人群计数数据集上。