«上一篇 下一篇»
  计算机工程  2019, Vol. 45 Issue (7): 203-207  DOI: 10.19678/j.issn.1000-3428.0050951
0

引用本文  

马皓, 殷保群, 彭思凡. 基于特征金字塔网络的人群计数算法[J]. 计算机工程, 2019, 45(7), 203-207. DOI: 10.19678/j.issn.1000-3428.0050951.
MA Hao, YIN Baoqun, PENG Sifan. Crowd Counting Algorithm Based on Feature Pyramid Network[J]. Computer Engineering, 2019, 45(7), 203-207. DOI: 10.19678/j.issn.1000-3428.0050951.

基金项目

总装预研基金(61403120201)

作者简介

马皓(1993-), 男, 硕士研究生, 主研方向为人群计数算法, E-mail:tmac01@mail.ustc.edu.cn;
殷保群, 教授;
彭思凡, 硕士研究生

文章历史

收稿日期:2018-03-27
修回日期:2018-05-24
基于特征金字塔网络的人群计数算法
马皓 , 殷保群 , 彭思凡     
中国科学技术大学 自动化系, 合肥 230026
摘要:由于单张图片人群计数存在严重的人群遮挡和尺度变化问题,导致人群计数算法性能明显下降。为此,提出一种基于特征金字塔网络对图片进行人群计数的算法,并给出能够处理任意图片分辨率的全卷积网络。将特征金字塔网络应用到人群计数中,通过逐层融合网络中不同尺度的特征图来解决图片中的上述问题。在人群计数数据库ShanghaiTech上对网络模型进行训练和性能评测,结果表明,与当前主流的人群计数算法相比,该算法具有更高的鲁棒性和准确性。
关键词人群计数    卷积神经网络    特征金字塔    密度图    平均绝对误差    
Crowd Counting Algorithm Based on Feature Pyramid Network
MA Hao , YIN Baoqun , PENG Sifan     
Department of Automation, University of Science and Technology of China, Hefei 230026, China
Abstract: The single-picture crowd count has a sharp decline in performance due to severe population occlusion and scale changes.Therefore, this paper proposes an algorithm for crowd counting pictures, and gives a Full Convolution Network(FCN) capable of processing the resolution of any picture.The scale change and occlusion problems in the picture are solved by applying the feature pyramid network to the crowd count.The network model is trained and evaluated in the crowd counting database ShanghaiTech, results show that the algorithm has good robustness and accuracy compared with the current mainstream crowd counting algorithm.
Key words: crowd counting    Convolutional Neural Network(CNN)    feature pyramid    density map    Mean Absolute Error(MAE)    
0 概述

近年来, 由于缺乏有效的人群管控措施, 人群踩踏事件时有发生。对人群管理和公共安全而言, 从图片中准确地估计人群总人数已经变得越来越重要。人群计数是一个充满挑战的任务,人群图片, 尤其是高密度人群图片, 存在着严重的人群重叠问题和尺度变化问题。

现有人群计数算法大致可以分为2类:基于检测的计数和基于回归的计数。基于检测的算法采用目标检测器把图片中每一个人物进行定位, 然后累加定位出来的目标,便得到人群总数[1-3]。该方法假定图片中的每一个人都能够被检测到, 并且这样的计算方式需要消耗大量的计算资源[4-5]。然而, 当图片中人群遮挡严重和背景复杂时, 算法的性能便会急剧下降[6-7]

基于回归的算法直接映射人群图片到总人数。文献[8]提取一系列特征然后使用高斯回归过程得到总人数。文献[9]提出一种用于人群计数的多输出回归模型。文献[10]提出一个基于密度图回归的算法, 通过对密度图积分得到总人数。

