深度语义分割人群密度检测技术

2021-08-07 07:42杜慧敏毛智礼
计算机与生活 2021年8期
关键词:集上空洞卷积

马 煜,杜慧敏,毛智礼,张 霞

西安邮电大学 电子工程学院,西安 710121

随着世界经济的不断增长,全球人口数量急剧增加,大量的人口涌入土地面积有限的城市,导致城市中的公共场所在重大节日或活动中会面临高流量、高密度的人群压力。当大量的人群处于较为狭小的空间时,一旦发生骚乱,人群会很容易失去控制,从而将会导致恶性事故的发生。近年来,关于在大型活动、体育赛事、旅游景点、学校等地发生推搡踩踏等严重事件的新闻报导屡见不鲜。例如,2009年3 月29 日在科特迪瓦阿比让举行的世界杯和非洲国家队预选赛期间,由于人群密度太大使得墙体倒塌造成19 人死亡,132 人受伤;2013 年6 月,英格兰球星贝克汉姆到达同济大学开展交流活动,现场发生踩踏事件,受伤人数颇多;2014 年12 月31 日,在上海外滩的跨年活动上发生恶性踩踏事件,造成36 人死亡,47 人受伤。这些悲剧均是在人群密度过大时发生的,由此可见,公共安全与人群密度息息相关。为了预防类似的恶性事件发生,需要掌握实时的人群密度情况,在密度过大时进行预警并采取合理的管控措施。因此对人群密度进行精确的检测对预防恶性事件的发生有着重要意义以及研究价值。而人群中的密集性、遮挡性以及多尺度性对检测的精度有着很大的影响,尤其是人群中的尺度多样性给该领域的研究带来了极大的挑战。人群拥挤场景如图1所示。

Fig.1 Crowd image图1 拥挤人群场景

近年来深度学习发展迅速,卷积神经网络(convolutional neural networks,CNN)在图像处理领域有着优异的表现,人群密度检测领域的研究者们也将卷积神经网络运用到该领域中。Zhang 等人[1]首先提出多阵列网络结构(multi-column convolutional neural network,MCNN)来应对人群数据中的不同尺度问题,设计出了三列卷积核大小不同的网络。该网络在ShanghaiTech 数据集上有良好的表现,但当涉及到处理人数较多(尺度多)、场景遮挡多以及透视问题时效果明显下降。Boominathan 等人[2]提出的Crowd-Net 在不同的列上组合了浅层网络和深层网络,其中浅层网络捕获对应于大规模变化的底层特征,而深层网络捕获高层语义信息。该网络只用了两种卷积核大小不同的网络对全图的所有尺度信息进行提取,在人群分布不均匀的图片中会出现浅层网与深层网提取特征的准确性下降。Switching CNN[3]在图像块上训练几个独立的CNN人群密度回归器,这些回归器与MCNN具有相同的结构。此外,还对回归分类器进行了交替分类训练,以选择最佳分类器进行密度估计。该网络首先将图片分成9 块,通过switchlayer对每一块图片中人群密度进行分析后分类,使不同密度的块进入相应的人群密度回归器,由于在分块时会出现人脸的不规则划分,此类情况会使得对人进行识别时出错从而会导致网络精度下降。U-GAnet[4]通过多通道融合浅层特征生成人群密度图,但对于人群密集度大的区域则无法生成高质量密度图。

为了更好地解决人群中的尺度多样性问题,本文提出了新型的用于人群密度检测的网络结构。VGG[5](visual geometry group)和残差网络[6](residual network,ResNet)均为具有特征提取性能的网络,考虑到网络的结构,本文选择使用VGG16 的部分网络作为前端网络来对图像进行特征提取,在后端网络的设计中使用了两阵列的空洞卷积网络对第一部分网络输出进行处理从而生成不同尺度下的特征图,最后将两列网络的输出进行级联生成预测密度图。本文在UCF_CC_50[7]和ShanghaiTech 数据集上进行测试,测试结果好于大部分主流人群密度检测算法。

1 基于深度学习的人群密度检测

1.1 人群密度图

本文所使用的训练数据为人群密度图,因此在训练网络前需要将人群密度数据集中的人群图片使用Matlab 进行预处理,将其转化为可用的密度图,如图2 所示。

Fig.2 Density map图2 密度图

对于一张有N个人数标记的图片数据可以使用式(1)来表示:

式中,xi为人头在图像中的像素位置,δ(x-xi)表示图像中人头位置的冲激函数。将式(1)与高斯核滤波器进行卷积得到密度方程,如式(2):

考虑到由尺度不同引起的人头变形,本文使用由Zhang 等人提出的基于几何自适应核函数的方法来生成网络训练时所用到的密度图,如式(3)所示:

1.2 损失函数

本文在训练网络时使用计算所得的预测密度图与真实密度图间的欧几里德距离(Euclidean distance)作为损失函数,如式(4)所示:

其中,θ为待优化网络参数,N为训练图片数目,xi为输入图像,zi表示xi对应密度图的真实值,z(xi;θ)表示由网络估计出的密度图。

1.3 空洞卷积

在图像分割领域中完成一项任务需要由若干卷积层和池化层组成的卷积神经网络。图像输入到卷积层来提取图像特征得到该层输出特征图,再通过池化层来对特征图进行感受野增大并减小图像大小以便进行下一步操作。分割任务是在像素级上完成预测的,因此后端网络需要对池化后的特征图进行上采样(upsampling),使得输出图像恢复到与输入图像相同大小。由于分割任务对图像细节信息的需求度较大,而过多的池化操作会导致部分细节丢失。本文使用空洞卷积(atrous convolution)来解决这一问题。空洞卷积操作如图3 所示。图3(a)为扩张率为1的空洞卷积,当扩张率为1 时空洞卷积即为普通3×3卷积操作,其感受野为(a)中红色部分。图中(b)为扩张率为2 的情况,即在(a)中每个卷积核之间进行补零,扩张后只有红色部分与3×3 卷积核进行卷积操作,其感受野扩大为(b)中绿色框内的部分,即感受野扩大为7×7。

Fig.3 Atrous convolution图3 空洞卷积

空洞卷积核实际大小如式(5)所示:

式中,k为原始卷积核大小,r为扩张率。

空洞卷积感受野计算方式如式(6)所示:

式中,f为上一层感受野大小,s为卷积步长,ks为卷积核大小。

1.4 网络结构

为了解决人群密度检测任务中由于摄像机视角原因所引起的多尺度问题,本文设计了如图4 所示的网络结构。

网络第一部分使用了经典网络VGG16 的部分网络,由于VGG16 结构中存在5 次最大池化操作,使输出特征图为输入图像大小的1/32,这对于生成密度图来说会丢失很多细节信息。因此,本文采用第3 次池化操作后的结果作为第一部分网络的输出,使得输出密度图为输入图像的1/8,以提高预测密度图的准确性。网络第二部分使用了多阵列空洞卷积,由于空洞卷积是在普通卷积的基础上对卷积核进行间隔补零操作,因此可以在不增加网络计算参数的情况下来扩大感受野,以此来提高网络对图像多尺度信息的捕捉能力。人群数据是高密集度图像数据,因此空洞卷积特有的提高感受野的方式尤其适用于人群密度检测工作。本文网络使用两阵列扩张率不同的空洞卷积对第一部分的网络输出进行处理,其扩张率为2 和4,使得网络能够捕捉更多的尺度细节信息。网络最后使用1×1 的卷积对输出进行级联,得到高质量预测密度图。

2 实验及结果分析

本文实验分别在ShanghaiTech、UCF_CC_50 两个数据集上对网络性能进行测试。本文在pytorch环境下进行训练,初始学习率为1×10-6,训练周期为400个epoch。

2.1 评价标准

本文使用平均绝对误差(mean absolute error,MAE)及均方误差(mean squared error,MSE)来衡量网络性能,计算方法如式(7)、式(8)所示:

其中,N为测试数据集中图片的个数;Ci为网络预测的图片数据中人头个数;为Ci对应的真实人头个数。

式(9)为人头数计算方式,其中l、w为所计算密度图的长、宽,即对该密度图中所有像素点求和来得到人头个数。

2.2 UCF_CC_50 数据集下的测试结果

UCF_CC_50 数据集是第一个具有挑战性的人群密度数据集,数据集中含有各种密度以及不同角度的场景,整个数据集每个图像平均有1 280 人,整个数据集共标记了63 075人。图片内人数从94到4 543不等,这样差异巨大的数据集对模型性能也有很大的挑战。因为数据集中只有50张图片,在训练前对每张图片进行部分截取,截取大小为原图1/4共20张,再对截取出的图片进行翻转操作来扩大训练数据集。如表1所示,本文算法在UCF_CC_50 数据集上的表现与其余6 种算法相比两项参数均达到最好,证明了算法的准确性。

