基于尺度自适应卷积神经网络的人群计数算法
2020-02-19王陆洋殷保群彭思凡邢思思
翟 强,王陆洋,殷保群,彭思凡,邢思思
(中国科学技术大学 自动化系,合肥 230027)
0 概述
近些年来,发生在世界各地的大型人群踩踏事故屡见不鲜。及时检测人群急剧变化,优化公共交通调度可以避免类似安全事故的发生,因此准确估计人群数量具有重要的研究价值,而透视效果导致的人群遮挡、尺度变化问题仍是人群计数面临的重大挑战。随着深度学习的发展,卷积神经网络(Convolutional Neural Network,CNN)模型[1-2]在图像处理上表现优异,使得研究人员将卷积神经网络应用于人群计数中[3]。文献[4]提出使用卷积神经网络统计不同场景中的人群数目,先为某些场景预先训练一个网络,当给定来自新场景的测试图像时,根据透视信息和密度图中的相似性选择相似训练数据对预训练网络进行微调。该方法在大多数现有数据集上表现出良好的性能,但在训练和测试时对透视图的需求,限制了该方法在实际人群场景中的适用性和扩展性。文献[5]提出一个端到端的CNN架构,将整个图像作为输入并直接输出计数结果。但由于难以解决图像尺度多变的问题,基于单列CNN的方法的计算精度和鲁棒性效果均不佳。文献[6]提出Switching CNN网络,先将图像分块,通过VGG16网络把图像块密度分成高中低3类,选择针对特定人群密度设计的CNN回归模型来估计图像块的人群密度图。然而人群在图像中的分布通常是不均匀的,对图像的简单分块影响了计数的准确性。文献[7]提出多列卷积网络,其能够适应部分人群的尺度变化,在一定程度上减少由于透视而导致的计数误差,但其使用一个1×1卷积对多列密度图进行简单平均融合,会给最终结果带来一定的误差。
本文提出一种用于图像人群计数的新型卷积神经网络模型。考虑到经典VGG16网络[8]具有良好的特征提取能力,该网络模型前半部分采用VGG16的前13层提取图像特征,后半部分利用具有3列不同感受野的卷积神经网络进一步提取多样化的图像特征。在此基础上,构建特征注意力模块提取判别信息,对3列卷积神经网络得到的特征图进行评判打分,生成与特征图尺寸相同的注意力特征图,通过加权求和得到最终密度图,并在Shanghai Tech和UCF_CC_50两个数据集上训练并测试人群计数算法。
1 基于尺度自适应网络的人群计数算法
1.1 密度图
本文旨在准确估计输入图像的人群密度图,其积分值代表图中的人数。人群计数数据库只提供人头标记的坐标点,在网络训练前首先需要生成训练图片的密度图。对于图片中坐标为xi的人头标记点,可将其表示为δ(x-xi),那么对于一张具有N个人头标记点的图片可以表示为:
(1)
然后结合高斯核滤波器Gσ与式(1)进行卷积操作得到密度方程,表示为:
(2)
对于人群均匀分布的图片,可以使用自适应高斯滤波器[4]进行卷积,密度图生成过程中需考虑图片视角扭曲因素。在此情况下的密度图方程可以表示为:
(3)
1.2 网络结构
针对人群计数中的人群遮挡和尺度变化问题,本文提出一个用于人群计数的尺度自适应网络。在图1中,尺度自适应网络分为3个模块,具体为:第一模块引入经典VGG16网络的前13层对图片提取特征,由于VGG 4个池化层的存在,导致输出变为原图的1/16,而本文采用1/8密度图作为输出结果,因此加入上采样层将特征图变为原图尺寸的1/8;第二模块基于多列卷积神经网络思想,分别用3×3、5×5、7×7不同感受野的卷积核对第一模块输出提取多尺度特征,在此阶段本文引入在目标检测、语义分割领域的可变形卷积,凭借其良好的空间几何形变学习能力,进一步改善特征图;第三模块为特征注意力模块,其对3列卷积神经网络得到的特征图经Softmax层进行评判打分及优化,从而生成高质量的密度图。
图1 尺度自适应网络结构
1.2.1 可变形卷积
近年来卷积神经网络在视觉领域表现优异,其良好的特征提取能力和端对端的学习方式,避免了传统方法的弊端。但网络模型的几何形变能力来自于数据本身的多样性,即卷积操作。该操作在输入图像的每个位置都会进行基于对应位置的采样,然后对于采样到的特征区域做卷积并作为该位置的输出。以3×3卷积核为例,设R={(-1,-1),(-1,0),…,(0,1),(1,1)},R代表卷积核覆盖特征图的感受野区域。对于特征图上的像素点p0,标准卷积方式表示为:
(4)
但该方式会导致网络自身难以适应尺度多变的人群计数问题,因此本文引入可变形卷积[9]。可变形卷积是对卷积核的每个采样点的位置都增加一个偏移的变量,通过这些变量,卷积核可以在当前位置附近采样,而不再局限于之前对应的位置采样。可变形卷积方式表示为:
(5)
其中,Δpn通过对网络训练得到。标准卷积加上该偏移量的学习后,可变形卷积核的大小和位置可以根据当前需要识别的图像内容进行动态调整,即不同位置的卷积核采样点位置会根据图像内容发生自适应变化,从而适应不同场景人群形状、大小、尺度变化等几何形变。分析上述计算方式可知,若可变形卷积的偏移量Δpn为0,则可变形卷积退化成普通卷积,本文算法也能达到普通卷积的算法性能。当可变形卷积起作用时,特别是卷积核在处理人群与树木、马路、房屋等干扰背景交界的区域时,普通卷积只能对卷积核相应尺寸大小的特征进行计算,这样无形中把非人群的无用特征计算进来,会给结果带来一定的误差。而可变形卷积可以有效地解决该问题,当算法在训练过程中遇到上述场景时,通过训练卷积核附带的偏移量参数Δpn,将普通卷积核部分对应计算的非人群特征偏移到人群特征中,这样整个卷积核提取的都是人群特征,有效避免了非人群特征的干扰,从而提高人群计数性能。
1.2.2 特征注意力模块
人脑每个时刻接收的外界输入信息非常多,当人脑在接收这些信息时会自觉或不自觉地利用注意力机制获取重要的信息。目前,这种注意力机制被引入自然语言处理、物体检测、语义分割等领域,并具有很好的应用效果。本文将注意力机制作为一个模块加入卷积神经网络,旨在优化第二模块的3列特征图,因此本文将其命名为特征注意力模块。为解决图片中人群尺度变化问题,该注意力模块将第一模块结果作为输入,对经过可变形卷积处理的3列多尺度特征图逐像素点生成具有判别能力的高级信息,即3列多尺度特征图对应的每个像素点都生成相应的权重,以此衡量3列多尺度特征图对应像素点的重要程度。总体来看,注意力模块是对3列多尺度特征图进行打分,评判3列多尺度特征图所有对应像素点的重要程度。计算方式如下:假设Fk为注意力模块输出的3列特征图中的某一列,Sk为经过可变形卷积处理的多尺度特征图中的某一列,则网络经Softmax层生成相应的注意力特征图(与特征图相同尺寸的概率矩阵)。
(6)
注意力特征图与特征图相对应的像素点相乘,再对其求和生成最终的密度图。
(7)
通过该方式使网络在3列多尺度特征图上从像素点级别寻找与真实密度图相关的有用信息,对密度图生成有益的像素点获得更高的权重,对密度图生成无益的像素点获得更低的权重,即评判特征图的重要程度,从而提高最终密度图的生成质量。
1.3 网络结构优化
本文采用自适应学习率的Adam优化算法进行网络优化,使用欧氏距离作为目标函数,计算预测得到的密度图与真实密度图之间的差距。损失函数的定义如下:
(8)
其中,Θ是网络参数,N是训练集图片总数,Xi是第i张图片,F(Xi;Θ)和Fi分别表示第i张图片的估计密度图和真实密度图。
2 实验结果与分析
本文在Shanghai Tech和UCF_CC_50数据集上训练并测试人群计数算法,借鉴经典网络VGG[8]、MCNN[7]、SANet[10]等的参数设置方法,若没有特殊声明,卷积核尺寸默认为3×3,卷积核的激活函数均为ReLU非线性激活函数。网络对VGG提取的特征(原图片的1/16)进行上采样后,特征图尺寸变为原来的2倍(原图片的1/8),则卷积核通道变为原来的1/2,数目为256。本文基于1/8密度图估计人群数目,因此卷积层通道数均采用256通道。在设置可变形卷积通道超参数时,由于该卷积方式的复杂性,实验过程中发现对内存的消耗较大,训练时间较长,因此对每列特征图只设置32通道的可变形卷积。本文在Pytorch深度学习环境下进行训练,在网络训练权值初始化方面,VGG特征提取器使用已训练好的模型参数进行初始化,其他层使用标准差为0.01的高斯分布进行初始化,网络的初始训练学习率为1e-5,共训练300个周期。
2.1 评价标准
本文使用平均绝对误差(Mean Absolute Error,MAE)和均方误差(Mean Squared Error,MSE)评价算法性能。MAE和MSE的定义如下:
(9)
(10)
其中,zi和z′分别表示第i张图片的真实人数和算法估计人数。
2.2 Shanghai Tech数据集
Shanghai Tech数据集共包含1 198张图片,标记人数达到330 165人。该数据集由Part_A和Part_B两部分组成。两个数据集无论是人群规模还是人群密度都有很大的区别。Part_A人群密度较大,Part_B人群密度中等但分布变化较大。
在数量上,Part_A由482张从网络抓取的图片组成,Part_B包含从上海街头拍摄的716张图片,同时它们都分为训练集和测试集两部分。Part_A中300张作为训练集,182张作为测试集。Part_B中训练集和测试集图片分别为400张和316张。
由于Part_A和Part_B数据集的训练集分别是300张和400张图片,图片数量太少,因此采用数据增强方式,从每一张训练图片中截取36张图片,同时过滤单幅少于5人的图片,每一张图片尺寸都为原图片尺寸的1/4,采用该方式增加训练图片的数量。在训练过程中,手动将初始学习率降低10倍再次训练,使本文算法达到更好效果。
表1为本文算法与8种当前主流人群计数算法的性能比较结果,由此可知:在Part_A数据集上,本文算法MAE和MSE均为最优;在Part_B数据集上,本文算法与其他算法性能接近。
表1 Shanghai Tech数据集上各算法性能对比结果
本文算法不仅在人群密集场景的Part_A数据集上有效,对于人群密度中等且分布变化较大的Part_B数据集依然表现良好,说明本文算法的适用性强和准确性高。图2分别展示了两个数据集上测试图片的估计密度图和真实密度图。
图2 测试图片的估计密度图与真实密度图1
2.3 UCF_CC_50数据集
UCF_CC_50数据集[15]是一个复杂的数据集,该数据集人群密度大,仅有50张图片,但却有63 974人。同时,该数据集图片的人群数目从94人到4 543人不等,平均每张图片有1 280人。本文采用与当前主流人群计数算法相同的方式,对原数据集进行五折交叉验证,并采取与Shanghai Tech数据集相同的方式进行数据增强,最后用本文算法分别在5个数据集上进行训练和测试。表2为本文算法与该数据集上表现良好的9种当前主流人群计数算法的性能比较结果,数据显示本文算法的MAE和MSE两项指标均优于其他算法,说明本文算法具有良好的泛化能力和较高的准确性。
表2 UCF_CC_50数据集上各算法性能对比结果
图3展示了两张测试图片的估计密度图和真实密度图。综合来看,本文算法在Shanghai Tech和UCF_CC_50数据集上的实验结果均已超越目前大部分计数算法,具有较高的准确性和较好的鲁棒性。数据和特征决定了机器学习的上限,而模型和算法只是逼近该上限且在深度学习领域同样适用,算法对图片特征的提取能力决定算法性能的优劣。鉴于以上思想,本文算法设计以提取和优化图片特征为目的,基于VGG前13层及使用多列不同尺寸的卷积核提取特征,并从以下方面优化特征:1)引入可变形卷积改进3列多尺度特征;2)构建注意力模块对3列多尺度特征进行打分评判,使对密度图生成有益的特征获得更高权重,对密度图生成无益的特征获得更低权重,从而优化所得特征。通过图2、图3估计密度图与真实密度图的比较,算法生成的密度图人群分布与真实密度图接近,由此可知算法输出了较高质量的密度图,从而提升了计数准确度。而目前典型网络大多只从多列网络、更深层次网络进行设计,并未考虑影响模型性能的特征优化这一因素,而上述两方面保障了本文网络结构具有良好的特征提取能力,因此整体性能优于现有大部分经典网络。
图3 测试图片的估计密度图与真实密度图2
为验证本文算法引入可变形卷积和特征注意力模块的有效性,并测试其对本文算法的性能影响,在Shanghai Tech数据集Part_A上进行实验,结果如表3所示。在验证过程中,基于无可变形卷积网络和无注意力模块网络的算法与本文算法的训练方法一致,手动将初始学习率降低10倍再次训练,可使算法达到更好效果。
表3Shanghai Tech数据集Part_A验证模块对算法性能的影响
Table 3 Impact of the Part_A verification module in the Shanghai Tech dataset on algorithm performance
算法MAEMSE基于无可变形卷积网络的算法69.6110.0基于无注意力模块网络的算法68.0101.6本文算法66.8100.0
3 结束语
本文提出一种尺度自适应的基于多列卷积神经网络的人群计数算法。为解决图片中的人群遮挡和尺度变化问题,引入具有良好空间几何形变学习能力的可变形卷积,以提取多尺度特征。在此基础上,构建特征注意力模块自适应地融合多尺度特征并生成密度图。在Shanghai Tech和UCF_CC_50数据集上的实验数据显示,本文算法具有较强的鲁棒性和较高的准确性。后续将通过提高密度图质量和改进损失函数等技术进一步优化人群计数算法。