近年来, 深度学习方法被应用到了许多计算机视觉任务中, 如语义分割[11]和图像分类[12], 并且取得了较好的性能。文献[13]将深度学习方法应用到人群计数领域, 提出利用卷积神经网络(Convolutional Neural Network, CNN)计算不同场景下的人数, 与传统方法相比在计数准确性上有了明显提升。由于单列CNN只含有一种尺度的感受野,难以处理尺度变化问题, 研究者们提出一系列的多列CNN、多输入CNN和多任务学习CNN结构。文献[14-15]均采用了三列CNN结构, 每一列网络中包含不同的卷积核尺寸, 通过融合三列网络提取的不同尺度特征解决图片中人的尺度变化问题。文献[16]在多列CNN的基础上加入了特征图融合, 并结合高级语义特征和底层细节特征回归密度图, 进一步提升了多列CNN处理尺度变化问题的能力。文献[17]提出一种单列多输入CNN, 将图片调整为不同比例输入到网络中, 通过平均各比例图片的结果得到最终人数。文献[18]学习图片总人数和密度等级, 将密度等级分类产生的全局信息合并到密度图生成网络中解决尺度变化问题。

本文提出一种能够处理任意分辨率图片的单列CNN结构, 通过逐层融合网络中不同尺度的特征图来解决人群图片中的尺度变化问题, 并在人群计数数据库ShanghaiTech上进行网络训练和性能测试。

1 基于FPN的人群计数 1.1 密度图

在人群计数任务中, 训练卷积神经网络有2种选择。一种是使用人群总数作为数据标签, 另一种则是使用密度图。与人群总数相比, 密度图能够提供人群分布信息, 这些信息对于一些实际应用具有较高的价值。因此, 本文通过训练CNN得到输入图片和其对应的密度图之间的映射关系。

由于人群计数数据库只提供了人头标记的坐标点, 在网络训练之前首先需要生成训练图片的密度图。对于图片中坐标为xi的人头标记点, 可以将其表示为δ(x-xi)。那么, 一张具有N个人头标记点的图片可以表示为:

$H(x) = \sum\limits_{i = 1}^N \delta \left( {x - {x_i}} \right)$ (1)

然后使用高斯核滤波器Gσ与该方程进行卷积得到密度方程, 如式(2)所示。

$F(x) = \sum\limits_{i = 1}^N \delta \left( {x - {x_i}} \right)*{G_\sigma }(x)$ (2)

对于人群均匀分布的图片, 可以使用自适应高斯滤波器[15]进行卷积, 将图片的视角扭曲考虑到密度图生成中。此情况下的密度图方程可以表示为:

$F(x) = \sum\limits_{i = 1}^N \delta \left( {x - {x_i}} \right)*{G_{{\sigma _i}}}(x),{\sigma _i} = \beta \overline {{d_i}} $ (3)

其中, di 为标记点xi与其最近的k个人头之间的平均距离, 而β根据经验取为0.3。

1.2 网络结构

在本文方法中, 网络最终需要生成与输入图片相对应的密度图,而非一个分类的标签。因此, 本文的网络结构采用了一个全卷积神经网络, 不使用全连接层。由于缺少全连接层, 使得本文的网络结构对输入图片的尺寸没有限制, 能够处理任意尺寸的图片。

人群图片面临着人物尺度变化问题, 这限制了人群计数算法的性能提升。当前大多数算法使用多列CNN来提取多种尺度的人物特征, 从而解决尺度变化问题。但是, 这些多列CNN普遍采用了最高层的特征图回归产生密度图, 而高层的特征图在经过逐层抽象表达和池化层的下采样后,会丢失较多的细节信息甚至过滤掉一些尺度较小的目标, 造成算法对小目标的计数能力较差。

文献[19]提出了解决多尺度问题的目标检测算法, 该算法通过特征金字塔网络融合了多层次的特征, 改进了CNN网络的特征提取, 在小目标检测上取得较大进步。受到此算法的启发, 本文将特征金字塔网络应用到人群计数当中解决尺度变化问题。在CNN中, 连续的卷积层中间会穿插一些最大池化层进行下采样, 特征图在经过池化层处理之后分辨率会缩小为原来的1/2, 网络在前向传播过程中会产生多种分辨率的特征图, 这些不同分辨率的特征图便形成了特征金字塔结构。而在CNN中特征是逐层抽象表达的, 于是在特征金字塔结构中越高层的特征图分辨率越低越接近语义特征, 而越底层的特征图分辨率越高含有更多的细节信息。同时, 不同深度的特征图对应的感受野也不相同, 底层特征图感受野小更容易提取小尺度目标特征, 而高层特征图感受野大更容易提取大尺度目标特征。本文通过对CNN产生的特征金字塔自顶向下逐层融合不同分辨率的特征图, 构建具有高级语义特征和细节信息以及具有不同尺度目标特征的特征图, 使用融合之后的特征图回归产生密度图来适应图片中人物的尺度变化。

