论文解读《Density-Aware Multi-Task Learning for Crowd Counting》IEEE Transactions on MultiMedia2020
Density-Aware Multi-Task Learning for Crowd Counting
Xiaoheng Jiang, Li Zhang, Tianzhu Zhang, Pei Lv, Bing Zhou, Y anwei Pang, Senior Member, IEEE, Mingliang Xu, and Changsheng Xu, Fellow, IEEE
Abstract:
在本文中,我们提出了一种称为密度感知卷积神经网络(density-aware convolutional neural network, DensityCNN)的方法来执行各种拥挤场景下的人群计数任务。DensityCNN的关键思想是利用高级语义信息在生成密度图时提供指导和约束。为此,我们采用多任务CNN结构实现了密度CNN,共同学习密级分类和密度图估计。密度级分类任务学习多通道语义特征,这些特征能够感知输入图像的密度分布。这个任务是通过我们特别设计的基于分组的卷积结构以监督学习的方式完成的。在密度图估计任务中,将这些语义特征与高维卷积特征一起部署,生成的密度图计数误差较小。通过对ShanghaiTech、UCF_CC_50、UCF- QNRF和WorldExpo’10等四个具有挑战性的人群数据集和一个车辆数据集的大量实验,验证了该方法的有效性。
Introduction:
在计算机视觉领域,人群计数任务的目的是输出拥挤场景中的人数。人群计数在许多实际应用中得到广泛应用,包括视频监控、人群控制和公共安全管理。尽管有了[1]-[7]的先驱者们的努力,在复杂的人群场景中准确的人群计数仍然面临着许多挑战,如规模变化、背景杂乱、人群分布不均匀等。
受卷积神经网络在图像分类[8]-[12]、目标检测[13]-[16]、语义分割[17]-[19]等计算机视觉任务中的成功启发,研究者最近提出了基于cnn的几十种人群密度估计方法[20]-[25]来获得场景中的人数。虽然这些方法已经取得了很大的进步,但是当一个场景或不同场景之间的密度分布存在较大差异时,它们的性能就会下降。这种分布差异主要来自两个方面。第一个因素是人们在一个场景中真正的聚集和分散。第二个因素是相机视角,这主要导致了缩放问题。靠近相机的人比远离相机的人看起来更大。因此,人群呈现出截然不同的分布模式。分布问题使得现有的基于cnn的人群统计方法难以在同一场景的不同区域取得令人满意的效果。图1给出了两个不同密度分布的例子。
一些基于cnn的人群计数方法[1]、[26]试图利用多尺度架构来解决这一问题。这些方法结合不同规模的子网络和不同尺度的图像斑块的特征,增强其对不同人群分布的适应能力。这种方法缺乏密度信息相关的先验。其他方法试图利用计数先验来缓解这个问题[2],[3],[27]。这些方法在一定程度上提高了计数预测性能。但是,考虑到不同场景的人群分布可能相当复杂,因此count prior无法提供足够详细的信息来描述人群分布。
在本文中,我们的目标是开发一种方法,可以处理人群场景与复杂的分布的人。为此,我们提出了一种密度感知卷积神经网络DensityCNN,它的特点是密度优先集成机制。该机制在生成密度图时集成了高级密度先验。这些先验是像素级的语义特征,可以提供更丰富的信息。我们通过利用一个多任务学习体系结构来实现这个机制,该体系结构联合学习密度级别分类和密度图估计,如图2所示。具体来说,我们的密集cnn由共享的卷积层和两个子网组成。这两个子网被称为密度级分类网络(DLCNet)和密度图估计网络(DMENet)。DLCNet是一个密度级感知模块,可以感知不同层次的人群密度分布。它生成多通道语义特征,包含像素级密度信息,指示密度级别。DMENet是一个密度图估计模块,它首先生成高维特征,然后将这些特征与密度级语义特征结合起来生成密度图。密度级分类和密度图估计的联合学习,提高了在不同人群分布的人群场景中人群计数任务的性能。
综上所述,我们提出本文的主要贡献如下:
(1)提出了多任务学习人群计算框架,我们设计一个辅助浓度水平分类任务,明确学习区别的语义功能和提供的功能密度地图估计任务,从而明显提高密度估计的性能。
(2)我们对网络变化进行了全面的定量消融研究,为构建高性能的计数网络提供了思路。
(3)我们在四个具有挑战性的人群数据集和一个车辆数据集上进行了大量的实验,结果表明我们的方法优于现有的最先进的方法。
本文的其余部分组织如下。首先,我们回顾了第二部分基于cnn的人群计数方法。然后,在第三节中介绍了我们提出的方法。最后,我们在第五章对本文进行了总结。
Related Work:
越来越多的人群分析方法被提出。检测策略[28]-[31]在稀疏场景中表现良好,但在拥挤场景中性能急剧下降。Lempitsky et al.[32]引入图像与其对应密度图之间的回归,进一步提高计数预测精度。此后,各种基于cnn的密度图估计方法[33]-[36]由于CNNs具有良好的特征表示能力而被提出。在本节中,我们主要回顾了三种主流的基于cnn的方法。
- Multi-Scale CNNs:
这种方法捕获多尺度信息并将信息映射到密度图。Zhang等人提出了一种多列卷积神经网络结构,包括三个列CNNs,每个列的学习特征具有不同大小的接受域。这些特征被合并,然后映射到密度图。类似地,Onoro等人开发了Hydra CNN,它由三个头和一个身体组成。这些头通过以不同尺度提取的图像小块作为输入来捕捉多尺度特征。这些头的输出被连接起来并反馈给身体以生成一个密度图。此外,Kumagai等人[38]提出了MoCNN,它由专家CNNs和一个门控CNN组成。专家CNN估计人群数量,门控CNN给每个专家CNN分配一个概率。最终的输出人群计数是所有专家cnn的加权平均计数。Marsden等人提出将尺度信息以不同的方式纳入模型。作者利用多尺度平均技术,在预测阶段将调整大小的测试图像的金字塔输入到一列CNN中。因此,最终的人群数量是通过在多个尺度下获得的所有估计值的平均值来预测的。此外,Shen et al.[24]提出了一种逆向跨尺度一致性追踪(adversarial cross-scale consistency pursuit, ACSCP)框架。,小的规模)是一致的,与他们的地区联盟的总计数(即。大规模的)。
- Prior-Assisted CNNs:
这种方法利用高阶先验来帮助估计密度图。为了捕捉图像中的语义信息,Boominathan等人将深度和深度完全卷积网络结合起来,预测给定人群图像的密度图。Sam等人[2]提出了一种切换CNN,包括一个切换分类器和多个独立的回归量。切换分类器根据一个输入人群场景斑块的密度信息,自适应地选择一个最优回归器。CP-CNN[3]使用了两个CNN架构,分别称为全局上下文估计器和局部上下文估计器,以生成全局和局部上下文信息。然后将上下文信息与多列网络结构的高维特征融合,生成密度图。虽然同时部署了全局和局部计数先验,但是在生成密度图的训练过程中,先验是固定的。也就是说,背景先验和密度图不是共同学习的。此外,如[3]中所述,CP-CNN的推理在计算上非常昂贵,因为它首先需要以一种分段的方式获取上下文信息。
- Multi-task learning CNNs:
Kang等人提出了一个由密度回归任务和计数分类任务组成的多任务框架。这两个任务以一种拼凑的方式工作。类似地,Zhang等人提出了一种基于一个任务预测密度图的分段多任务方法和执行计数回归的另一个任务。以上两种方法的目的是通过联合学习两个具有卷积特征的任务来增强特征。Sindagi等人[27]提出了级联多任务CNN结构。该方法除了共享底层特征外,还结合了从计数分类任务到密度估计任务的中层全局计数相关特征。与共享卷积特征相比,计数分类任务的特征包含更多与计数级别相关的信息,可以更好地指导密度估计任务。
在本文中,我们提出的方法明确地迫使密度级分类任务学习像素级区分语义特征,并将这些特征合并到密度图估计任务中,以产生更好的结果。在此基础上,我们对该体系结构的变化进行了深入的探讨,验证了该体系结构的优越性。
Method:
在本节中,我们首先介绍我们的DensityCNN方法的总体架构,然后详细介绍DensityCNN的每个部分。DensityCNN的架构如图2所示。我们提出了两种结构,即DensityCNN - l和DensityCNN - h。DensityCNN- l共享VGG16主干,它为DLCNet和DMENet提供底层特性。来自DLCNet的语义特征与来自DMENet的中级Conv12特征连接在一起,然后作为输入发送,以提取映射到密度图的高级特征。DensityCNN - h不仅拥有VGG16主干网,还拥有从Conv6到Conv10的中、高级功能。DLCNet中的语义特征与高层的Conv13特征连接在一起,然后直接映射到密度图。在本节中,我们以DensityCNN - l为例,详细介绍了体系结构,在此基础上,DensityCNN- h也很容易理解。
DensityCNN -l包括一个主体和两个子网,包括密度级分类网络(densitylevel classification network, DLCNet)和密度图估计网络(density map estimation network, DMENet)。与之前的工作[23]类似,由于其强大的迁移学习能力和灵活的架构,我们采用VGG-16[41]作为DensityCNN - l的主体骨干。VGG-16骨干网保留了前5个卷积块,包含13个卷积层和4个最大池化层,其目的是为两个子网提供低层次的卷积特性。DLCNet是一个密度敏感的全卷积网络,执行密度级分类任务。DMENet也是一个全卷积网络,执行密度图估计任务。在接下来的章节中,我们将详细介绍DensityCNN - l的DLCNet和DMENet的结构。
A. Density-Level Classification Network
DLCNet的目的是提供多通道密度级语义特征作为指导信息。密度级语义特征在人群场景中区分不同层次的密度分布起作用,可以帮助生成具有较低计数误差的密度图。为此,我们设计了DLCNet,它包含4个convolutional layer和1个global average pooling layer,如图2(a)所示。Conv6是卷积层,DeConv7是反卷积层。Conv8也是一个卷积层,表示为3×3×128×25,其中3×3为滤波器大小,128为输入特征通道数,25为输出特征通道数。我们希望这25个特征通道包含有区别的语义信息。为此,我们设计了一个基于组的卷积,记为(1×1×5×1)×5。即有5个(1×1×5×1)个卷积群,每个卷积群有5个输入通道和1个输出通道。如图2所示,每个组用一种颜色表示。因此,Conv9生成5个特征通道(称为计分图),然后使用全局平均池对每个通道进行聚合,以输出最终的密度级别分类得分。从1到5的5个分值分别对应了从低到高的5个密度等级。然后将它们发送到softmax交叉熵函数来计算分类损失。对于图像修补程序,softmax之后的最高分决定了密度级别。对于单个像素,五个计分图的最高分决定了它的密度级别。因此,前者语义特征具有较强的密度分布语义信息。图4中的语义特征和评分图的可视化验证了这一点。
值得注意的是,我们的密度级分类器是一种具有强监督的方法,它使用补丁级标签而不是像素级标签。然而,精细的像素级密度信息内在地包含在计分图和多通道语义特征中。在训练过程中,我们根据人的数量将固定大小的图像块粗略地划分为不同的密度等级。每个数据集的补丁大小由每张图像的平均数量和图像大小决定。对于SHAnghaiTech[1]、UCF_CC_50[42]、UCF_QNCF[20]、WorldExpo’10个[26]数据集,图像斑块的密级及对应的人群计数如表一所示。由于Trancos[43]数据集车辆较少,我们将密度分为3个等级。密级和计数见表二。以5个密度等级为例,我们用下面的方程来定义密度等级:
其中N为图像patch内的人群数量,[.]为层函数。采用该方法使训练样本在密级箱中分布相对均匀。这种粗糙的patch密度级划分并不能保证一个patch包含恰好一个密度级的像素。然而,这种强监督DLCNet实现了精细的像素级密度预测的目标。
B. Density Map Estimation Network
利用密度密度网络DMENet结合上述密度级语义特征对密度图进行预测。它首先利用一个卷积层Conv10、一个卷积层deconvolutional layer DeConv11和一个卷积层Conv12在VGG-16主干网上生成高维特征。然后,DMENet连接以上25个语义特征通道和高维特征(128个特征通道),将得到的153个特征通道发送到新的卷积层Conv13-1和Conv13-2。最后,采用1×1×153×1表示的密度图预测层Conv14生成输出密度图。值得注意的是,这25个语义特征通道具有区别性的密度级语义信息。它们有助于提高密度估计的准确性。
C. Training
虽然密度级分类任务和密度估计任务的目标并不完全相同,但它们在本质上是一致的。前者是对密度分布的粗略估计,预测一个区域是稠密还是稀疏。后一个任务给出了对每个像素的密度值的精确估计。前者比后者容易。我们采用两阶段训练策略来达到预期的计数性能。第一阶段的训练提供由VGG-16主干网提取的底层特征。第二阶段训练在VGG-16骨干网上共同学习这两项任务,只需要优化部分参数。
本文详细介绍了两阶段训练策略。首先,我们训练了一个由DensityCNN-l的VGG-16主干和DMENet组成的DensityCNN- base模型。我们利用一个训练良好的VGG-16模型对图像分类[41]进行初始化,初始化DensityCNN - base的VGG-16主干。对于剩下的卷积层参数,初始值基于随机高斯初始化,标准差为0.01。我们以端到端的方式在人群训练集上训练DensityCNN-base。第二,我们开始联合培训DLCNet和DMENet。对于DensityCNN- l和DensityCNN - h,我们使用DensityCNN - base模型初始化VGG-16主干,并在训练过程中保持权重不变。对于DensityCNN - l,我们使用标准差为0.01的高斯分布随机初始化DLCNet和DMENet。对于DensityCNN-H,除了DLCNet和DMENet,我们还使用标准差为0.01的高斯分布,随机初始化从Conv6到Conv10的共享卷积层。
我们采用Adam优化算法[44]对密度cnn进行训练。DLCNet的损失是由预测的密度水平和地面真实密度水平之间的交叉熵计算得到的。我们利用Pytorch中的交叉损耗函数实现了交叉熵。DMENet的损失是利用估计的密度图和地面真值密度图之间的欧氏距离计算的。让米(Xi;Θ)和Csm (Xi;Θ)表示估计密度地图和预测浓度水平输出后通过DensityCNN softmax基于参数Θ和输入样本,分别。浓度水平分类损失函数Losslevel(Θ)和密度地图估计损失函数Lossmap(Θ)然后定义如下:
其中N是训练样本的数量。在我们的实验中,λ被设置为0.1。在训练密度基模型时,采用公式3作为损失函数。当训练DensityCNN - l和DensityCNN - h时,用公式4作为损失函数。
Experiments:
Conclusion:
在本文中,我们提出了一种密度感知的多任务CNN来对不同的人群场景进行人群计数。DensityCNN联合学习语义特征和密度图估计。语义特征内在地包含有判别密级信息,有助于提高估计精度。我们还对建筑变化进行了综合消融研究,探索影响计数性能的关键因素。此外,我们在五个具有挑战性的计数数据集上进行了实验,取得了良好的性能。在我们未来的工作中,我们希望探索分别处理不同密度的人群区域的注意机制。