基于MS-CNN 卷积网络的人群密度检测方法
2019-11-18林峰江荔
林峰,江荔
(福州职业技术学院,福州350108)
0 引言
视频监控是现代安防技术的关键组成部分。视频监控系统历经模拟、数字视频监控,当前已进入智能视频监控时代。智能视频监控将传统视频监控技术与人工智能技术进行深度融合,通过构建一系列的算法模型,使得安防监控能够更加智能化、自动化,减少了人工干预,提高了监控效率和准确性。在智能视频监控系统中,人群密度检测是一项核心任务,特别是在景点、车站、商场等应用场景重,通过摄像头采集人群影像数据,快速分析统计人数,对过高人群密度进行告警,提前进行人流疏散,有助于避免出现过分拥挤甚至踩踏等安全事件[1-2]。
现有的人群密度检测方法主要有对象检测、回归分析以及目标检测。这些方法已广泛运用在视频监控系统中,具有分析速度快、检测精确度高等优点。但是在人群密度分布不均、遮挡严重、目标尺度变化大等场景中,传统方法无法做出精确判断,存在误检率高的缺点[3]。卷积神经网络是一类成熟的深度学习技术,在自然语言处理、图像识别、计算机视觉等领域有着广泛的应用。MS-CNN(Multi-Scale Convolutional Neural Network)网络是卷积神经网络中的一种,通过在卷积层中加入多个分支结构,解决了传统卷积神经网络只适用于单一尺度目标检测的问题,提高了在复杂背景下多尺度目标检测的准确率[4-7]。
本文通过对视频图像进行高斯滤波预处理,构建MS-CNN 多尺度卷积神经网络模型,使用国际基准数据集Mall Dataset 进行测试,验证了模型在遮挡严重、目标尺度变化大等场景中仍具有较高的人群密度检测准确性。
1 基于MS-CNN的人群密度检测方法
1.1 图像预处理
摄像头所采集的影像数据,往往存在背景复杂、人群密度分布不均、人体部位互相遮挡等问题,对人流计数模型的准确性产生了较大的影响。为了有效抑制噪声,平滑图像,减少像素与像素之间的相关性,本文采用了高斯滤波的方法,对监控图像进行了必要的预处理。其具体操作是,利用二维高斯分布函数,生成高斯模板,扫描监控图像中所有的像素点,用模板(本文模板尺寸选用15×15)框选范围内像素点的加权平均值,作为新生成图像的像素点的值[11]。其中二维高斯分布函数如公式(1)所示:
此外,为了进一步减少干扰,在检测模型构建前,针对已标注人像位置的图像,经过高斯滤波器模糊处理后,同时生成相应人群密度图,进一步提高了模型训练速度和准确性。图像预处理效果如图1 所示。
图1 经过高斯滤波处理后的密度图
1.2 构建MS-CNN深度卷积神经网络
传统的卷积神经网络通常由输入层、卷积层、池化层、扁平层、全连接层、输出层等网络结构组成,用于图像特征的提取和结果的分类。对于单一尺度或尺度变化不大的图像进行目标检测,传统卷积神经网络模型具有较高的识别率。但是针对尺度变化较大的人像检测,传统卷积神经网络模型误判率较高,在人群密度计数等应用上表现效果较差[8-10]。
图2 传统CNN结构
MS-CNN 是对传统卷积神经网络的升级和改造,通过在传统卷积神经网络结构的基础上增加了若干MSB(Multi Scale Blob)层,可实现不同尺度的图像特征的提取。本文中所使用的MSB 层由4 次卷积操作构成,卷积核大小分别为9×9、7×7、5×5、3×3,负责对应尺度范围内图像特征的提取。MSB 层结构示意图如图3所示。
图3 MSB层结构
针对安防监控人群密度检测问题领域,本文基于MS-CNN 网络进行了部分改进和优化,其完整网络结构如图4 所示。通过若干次“卷积层-MSB 层-最大池化层”的组合,构建多尺度目标检测器,解决了待检测目标与感受野大小不一致的问题,使得所构建的神经网络,能够在浅层网络检测较小的目标,在深层网络检测较大的目标。
图4 改进的MS-CNN网络结构
此外,在卷积层的构建中,使用的激活函数为Re-LU 函数,优化器选择随机梯度下降算法,损失函数采用MSE 函数。其中ReLU 函数如公式(2)所示:
1.3 算法流程
本次方法涉及的完整算法流程如下所示:
Step1 将训练样本按公式(1)进行高斯滤波预处理,并根据人像所在像素位置,生成密度图;
Step2 按图4 结构,构建经过优化的MS-CNN 网络,其中卷积层激活函数使用ReLU 函数,MSB 层中涉及的四个卷积操作对应的卷积核大小分别为9×9、7×7、5×5、3×3;
Step3 将训练样本逐个输入Step2 中构建的神经网络,进行模型参数的训练,其中模型优化器选择随机梯度下降算法(SGD),损失函数使用均方误差(MSE);
Step4 重复步骤Step3,直到损失函数逐渐收敛,且不再发生变化,将结果模型进行保存;
Step5 使用模型对待预测图像进行人群密度统计。
2 实验过程及结果分析
2.1 数据集
本次实验所用数据集为国际标准数据集Mall Dataset[12]。该数据使用了某大型购物商场监控数据,涉及超过60,000 个不同的行人,共有2000 帧,每帧均为JPEG 格式,图像大小统一为640×480 像素,视频图像具有人群分布不均、部分遮挡及尺度变化较大等特点,其完整分布图如图5 所示。每张图像的人数及人像位置均作了标记,并保存为MAT 格式。
图5 人数分布图
2.2 实验过程
本次实验基于当前流行的Python 语言,深度学习框架前端采用Keras(版本号:2.2.2),后端采用Tensor-Flow(版本号:1.11.0),图像预处理选择OpenCV 代码库(版本号:4.0.0)。模型训练所用设备计算性能:CPU 型号为Intel 酷睿i5-3427U(核心数:4,主频:1.8GHz)、内存10GB。经过10 轮的迭代训练,模型逐渐收敛,共耗时约7 天,训练参数个数总计57,892,305。模型训练过程中损失函数的收敛情况如图6 所示。
图6 损失函数收敛情况
2.3 结果分析
人群密度计数所使用的评估指标为MSE(Mean Square Error,均方误差),其指标计算公式如下所示:
式中,N 为图像个数,zi为第i 张图像真实人数为第i 张图像通过模型预测的人数。
对上述训练后的模型进行评估,其MSE 值为3.2,较传统方法(MSE 值:3.4)[12]有所提高。随机20 帧监控的实际与估计人数比对情况如图7 所示。
图7 实际人数与模型估计人数比对
3 结语
为了提升人群密度检测准确性,本文通过对视频图像进行高斯滤波预处理,有效抑制了噪声,减少了像素干扰,同时设计并构建了MS-CNN 深度卷积神经网络,经过训练的模型,提高了在复杂背景下多尺度目标检测的准确率,经在标准数据集Mall Dataset 上测试,其MSE 值达到3.2,较传统方法有所提升,在安防监控领域中具有较良好的应用前景。但是在实验过程中,模型训练耗时过长(运行约7 天),后续将研究如何通过搭建分布式系统,加快神经网络参数的训练过程[13-15]。