图 1展示了本文的网络结构, 此网络的前9层为网络的基础部分。这部分结构与VGG-16的前9层相同, 其中包含2个最大池化层。

Download:
图 1 全卷积神经网络结构

本文把网络中具有相同分辨率特征图的网络层归入同一个网络阶段, 在每个网络阶段中会含有多个特征图, 而在一个网络阶段中最后一层的输出特征图是该网络阶段最抽象的表达, 于是将每个网络阶段中最后一层的输出特征图作为该阶段的特征图。对于本文的结构可以将网络的基础部分分为3个网络阶段, 这3个网络阶段的特征图便形成了一个3层的特征金字塔结构, 如图 2所示。在网络前向传播形成该特征金字塔结构之后, 使用一种自上而下的方法进行侧边连接, 将所有尺度的特征图构建高级语义特征, 最终回归生成密度图。从图 1可以看出, 本文的后续网络结构中包含了2个侧边连接。侧边连接的具体实现方法如下:对当前网络阶段的特征图进行反卷积, 使得特征图分辨率变为原来的2倍, 而对前一阶段的特征图进行1*1卷积使两阶段特征图的深度相同, 最后将前后两阶段的特征图进行像素级相加。

Download:
图 2 特征金字塔结构
1.3 网络结构优化

本文采用随机梯度下降算法进行网络优化, 使用欧氏距离作为目标函数, 计算预测得到的密度图与真实密度图之间的差距。损失函数的定义如式(4)所示。

$L(\mathit{\Theta }) = \frac{1}{{2N}}\sum\limits_{i = 1}^N {{{\left\| {F\left( {{X_i};\mathit{\Theta }} \right) - {F_i}} \right\|}^2}} $ (4)

其中, Θ是网络参数, N是训练集图片总数, 而Xi是第i张图片, F(Xi; Θ)、Fi分别表示第i张图片的估计密度图和真实密度图。

2 实验结果与分析

本文在具有挑战性的ShanghaiTech数据库中训练并评测所提出的人群计数算法。实验结果表明, 本文方法在准确性和鲁棒性上超过了一些当前的最优算法。而网络结构的训练均在Caffe[17]架构上面进行。

2.1 评价标准

与文献[12, 14-15]相同, 本文使用平均绝对误差(Mean Absolute Error, MAE)和平均平方误差(Mean Squared Error, MSE)评价不同算法的计数性能。MAE和MSE的定义如式(5)、式(6)所示。

$MAE = \frac{1}{N}\sum\limits_{i = 1}^N {\left| {{z_i} - z_i^\prime } \right|} $ (5)
$MSE = \sqrt {\frac{1}{N}\sum\limits_{i = 1}^N {{{\left( {{z_i} - z_i^\prime } \right)}^2}} } $ (6)
2.2 ShanghaiTech数据集

作为目前最大规模的人群计数数据集, Shanghai Tech包含了1 198张图片, 总标记人数达到了330 165人。该数据集由两部分组成:Part_A和Part_B。其中, Part_A有482张从网络抓取的图片组成, 而Part_B则包含了716张在上海街头拍摄的图片。无论是Part_A还是Part_B, 它们都分为训练集和测试集。Part_A中的300张作为训练集, 剩下的182张作为测试集。在Part_B中训练集和测试集图片分别为400张和316张。本文分别在Part_A和Part_B中评价算法性能。

2.2.1 模型训练

为了保证网络训练有足够的人群图片, 本文采用了数据增强方法增加训练集中的样本数目。从每一张训练图片中截取9张图片, 每一张图片尺寸都为原图片尺寸的1/4, 并且将截取得到的图片翻转得到其对称的图片。这样, 从每一张训练图片中能够得到18张图片。在密度图生成方面, 由于Part_A人群密度高且人群分布较为均匀, 因此能够采用自适应高斯核滤波器生成密度图。而对于Part_B, 人群相对稀疏, 可采用高斯核滤波器生成密度图。