Table 1 Performance comparison on UCF_CC_50 dataset表1 UCF_CC_50 数据集上性能对比

2.3 ShanghaiTech 数据集下的测试结果

ShanghaiTech 数据集为上海科技大学团队为解决人群密度检测问题所建立的大规模人群数据集,该数据集共1 198 张图片,其中标记人数达到330 165。其中Part_A 部分包括300 张训练图片以及182 张测试图片,Part_B 部分包括400 张训练图片以及316 张测试图片。本文所提出的人群密度检测算法与其他主流算法在该数据集上的测试结果如表2 所示。

Table 2 Performance comparison on ShanghaiTech dataset表2 ShanghaiTech 数据集上性能对比

由表2 可见,本文算法在ShanghaiTech Part_A 密集人群数据上的表现与表中7 种主流算法相比均达到最优,在Part_B 街景人群数据上表现依然突出,证明了本文算法的可靠性。

实验效果如图5 所示。本文算法效果与MCNN对比如图6 所示。

Fig.6 Compared with MCNN图6 与MCNN 结果对比

2.4 实验效果分析

由于空洞卷积会带来栅格效应,即在卷积核中间插入0 后再进行卷积操作时不是每一个像素都参与计算,会造成部分信息不连续的结果,对预测效果有一定的影响。因此,本文参考文献[15-16],在原有的网络基础上进行了空洞率调整,将其中一列空洞卷积的扩张率调整为[1,2,5,1,2,5]锯齿状空洞卷积网络,并在ShanghaiTech Part_A 上对微调后的网络进行了训练以及测试,对比效果如表3 所示。

Table 3 Comparison on ShanghaiTech Part_A表3 ShanghaiTech Part_A 上效果对比

锯齿状空洞卷积在扩张率大于1 的空洞卷积操作后插入一层扩张率为1 的基础卷积,可以对扩大感受野后的卷积操作中每一个像素都进行计算来保证信息的连续性。由表3 中数据可知,锯齿状空洞卷积结构对解决栅格效应有良好的效果并对网络性能有了一定的提高。

本节对生成密度图进行图像熵计算,结果如表4所示。本文算法所生成的密度图相较于其他算法包含更多信息,质量更好。

Table 4 Image entropy of ShanghaiTech Part_A表4 ShanghaiTech Part_A 图像熵

2.5 验证性分析

为验证本文算法所引入双阵列空洞卷积与对VGG 网络进行改进工作的有效性以及对本文算法的性能影响,本文在ShanghaiTech Part_A 数据集上进行了消融实验,效果如表5 所示。

Table 5 Ablation experiment on ShanghaiTech Part_A表5 ShanghaiTech Part_A 上消融实验

由表5 数据可得,本文所使用的改进后的VGG相较于使用原始VGG 对网络性能提高了19.7%。由于原始VGG 需要经过5 次池化操作使前端网络的输出为原图的1/32,本文使用的改进VGG 进行了3 次池化操作使得输出为原图的1/8,可以保留更多的边缘人群信息,有利于密度图的精确生成。为测试空洞卷积对网络性能的影响,本节对去掉空洞卷积模块后的网络进行实验并与原网络进行对比,如表5 数据所示去掉空洞卷积模块后网络性能下降了36.2%。使用不同扩张率的网络相较于单一扩张率的网络性能提高了10.3%。

网络改进前后输出特征图如图7 所示。

本节对网络改进前后相同层相同通道的特征图进行提取,由图7 可以看出改进后的网络可提取到更多的边缘人头特征,并且生成质量更高的密度图。

Fig.7 Feature visualization图7 特征可视化

3 结束语

本文提出了一种应对多尺度问题的基于两阵列卷积神经网络的人群密度检测算法,测试结果表明该算法在通用人群数据集上有着良好的准确性。在未来的研究工作中,将从空洞卷积的空洞率的设计方向入手来解决空洞卷积的栅格效应,以及如何在网络中引入注意力机制等方面来开展工作。

猜你喜欢
集上空洞卷积
基于双空间模糊邻域相似关系的多标记特征选择
基于全卷积神经网络的猪背膘厚快速准确测定
关于短文本匹配的泛化性和迁移性的研究分析
番茄出现空洞果的原因及防治措施
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
如何避免想象作文空洞无“精神”
空洞的眼神
师如明灯,清凉温润