桑军, 刘新悦, 吴志伟, 王富森
重庆大学 大数据与软件学院, 重庆 401331
由于城市进程化加快, 各类聚集活动猛增. 大型聚会、 演唱会、 体育盛会、 政治活动等都伴随着人群过载、 难以管控的问题. 若是调控不当, 人群散乱冲撞, 极易发生严重的踩踏事故. 人群聚集是一种趋势, 在计算机时代, 我们可以利用计算机视觉技术对人群进行分析, 提前做好应急措施, 避免此类事件的发生. 人群分析是计算视觉的一个高热度研究领域, 包含人群计数、 行人检测、 行人追踪等方向. 而人群计数是人群分析中的重要课题, 通过对单张图片中的行人进行计数, 其模型可以应用到实时监控中, 对人群管控起到很大作用.
当前人群计数研究[1-2]大多采用卷积神经网络(CNN)生成单张图像对应的密度图, 通过对密度图积分得到具体人数. 生成的密度图质量决定了计数效果的好坏. 但是在人群个体尺度变化、 复杂背景干扰、 人群之间严重遮挡等问题的影响下, 人群计数仍然是一项具有挑战性的研究课题. 其中复杂背景干扰会使得卷积神经网络将形状类似人群头部的树叶、 路灯等当作人群进行计数, 造成计数误差, 使模型效果变差. 为了减少复杂背景的影响, 不少学者采用了注意力机制方法, 将网络注意力集中到人群区域, 弱化背景, 提高计数效果. 文献[3]提出采用注意力机制, 提高人群区域注意力, 降低背景噪声影响. 但是采用注意力机制的网络大都使用了VGG[4]或者CSRNet[5]为基准网络, 虽然计数结果不错, 但网络的参数量过大, 推理速度慢. 其他学者还研究了通过多任务学习的方式降低背景影响. 文献[6]将复杂背景作为网络的辅助任务, 还采用了尺度变化, 生成深度图等共3个辅助任务, 但其基准网络参数量大. 文献[7]采用了人群密度分级、 背景分割辅助任务增强语义信息, 网络结构简单, 参数量小, 但计数结果一般.
由于多任务学习方法能解决复杂背景干扰问题, 且选择恰当的前端网络可以使得网络参数量减少, 因此, 本文提出了一个基于背景辅助的高效人群计数多任务学习网络(an efficient background assistance based multi-task network for crowd counting, BAMTLNet). 与人群计数网络中大量采用VGG[4]前10层作为前端网络不同, 我们仅采用VGG[4]网络的前7层, 以减少网络的参数量. 在后端网络中, 我们提出了2个分支, 分别是生成估计密度图主任务分支和复杂背景分割辅助任务分支. 生成估计密度图的主任务分支采用3个卷积层生成估计密度图, 用于积分得到人数. 复杂背景分割辅助任务分支采用三层空洞卷积层生成背景分割图, 利用多任务学习机制, 为主任务分支提供背景的语义信息, 优化网络参数, 以降低复杂背景对计数的影响. 此外, 我们为该多任务学习网络设计了背景辅助融合多任务损失函数. 经训练, 该网络能在人群计数基准数据集上达到不错的效果, 网络参数少, 推理速度快.
本文主要贡献如下:
1) 提出了一个基于背景辅助的高效人群计数多任务学习网络, 包含生成估计密度图主任务分支和复杂背景分割辅助任务分支, 减少复杂背景对计数的影响, 网络参数量小.
2) 针对上述网络提出了背景辅助多任务损失函数.
3) 在人群计数基准数据集上与多种算法进行了对比实验[8-17], 并得到了不错的实验结果.
如图1所示, 本文给出了网络的具体结构. 该多任务学习网络由前端网络和后端网络组成. 为了减少网络参数量, 我们并没有采取常见的VGG[4]前10层作为前端网络的做法. 因为后3层的通道数为512, 为了减少网络体积且不损失太多精度, 我们采用前7层来提取初级特征. 为了加快训练速度, 使网络快速收敛, 我们在每个卷积层后加入了BN(batch normalization)层. 在后端网络中, 我们采用了多任务学习、 硬参数共享的机制, 分割出两个任务分支共享同一个前端网络参数. 为了获取单张图片计数, 我们基于估计密度图计数方法, 设计了生成估计密度图主任务分支. 该分支由带BN层的Conv4和Conv5卷积层组成, 并通过Conv1×1的卷积层生成最终的估计密度图用于积分得到人数. 为了获取关于背景的高级语义信息, 我们设计了复杂背景分割辅助任务分支. 该分支由Conv6和Conv7两个空洞卷积层组成, 空洞率为2, 与主任务分支相似, 其通过Conv1×1的卷积层生成最终的背景分割图. 在多任务联合学习基础下, 两个任务通过共享前端网络参数, 辅助任务通过反向传播过程传递背景语义信息, 优化整个网络参数, 降低复杂背景造成的计数影响. 与其他复杂网络相比虽没有更准确的精度, 但我们的网络仅有10层卷积层, 网络复杂度小, 参数量小.
为了更好地训练上述多任务学习网络, 我们设计了背景辅助多任务损失函数. 针对生成估计密度图的主任务, 我们采用欧几里得损失计算真实密度图标签与估计密度图之间的差值. 针对复杂背景分割辅助任务, 我们同样采用欧几里得损失计算真实背景分割图标签与估计分割图之间的差值, 两个损失如下:
(1)
(2)
其中:N表示在一个训练批次中输入图片的数目,F(g)是欧几里得距离,Dgt表示真实密度图,Dest表示网络生成的估计密度图,Sgt表示真实背景分割图标签,Sest表示估计背景分割图,Xi为输入图片,Θ为网络参数.
对于该网络, 我们采用了多任务联合学习的方式训练, 最终的损失函数为:
L=LD+LS
(3)
在网络训练之前, 我们需要制作真实密度图与背景分割图标签. 我们采用了人群计数中常见的真实密度图标签生成方法[8], 利用几何自适应高斯核与人群头部标注点图生成真实密度图:
(4)
在真实密度图的基础上, 我们对图中的非零像素值取1, 否则取值0, 可以得到背景分割图标签:
(5)
其中p为真实密度图Di(p)中的第i个像素.
我们在实验中使用了3个人群计数基准数据集, 分别为ShanghaiTech[8], UCF_CC_50[9]和UCF_QNRF[17].
ShanghaiTech数据集[8]分为Part A和Part B两部分. 每部分都有训练集和验证集. 每张图片有对应的点标签, 包含1198张图片, 330 165个注释头部. 它是目前使用最为广泛的人群计数基准数据集.
UCF_CC_50数据集[9]包含50张图像, 人群数量变化大, 十分具有挑战性. 由于其数据集太小, 我们在训练时采用了五折交叉验证的方法.
UCF_QNRF数据集[17]是一个从网络收集的大规模数据集, 包含透视场景和复杂背景的1 535张高分辨率图像, 其人数从50到12 000不等.
本次训练采用Tesla K80显卡. 针对不同的数据集我们设置了不同的高斯核标准差, 对于比较稀疏的ShanghaiTech PartB, 我们设置了σ为15.0, 对其他较为密集的数据集我们设置了σ为4.0. 为了提高网络的泛化性能, 我们采用了数据增强的方法. 我们首先对图片进行随机裁剪, 之后进行左右翻转、 灰度化以及增强图像对比度. 实验中, 我们设置了4 000个epoch, batch size的大小为64, 学习率为5×10-6, 采用的优化器为Adam.
在所有实验中, 我们采用了常见的平均绝对误差(MAE)和均方根误差(RMSE)对计数精度进行评价. 两个评价指标定义如下:
(6)
(7)
本文提出了基于背景辅助的高效人群计数多任务学习网络(BAMTLNet). 为了减少网络参数量, 我们使用了VGG的前7层作为前端网络提取初级特征. 为了降低复杂背景对计数的影响, 后端使用多任务网络硬参数共享机制, 即生成估计密度图的主任务分支与复杂背景分割辅助任务分支共享前端网络参数. 为了更好地训练网络, 我们提出了背景辅助多任务损失函数. 为了证明复杂背景分割辅助任务分支的作用, 我们针对网络分支做了消融实验. 我们在3个人群计数基准数据集上与其他研究进行了对比实验. 实验证明, 我们的网络在精度与网络轻量化上都达到了不错的效果.
为检验BAMTLNet中, 背景分割辅助任务能降低复杂背景对计数精度的影响, 我们对复杂背景分割辅助任务分支进行了消融. 如表1所示, 我们在ShanghaiTech Part A上分别做了包含辅助任务分支与不包含辅助任务分支的实验. 可以看出, 加上辅助任务后, 计数精度提高了1.3, 表明加入背景分割辅助任务后, 网络学习到了背景的语义信息, 提高了计数性能.
表1 BAMTLNet在ShanghaiTech Part A上的消融实验结果
为检验BAMTLNet在不同数据集上的性能, 我们在ShanghaiTech Part A, ShanghaiTech Part B, UCF_CC_50和UCF_QNRF上进行了实验, 并与其他人群计数网络进行了对比.
表2展示了BAMTLNet在ShanghaiTech数据集上的性能. 在对比结果表格中, 我们的网络在ShanghaiTech数据集上取得了不错的结果. Part A的结果是67.1, 虽然没有比上ADCrowdNet[3]的结果, 但是我们的网络参数量更小. 在Part B上, 我们得到了更好的MAE值, 为7.8. 相比于ADCrowdNet[3]提高了4.9%.
表2 ShanghaiTech数据集上的对比实验结果
表3展示了UCF_CC_50数据集上的对比实验. 其中, 我们的实验结果MAE为241.7, 比PCC Net[7]低1.7. 可能是由于该数据集图片数量太少, 做五折交叉验证时划分5个图片集的划分方式导致我们的实验结果略低.
表3 UCF_CC_50数据集上的对比实验结果
表4展示了UCF_QNRF数据集上的对比实验结果. 我们的网络在该数据集上表现不错. 其中MAE为101.5,RMSE为167.8. 在数据集足够的情况下, 我们的网络也可以在密集数据集上达到很好的性能.
表4 UCF_QNRF数据集上的对比实验结果
为了证明BAMTLNet网络参数量小, 我们对网络参数量进行了计算比较, 见表5. 可以看出BAMTLNet网络参数量为2.47×106, 低于3×106但未低至1×106以下. 我们认为在一定程度上, 参数量的增加可以带来一定的精度提升. 而参数量太小, 网络学习到的特征越少, 精度也会下降. 我们在精度与轻量化中取舍, 保证一定的精度又适当地降低网络的参数量, 使网络达到不错的性能. 一方面, 模型参数量一定程度上反映了模型的计算量和所需时间. 另一方面, 在具体比较计算时间时, 因实验环境要求非常严格, 需要保证完全相同的环境参数. 因此, 本文未对比各模型在不同数据集上的计算时间. 然而, 在网络模型参数量方面, 我们的模型达到了2.47 M的参数轻量化, 能在网络训练阶段减少训练时间. 同时, 在人群计数精度方面, 我们在ShanghaiTech Part A上获得了较为令人满意的结果.
表5 网络参数量对比
图2展示了BAMTLNet的可视化结果. 第一列表示原图像; 第二列表示真实标签密度图; 第三列表示网络所生成的估计密度图. 我们在3个数据集上对真实密度图与估计密度图做出了评估, 并将其可视化. 可以看出, BAMTLNet生成的估计密度图与真实密度图标签相差不大, 但在个别密集的区域会有些许的偏差. 因为我们的网络更关注图片的背景而非极度密集场景. 总体来说, BAMTLNet能完整生成图片的密度图并估计人数, 性能表现优秀.
图2 BAMTLNet的可视化结果
本文提出了基于背景辅助的高效人群计数多任务学习网络(BAMTLNet). 为了减少网络参数量, 我们使用了VGG的前7层作为前端网络提取初级特征. 为了降低复杂背景对计数的影响, 后端使用多任务网络硬参数共享机制, 采用生成估计密度图的主任务分支与复杂背景分割辅助任务分支共享前端网络参数. 为了更好训练网络, 我们提出了背景辅助多任务损失函数. 为了证明复杂背景分割辅助任务分支的作用, 我们针对网络分支做了消融实验. 我们在3个人群计数基准数据集上与其他研究进行了对比实验. 实验证明, 我们的网络在精度与网络轻量化上都达到了不错的效果.