在实验实现方面, 本文使用了SGD算法进行模型训练, 学习率为1×10-6, 动量为0.9, 权重衰减为0.000 5。在网络权值初始化方面, 使用了标准差为0.01高斯分布初始化网络权值。Part_A上网络训练用时约为10 h, 测试时间约为40 s; 而Part_B上网络训练用时约为6 h, 测试时间约为90 s。

2.2.2 实验结果

为了验证所采用的特征金字塔网络处理尺度变化问题的有效性, 本文使用VGG-16的前9层加上一个1*1卷积层构成一个没有进行多尺度特征图融合的基础网络, 并将本文提出的特征金字塔网络和基础网络分别在ShanghaiTech上进行了训练和性能测试, 2个网络的训练参数设置均相同。表 1是基础网络和特征金字塔网络在ShanghaiTech数据集上的性能比较结果, 可以看到, 相比于基础网络, 特征金字塔网络在Part_A和Part_B 2个数据集上的计数准确性和鲁棒性均有明显提升, 表明使用特征金字塔网络融合多尺度特征图能够有效处理人群图片中尺度变化问题。

下载CSV 表 1 多尺度特征图融合前后算法性能对比

在验证特征金字塔网络能够有效处理尺度变化问题之后, 本文将所提出算法在ShanghaiTech上的计数准确性和鲁棒性与文献[14-18]的6种算法进行比较, 比较结果如表 2所示。从表 2可以看出, 相比于这6种算法, 本文算法在Part_A和Part_B 2个数据集上都得到了最佳的MAE和MSE, 尤其是在人群密度较大的Part_A上本文的算法在计数准确性和鲁棒性方面要明显优于这6种算法。这表明本文算法具有优异的计数准确性和稳定性。

下载CSV 表 2 ShanghaiTech上各算法性能对比

图 3分别展示了两组测试图片的估计密度图和真实密度图, 可以看到本文的网络结构能够较为准确地反映图片中人群分布情况。

Download:
图 3 两组测试图片的真实密度图和估计密度图对比

本文还比较了在Part_A和Part_B 2个数据集上由本文方法估计得到的人数与真实人数, 结果分别如图 4图 5所示。为了便于比较, 测试集按照人数递增的顺序分为10组, 每一组的平均人数作为该组所对应的计数结果。除了第10组分别包含20张和37张图片外, 其余的每一组图片中Part_A和Part_B分别包含18张和31张图片。图 4展示了在Part_A上的比较结果, 在图 4中可以看出,在大多数测试图片中本文方法都能够准确估计人数, 而在200人以下的图片中出现估计人数过多, 在800人以上的图片中估计人数少于真实人数, 原因在于Part_A中这2种密度的图片较少, 造成了网络结构对这类情况的训练不足。从图 5的结果可以看出,本文方法在Part_B中的各种密度图片上预测人数都十分接近真实值, 这表明本文的方法具有良好的鲁棒性和准确性。

Download:
图 4 Part_A图片真实人数和估计人数对比
Download:
图 5 Part_B图片真实人数和估计人数对比
3 结束语

本文提出一个基于特征金字塔的全卷积神经网络, 该方法融合多尺度特征进行密度图回归, 并结合高级语义特征和底层特征, 改进了现有算法的特征提取。本文在大规模数据集ShanghaiTech的Part_A和Part_B上分别进行网络训练和性能测试, 结果表明, 该算法具有良好的稳定性和鲁棒性。然而, 当前的人群计数算法多数将研究重点放在提高算法的计数准确性上, 忽略了网络预测的密度图质量, 因此下一步将研究在保证算法准确性的同时, 如何生成高质量的密度图。

