人数统计综述
摘要:准确估计图像中人群数量具有重要的现实意义和研究价值。人群计数广泛应用在公共安防、视频监控和智慧城市建设等领域,对控制特定场所人数、指挥公共交通、防止疫情蔓延、保障社会稳定具有重要积极意义,人群计数已经成为计算机视觉领域研究的热点之一。近年来,随着深度学习的不断发展,传统基于检测、回归、密度图的人群计数方法逐渐被卷积神经网络(convolutional neural network,CNN)方法代替。本文介绍了人群计数的研究背景、方法和发展趋势,主要分析了基于CNN的人群计数方法,并对未来人群计数的研究前景做出展望。
1、人群计数的来源和应用
人群计数具有悠久的研究历史,大约二十年前甚至更早,研究人员就对开发自动计算图像中行人数量的方法存在很大的兴趣。人群计数,又叫人群密度估计,直白的讲就是一种通过计算机计算或估计图像中人数的技术。对于给定的一幅图像或一段视频,通过计算机自动处理,分析出其中的人数。
随着人口数量的持续增长以及城市化进程的加速推进,大型集会、商场等处拥挤场景正变得越来越常见。各种各样的音乐节,随处可见的购物中心、影剧院,还有体育馆、机场、高铁站,这些人们习以为常的事物,无时无刻不在影响着人们生活。诚然,丰富的基础设施资源和文娱项目极大地满足了人民日益增长的物质文化需求,但随之带来的高人流量,高拥挤问题也不容忽视。加之近年来复杂多变的国际国内环境造成的群体事件越来越多,人群分析作为一种有效辅助措施受到越来越多的研究者关注。人群计数和密度估计是对拥挤场景进行更高级理解的基础,如异常行为检测与识别、分割、跟踪及场景理解等。
人群计数的应用方向:
- 公共安全管理:人群计数重中之重的用途就是用于公共视频监控,实时输出每个场景中的人数,对密度过高的场景进行及时报告,让管理者及时反应,及时疏导,以避免诸如14年底外滩踩踏事件的再次发生。
- 公共空间设计:对机场候机楼、火车站、商场等公共建筑等现有公共场所进行人群分析,可以从人群安全和方便的角度揭示出场景设计中的重要缺陷。这些研究可以用于改进公共空间的设计,来更好地保证安全和方便人们的出行活动。
- 数据收集分析:可用于收集信息并进行进一步分析与推论。例如,在零售业,人群计数可以用于衡量人们对商店中产品的感兴趣程度,并根据该信息选择适当的产品进行放置。同样,人群计数也可以用来测量在不同时间段排队的人员数量,来进行流量调控,以优化等待时间。
- 虚拟仿真设计:可用于了解潜在现象,从而使我们能够建立能提供精确模拟的数学模型。这些数学模型可进一步用于各种应用的人群现象模拟,如电脑游戏,在电影场景中插入视觉效果、设计疏散计划。
- 辅助其他视觉任务:在一些群体事件中搜查嫌疑人和受害者,比如爆炸,枪击等事故场景。人群计数技术可以辅助人脸检测/识别任务,来使这些任务更加准确,更好地定位罪犯。
- 作为其他视觉任务的基础:在体育场馆、旅游景点、购物中心和机场等场所、为安保和安全目的广泛部署了大量监控摄像机来监控人群。然而,由于设计上的限制,传统的视频监控方法无法处理高密度人群情况。在这种情况下,我们可以利用专门为人群分析相关任务设计的算法,如行为分析,拥塞分析,异常检测,事件检测。
此外,人群计数方法可扩展到其他领域的计数任务中,如细胞镜检、车辆计数等。
近年来,卷积神经网络具有对图像深层次特征出色的提取和学习能力,被广泛应用于人群计数领域中。越来越多的研究者使用深度学习的方法来研究人群计数,图1所示为人群计数的发展路线。
图1 人群计数方法发展路线
2、人群计数的方法
2.1 基于检测的人群计数方法
早期人群计数方法大多是基于检测,用特定的检测器提取特征来实现计数目标。特征提取方法可分为基于整体的和基于局部两种。基于整体的检测方法适用于低密度人群,在高密度人群中效果不理想。与基于整体特征的检测相比,部分局部检测的鲁棒性更好,但在高密度场景中同样收效甚微。基于检测的计数方法在稀疏场景中有着出色的检测精度,虽然为了适应高密度、复杂的场景做了许多尝试,但是效果仍然有待提高。
2.2 基于回归的人群计数方法
基于检测的方法在极端密集的人群和高背景杂波的情况下并不成功,为了克服这个问题,研究人员试图通过回归来计数,从中学习从局部图像斑块中提取的特征与它们的计数之间的映射,避免了对检测器的依赖。基于回归模型方法的主要思想是先从图像中提取前景区域,提取多个特征,然后选择合适的回归模型进行训练,最后从测试样本中预测人口密度。基于回归模型的人群计数过程如图2所示。当全局和局部特征被提取出来,不同的回归技术,如线性回归、分段线性回归、岭回归、高斯过程回归和神经网络用来学习从低级特征到人群数量的映射。与基于检测的方法类似,回归方法也可以分为基于整体和基于块两类。基于整体的回归方法难以处理大尺度和密度变化,而基于块的回归方法包含更多图像的局部信息,受尺度和密度变化的影响较小。通过回归技术来实现可以有效地解决个体遮挡和特征跟踪的问题,使用人群的整体描述来估计人群密度。相比于基于检测的方法受到了高密度场景的限制,基于回归的方法不需要明确的界限和个体的跟踪,能够较有效地估计更复杂场景的人群密度,但是计算过程也相对复杂。
图2 基于回归模型的人群计数过程
2.3 基于密度图的人群计数方法
虽然早期的方法能较好解决遮挡和杂波问题,但大多数方法忽略了重要的空间信息,因为它们是对全局计数的回归。随着研究的深入,Lempitsky等人提出了密度图概念,并提出一种估计图像密度的新方法,将局部像素特征学习线性映射到对应的目标密度图。该方法可用于训练一个回归模型,模型在学习过程中基于图像的像素点提取特征,直接学习从像素点特征到目标密度分布图的映射关系。它的目标为生成这样的密度图,不仅包含了密度信息还附带了图像中目标空间分布信息,同时该密度图中任意区域的积分给出了该区域对象的数量,所以还可以通过区域密度求和得到任意区域的目标数目。通过学习图像到密度图的映射,避免了对检测器的依赖,可以极大地提高计数性能。由于密度图既能反映人群的空间分布信息,又能提高计数精度,基于密度图的回归逐渐成为一种流行的分类。
2.4 基于卷积神经网络(CNN)的人群计数方法
传统的人群计数方法依赖于多源和手工制作的表示,只适用于稀疏场景,在部分遮挡、前景透视、多尺度和跨场景等情况下,效果不尽人意。CNN在各种计算机视觉任务中的成功应用,使得许多基于CNN的方法被用来解决人群计数问题。根据网络结构的不同,研究者们将基于卷积神经网络(CNN)的人群计数分为多列CNN模型和单列CNN模型。单列网络仅存在单个深度网络,网络结构简单,模型训练容易。和单列网络相比,多列网络是指用不同的列对应于不同尺度的接收多尺度信息。
2.4.1 单列CNN模型
Wang等人最早在人群计数领域中使用CNN,提出了一个端到端的CNN回归模型直接预测人群数量,能从极度密集人群的图像中统计人数。架构中采用了AlexNet网络,其完全连接层被用于预测计数的单个神经元层取代。此外,为了减少图像不相关背景的错误响应,训练数据增加了附加的样本,其真实数值设为零。AlexNet网络不适用于跨场景计数,因此准确度不高。
为了克服跨场景的难题,Zhang等人整理了现有方法,改进了AlexNet网络提出的单分支计数模型CrowdCNN,最先应用人群密度图。如图3(a)所示,通过交替训练两个目标函数:人群计数和密度估计,对这些目标函数进行交替优化,可以获得更好的局部最优解。如图3(b)所示,为了使该网络适应新场景,达到跨场景计数的目的,使用与目标场景相似的训练样本对网络进行微调。图3(b)提出了一种结合透视信息生成真实密度图的方法,使网络能够执行透视归一化,从而提高比例和透视变化的鲁棒性。此外,他们引入了一个新的数据集WorldExpo’10,用于评估跨场景人群计数。
图3 CrowdCNN计数网络
下表是对单列网络结构下人群计数的分析与总结,与多列网络结构相比,单列网络结构简单,训练容易但对尺度变化处理效率较低。
表1 单列CNN模型人群计数算法分析与总结
2.4.2 多列CNN模型
目标遭受严重遮挡时,透视问题导致拍摄角度差异大,目标尺度变化不均匀。一般情况下,靠近摄像机的人群有完整的细节信息,远离摄像机的人群细节信息缺失。此外,手工制作的图像特征(scale-invariant feature transform,SIFT)通常在遮挡和大尺度变化情况下鲁棒性较差。
为了解决多尺度的问题,Boominathan等人把一个深层网络和一个浅层网络相结合,提出双分支结构计数模型CrowdNet。但是当目标尺度很小时,深层网络结构很难提取目标特征。受到Boominathan等人的启发,有人提出改进VGG16模型作为双分支结构,把VGG前10层作为主干网络,如图4所示。为了解决尺度变换的问题,用浅层网络(Branch_S,BS)提取低级语义信息,深层网络(Branch_D,BD)提取高级语义信息。并使用1×1卷积层对提取的特征图进行处理。以获得最终的人群密度预测。通过引入多分支网络,用不同尺寸的卷积核提取不同尺度的特征,可以有效解决多尺度问题。
图4 基于VGG主干的双分支网络
人群计数领域不断创新,逐渐衍生许多基于CNN的多分支网络模型,适用于稀疏、密集场景。由于图像中人群密度分布极不均匀,研究人员利用多列卷积神经网络来提取不同尺度的头部特征。通过多分支网络,使用不同尺寸的感受野提取不同尺度特征,可有效解决多尺度问题。
Zhang等人为了解决多尺度问题,在2016年提出多列卷积神经网络(multi-column CNN,MCNN),其网络结构如图5所示。MCNN允许输入图像有任意大小的分辨率,利用具有不同大小感受野的滤波器提取特征,舍弃固定高斯核,采用自适应高斯核来生成高质量密度图,减少视角变化引起的目标大小不一致导致的计数误差。MCNN每列所学习的特征,能够适应由于透视效果或图像分辨率形成的目标尺寸变化。MCNN模型通过1×1卷积层加权平均融合CNN多列的特征图来预测人群的密度图。MCNN还引入了新的数据集ShanghaiTech,该数据集已成为人群计数领域的经典数据集之一。
图5 MCNN多列人群计数网络
Sam等人在多列卷积神经的基础上,提出了基于块的选择结构,即多列选择卷积神经网络(switch convolution neural network,Switch-CNN),计数模型如图6所示。Switch-CNN能有效利用场景中的局部人群密度变化。此网络由三个不同体系结构的CNN回归器和一个分类器(Switch)组成,为输入图片块选择最佳回归器。输入图像被分成9个不重叠的小块,每个小块是图像的1/3。选择分类器与多个CNN回归器交替训练,准确地将块传递给特定回归器,这个模型拥有人群分析的显著性能:(1)模拟大尺度变化的能力强;(2)合理利用人群场景中密度的局部变化。Switch-CNN有一个缺陷,一旦分支选择错误将会严重影响计数准确度。
图6 Switch-CNN结构
Cheng等人分析MCNN、CSRNet、BSAD和ic-CNN四个网络,发现有的多列体系结构没有监督体系来指导学习不同尺度的特征,而且列间存在大量冗余参数。为了解决这两个问题,Cheng等人提出了一种新的多列互学习策略(multi-column mutual learning,McML)来提高多列网络的学习性能,如图7所示。McML使用互信息来近似表示来自不同列的特征之间的尺度相关性,通过最小化列间的互信息,还可以引导每列聚焦不同的图像尺度信息。McML的核心思想是相互学习。许多网络模型同时更新多个列的参数,但McML依次优化更新每个列,直至收敛。每一列学习过程中,先估计列间的互信息作为先验知识来指导参数更新。McML借助列与列之间的互信息,交替地使每一列都受到其他列的引导,从而学习不同的图像比例和分辨率。结果显示,这种互学习方案可以显著减少冗余参数的数量,避免过拟合。
图7 多列互学习(McML)网络结构
图像中人头尺度的巨大跨度一直是人群计数的一个主要问题。目前的大多数解决方案都是基于多尺度的特征融合。除了上述方法,还有很多研究试图运用多分支结构网络解决变尺度问题。但是,多列网络仍然存在一些固有的缺点,如计算量大、实时计数困难、生成的密度图清晰度不够高。
表2是对多列网络模型下主流人群计数算法的总结与分析。
表2 多列CNN模型人群计数主流算法分析与总结
上述分析可知,计数模型的结构在不断发展,为了解决多尺度问题和跨场景问题,计数网络由单分支结构升级成多分支结构,网络结构的建模能力得到进一步巩固。多分支结构虽然提高了计数准确度,但是也使得网络结构越来越复杂、参数多、计算量增加,降低了模型的计数效率。为了应对这些难题,研究者们尝试把多分支结构用单分支结构代替,通过引入创新的CNN模型,如上下文感知计数网络、多任务计数网络和注意力感知计数网络等CNN技术,来降低模型复杂度和提高计数准确度,这将是人群计数领域以后的发展趋势。上下文感知计数网络、多任务计数网络和注意力感知计数网络等CNN技术可以有效解决多尺度、跨场景和背景噪声等问题,生成更优质的密度图,提高计数精度。
各种人群计数机制的优势、劣势和适用场景,如表3所示。
表3 人群计数机制的对比分析
3、算法排行榜(对比)
3.1 人群计数算法评估指标
对人群计数算法性能的评估主要有两个指标,这两个指标分别是平均绝对误差(Mean Absolute Error,简称MAE)和均方误差(Mean Squared Error,简称MSE),这两个指标计算公式如下所示:
其中m是数据集中图片数目,是第i张图像估计的人群数目,是第i张图像真实人群数目。MAE能够表示被测试算法的准确性,而MSE表示被测试算法的鲁棒性,MAE越小则准确度越高,MSE越小则鲁棒性越好。一般来说,通过这两个常用的指标,可以反映一个模型的优劣。
3.2 人群计数算法测试常用的数据集
随着人群统计技术的发展,特别是深度学习等方法的广泛使用,优秀的数据集在模型的不断优化及统计效果提升过程中扮演着越来越重要的角色。面对尺度变化、背景杂波和遮挡等人群密度估计任务的挑战,不同数据集根据实际需求有针对性地在某些方面进行了优化。这些数据集为人群计数算法的研究工作带来了便利,激励人们不断地创建出泛化能力更强的模型。下面介绍UCSD、WorldExpo’10、ShanghaiTech、UCF_CC_50这几个常用数据集。
(1)UCSD dataset。UCSD是人群计数领域的第一批数据集之一,其是由视频监控在加州大学圣地亚哥分校的人行道上收集的。原始视频以30frame/s捕获,帧大小为740×480,随后被下采样至238×158和10frame/s。视频的前2000帧(200s)用于真实注释,作为数据集。在人行道上选择了一个感兴趣区域每隔5帧人工标注一次,剩余帧中的行人位置通过线性插值来估计。该数据集分为训练集和测试集,总共包含49885个行人实例。训练集包含索引为600到1399的帧,测试集包含剩余的1200个图像。该数据集人群稀疏,平均每帧15个人左右,数据集是从单一场景收集的,所以图像之间的场景视角没有变化。
(2)WorldExpo’10 dataset。为解决单一场景问题,Zhang等人引入了一个数据集用于跨场景人群计数WorldExpo’10。该数据集来自2010年上海世博会,其中包括108个监控摄像头捕获的1132个带注释的视频序列,通过鸟瞰式摄像机收集视频,丰富了场景类型。数据集总共标注了3980帧分辨率为576×720的图像,标记行人199923个。数据集被分成两部分,来自103个场景中的1127个1min长的视频序列被视为训练和验证集。测试集来自5个不同场景,每个测试场景中有120个标记帧,两个帧之间的间隔为30s。人数变化范围从1到220,因此该数据集不适用于极度密集场景。
(3)ShanghaiTech dataset。彭超等人引入了一个新的大规模人群计数数据集,该数据集由1198张图像和330165个注释头组成,是带注释人数最多的数据集之一。它包含两个部分:A和B。A部分的482张图片是从互联网随机下载的,而B部分图像来源于上海街道。与B部分相比,A部分的密度图像要大得多。这两个部分又进一步划分为训练集和测试集。A部分的训练和测试分别有300和182幅图像,而B部分的训练和测试分别有400和316幅图像。该数据集的图像具有不同场景类型和不同密度级别,不过不同密度级别的图像数量并不一致,使得训练和测试倾向于低密度级别。
(4)UCF_CC_50。该数据集是第一个真正具有挑战性的数据集,由公开可用的网络图像创建。为了丰富场景类型的多样性,收集了音乐会、示威、体育场、马拉松等不同标记的图像。它包含了50张不同分辨率的图像,平均每张图像有1280个人。在整个数据集中总共标记了63075个人,图像上人的数量从94到4543不等,这表明在图像上存在很大的差异。这个数据集的唯一缺点是用于训练和测试的图像数量有限。考虑到低数量的图像,定义了一个交叉验证协议来训练和测试,其中数据集被分成10个集合,并执行5倍的交叉验证。这个数据集挑战很大,当前基于CNN的最先进方法在这个数据集上的结果效果不佳。
如图8所示,是数据集的样本,从左至右分别是UCSD、UCF_CC_50、WorldExpo’10、ShanghaiTech A和ShanghaiTech B。
图8 不同数据集的样本
3.3 不同人群计数算法的对比
部分人群计数算法在4个主流人群数据集上的结果如表4所示。可根据平均绝对误差MAE和均方误差MSE评估人群计数算法性能,MAE越小则准确度越高,MSE越小则鲁棒性越好。
表4 不同人群计数算法在不同数据集上的性能对比
其中Zhang是单分支结构,MCNN、Switch-CNN、CSRNet、MSCNN和IG-CNN是多分支结构,经过对比可知,多分支结构相比单分支结构有更强的提取特征能力,其计数性能也优于单分支结构。CP-CNN是上下文感知结构,在多列的基础上增加了全局上下文感知模块和局部上下文感知模块,增强了计数精度。SANN、ADCrowdNet、Jiang在密度估计的基础上引入了注意力机制,增强了网络结构的鲁棒性,提高了网络的泛化能力和计数精度。Sam、ACSCP是多任务模型,经过对比,多任务模型比单任务模型计数效果更好。
4、国内外现状
在尺度变化、遮挡等场景中基于卷积神经网络的人群计数算法具有优越的性能,因此使用卷积神经网络来计数也逐渐成为主流发展方向,随着人群计数与密度估计在公共安全、城市规划等领域的应用日益增多,人群计数已成为国内外计算机视觉领域的研究热点。
(1)基于CNN的方法在人群计数领域发展迅猛,研究成果丰富。CNN强大的学习能力以及提取特征能力提高了估计准确率,大大推动了这个领域的发展。多列结构模型复杂、参数多,目前很多研究人员仍然重点研究单列结构,尺度变化是人群计数面临的主要挑战之一。同时,引入新的损失函数来优化模型依然是研究热点。
(2)数据集的场景由单一化逐渐演变成多样化,跨场景、高度拥挤的图像也能用模型训练并取得较好效果,图像分辨率不断提高,数据图像数量不断扩大。
(3)针对人群计数的图像预处理技术欠缺,目前大部分算法是依赖于已经存在的数据集,而忽略了实际情况下环境、光照、气候等因素对图像质量的影响。透视失真、光照、极端天气等问题依然是人群计数领域需要克服的困难。
(4)严重遮挡问题。密集的集的人群之间遮挡严重,混乱程度高,部分行人只能展现局部特征,导致计数结果不准确,所以如何在高度遮挡的场景中获得准确的计数结果是未来的重要研究方向。
(5)对视频数据的人群计数算法研究不足。在当前研究中,基于静态图像的人群计数算法已经取得了很不错的成果,如何快速处理实时数据并保证较高的准确率也是未来的重要方向。
(6)背景外界因素干扰。在复杂的背景中,和行人头部相似的部分容易被识别为人群导致计数结果过估计,未来如何解决这些外界因素造成的计数误差是一个具有挑战性的问题。
5、运行实例