参考文献
[1]
LIN Shengfu, CHEN J Y, CHAO Huangxin. Estimation of number of people in crowded scenes using perspective transformation[J]. IEEE Transactions on Systems, 2001, 31(6): 645-654. (0)
[2]
WU Bo, NEVATIA R.Detection of multiple, partially occluded humans in a single image by Bayesian combination of edgelet part detectors[C]//Proceedings of the 10th IEEE International Conference on Computer Vision.Washington D.C., USA: IEEE Press, 2005: 90-97. (0)
[3]
LI Min, ZHANG Zhaoxiang, HUANG Kaiqi, et al.Estimating the number of people in crowded scenes by mid based foreground segmentation and head-shoulder detection[C]//Proceedings of the 19th International Conference on Pattern Recognition.Tampa, USA: IEEE Press, 2008: 1-4. (0)
[4]
ZHAO Tao, NEVATIA R, WU Bo. Segmentation and tracking of multiple humans in crowded environments[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2008, 30(7): 1198-1211. DOI:10.1109/TPAMI.2007.70770 (0)
[5]
GE W, COLLINS R T.Marked point processes for crowd counting[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.San Francisco, USA: IEEE Press, 2009: 2913-2920. (0)
[6]
WANG Meng, WANG Xiaogang.Automatic adaptation of a generic pedestrian detector to a specific traffic scene[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Colorado Springs, USA: IEEE Press, 2011: 3401-3408. (0)
[7]
李云波, 唐斯琪, 周星宇, 等. 可伸缩模块化CNN人群计数方法[J]. 计算机科学, 2018, 45(8): 17-21, 40. (0)
[8]
CHAN A B, LIANG Z S J, Vasconcelos N.Privacy preserving crowd monitoring: counting people without people models or tracking[C]//Proceedings of the 10th IEEE International Conference on Computer Vision and Pattern Recognition.Anchorage, USA: IEEE Press, 2008: 1-7. (0)
[9]
CHEN K, LOY C C, GONG S, et al.Feature mining for localised crowd counting[C]//Proceedings of BMVC'12.London, UK: [s.n.], 2012: 3. (0)
[10]
LEMPITSKY V, ZISSERMAN A.Learning to count objects in images[C]//Proceedings of Advances in Neural Information Processing Systems.Vancouver, Canada: [s.n.], 2010: 1324-1332. (0)
[11]
LONG J, SHELHAMER E, DARRELL T.Fully convolutional networks for semantic segmentation[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Boston, USA: IEEE Press, 2015: 3431-3440. (0)
[12]
MAGGIORI E, TARABALKA Y, CHARPIAT G, et al. Convolutional neural networks for large-scale remote-sensing image classification[J]. IEEE Transactions on Geoscience and Remote Sensing, 2017, 55(2): 645-657. DOI:10.1109/TGRS.2016.2612821 (0)
[13]
ZHANG Cong, LI Hongsheng, WANG Xiaogang, et al.Cross-scene crowd counting via deep convolutional neural networks[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Boston, USA: IEEE Press, 2015: 833-841. (0)
[14]
ZHANG Yingying, ZHOU Desan, CHEN Siqin, et al.Single-image crowd counting via multi-column convolutional neural network[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Las Vegas, USA: IEEE Press, 2016: 589-597. (0)
[15]
吴淑窈, 刘希庚, 胡昌振, 等. 基于卷积神经网络人群计数的研究与实现[J]. 科教导刊, 2017(9): 16-17. DOI:10.3969/j.issn.1674-6813(s).2017.09.013 (0)
[16]
唐斯琪, 陶蔚, 张梁梁, 等. 一种多列特征图融合的深度人群计数算法[J]. 郑州大学学报(理学版), 2018, 50(2): 1-6. (0)
[17]
MARSDEN M, McGUINESS K, LITTLE S, et al.Fully convolutional crowd counting on highly congested scenes[EB/OL].[2018-05-20].https://www.researchgate.net/publication. (0)
[18]
SINDAGI V A, PATEL V M.Cnn-based cascaded multi-task learning of high-level prior and density estimation for crowd counting[C]//Proceedings of IEEE International Conference on Advanced Video and Signal Based Surveillance.Lecce, Italy: IEEE Press, 2017: 1-6. (0)
[19]
LIN T Y, DOLLAR P, GIRSHICK R, et al.Feature pyramid networks for object detection[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Honolulu, USA: [s.n.], 2017: 4-7. (0)