一种基于深度学习的视频客流密度计算方法*

2023-01-06 05:37丰莫辉强王伟欧阳慧于富洋张城叶
计算机与数字工程 2022年10期
关键词:客流计数卷积

黄 丰莫辉强王 伟欧阳慧于富洋张 城叶 明

(1.浙江省轨道交通运营管理集团有限公司 杭州 310020)(2.深圳北斗应用技术研究院有限公司 深圳 518055)

1 引言

随着中国城市建设发展,地铁出行逐渐成为大众的首选出行方式。相较于其他交通方式,地铁站空间区域小、客流密度高、疏散难度大,由此带来的客流风险不容忽视。目前,在地铁站针对客流的管控控主要通过人工方式现场或视频监控线,并借助自动售检票系统(AFC)的客流数据进行历史数据回测[1],人工方式需要依赖人的经验来片段客流情况,该方式带有一定的主观性,而通过AFC监控客流无法做到客流实时统计,并且做不到局部客流监控。随着计算机视觉计算技术的发展,通过视频分析的智能客流管理为车站客流实时监控和风险预警提供了有效手段。其中头部检测,目标检测,运动跟踪,客流计数和客流密度评估等技术也成为车站客流管控应用的热点[2]。

客流密度是通过输入原始的区域客流图像得到对应区域客流数量统计值。针对视频图像的客流密度统计方法主要为:基于回归的检测方法[3],基于像素的统计方法[4],在可获得的公开数据集上效果较好的方法是基于卷积神经网络,该方法对人群分布不均,遮挡严重的分析准确度较好;基于深度特征的方法,在利用卷积神经网络的方法上进一步提升了较为复杂背景下的分析准确度。本文结合已有研究方法采用基于深度学习的密度计数(DL-CNT)方法[5],该方法有别于以往开集问题,实际场景下人的数量是一个开集的问题,但是模型往往是在闭集的数据集上进行训练,故采用分而治之的思想,对整张大图,本文会去划分成若干小分块,使得每个小分块的数量处于这个闭集内,从而实现对每个小分块的人数预测,并泛化到开放集合中,实现客流密度的统计[6]。

2 算法设计基础

2.1 图片输入

视频帧图像有RGB三通道,分别代表着红色、绿色、蓝色三种不同的颜色通道,通道的像素使用数组进行表示,像素值由0~255的数字来表示[7]。

2.2 卷积

卷积:使用一个K×K大小的卷积核(kernel),在每一层像素矩阵上按步长(stride)滑动,每次扫到的数值会和卷积核中对应位置的数进行相乘,然后相加求和,得到的值将会生成一个新的矩阵[8]。

卷积核为卷积操作过程中的一个矩阵,用于提取图像的特征(feature map)。

假如一个卷积核的大小为6×6大小,卷积核矩阵里面的每个值就是模型的神经元参数,统称为网络权重,模型训练开始会对矩阵进行随机初始化,训练网络过程中,网络会通过损失函数(loss)的收敛反向传播不断更新权重值,通过损失函数(loss)收敛到最小时候确认为最佳权重值。

其中n表示宽高,k表示卷积核尺寸,p表示边padding,s表示步长stride。

2.3 池化pooling

经过卷积操作后提取到的特征信息,由于卷积带来的感受野,实际卷积后的一个单元格对应着卷积前的多个格子数值,所以卷积后的相邻区域会有相似特征信息,这些相似的特征可以相互替代的,若全部保留这些特征信息会存在信息冗余,增加计算难度。

故在卷积后增加一个池化层,池化层会不断地减小数据的空间大小,由于池化过程中丢弃了部分权重值,相当于对模型进行了一个正则化,有效的控制了模型的过拟合,因为丢弃了部分权重值,所以参数的数量和计算量会有相对应的下降[9]。

3 DL-CNT算法设计

3.1 整体框架

目标计数任务是一个天然的开集问题,其预测范围是[0,∞],而实际中,视频帧的图像中目标数量是有限数量的,实际观测到的目标数量是一个有限数量的封闭区间,故实际情况应从封闭子集区间上学习,并泛化到开放集合中。本文提出了基于CNN网络的密度计数算法(DL-CNT)模型,训练过程中只图片上目标数量0~20的部分,当遇到一张目标数量密集并超过20个目标的图像时,对图像进行切分成多个部分,直到每个子图像中包含的目标个数不超过20个,然后再对每一个子图进行计数和合并计算最总结果[10]。

切分带来的一个问题是需要设计好划分计数的判断标准。直接的思路是对切分的图像进行上采样,再进行切分,将图片输入到同一个网络中进行预测,由于对图像上采样会导致部分信息丢失,带来一个难题是图像变模糊,另一难题是计算量暴涨,从而资源及模型精度会受较大影响。受感兴趣区域池化(RoI Pooling)启发[11],本算法对特征图(feature map)进行解码和上采样,然后对特征图(feature map)进行后续预测和计数。

3.2 编码模块

输入的64×64的patch,经过VGG16网络的卷积3(Conv3),卷积4(Conv4),卷积5(Conv5)这3个卷积阶段输出的特征图大小分别为8×8、4×4、2×2,Conv5是将VGG16网络的全连接层(FC)去除后的输出,即输入图像经过32倍下采样输出的特征图(feature map)[12]。Conv5的输出直接通过一个分类器,预测出C0值。C0表示的是当前输入图像所有目标计数所属类别,因为C0的预测没有用到S-DC网络结构,所以C0值为先前其他方法的最终输出结果。

3.3 解码模块

F1是第一个通过S-DC的feature map,F1被划分后,送入共享的计数分类器,产生划分计数,具体地,F1是F0通过UNet网络模块上采样生成的特征图,C1中的4个单元格,每个单元格代表着对应输入图像相对应的32×32区域的目标数量计数。

在backbone的基础上,采用一个classifier去进行分类,将人数量化为区间,即

这样相当于将预测划分为了M+1类,然后每一类代表了一个人数区间,在计算实际人数时,采用区间的中值代表这个区间的值,对于则采用CM表示,可以获得对整个64×64的patch的人数预测结果用C0表示。

3.4 计数预测

当网络通过classifier预测了1×1,2×2,4×4的分块预测结果之后,到底是分的细的结果重要还是不分的细的结果重要,这里就采用division decider预测的weight map去权衡,w越大表示细分的必要性越大,以1×1的C0和2×2的C1的结合为例,先将C0上采样到2×2的状态,同时每个点的值是原来C0平均分为1/4的结果,最后获得2×2的融合的预测结果DIV1,每个值代表对64×64的一个1/4区域即32×32的人数预测结果。同理可以获得4×4的DIV2,每个点的值代表16×16的一个区域的人数预测结果,由于VGG16只有5个卷积阶段的限制,所以这个S-DC的思路最后做5层。

3.5 实验过程

可视化division-decider产生的w的作用,根据W的作用,W越大代表越应该采用细分的后的预测结果,W越小代表不用细分预测效果就可以了,图中可以看到越是密集的区域,W是越亮,说明W学到了密集区域需要划分再预测这样一个语义的信息。W2相比于W1更加关注一些更加密集的小部分区域,是给予W1划分的基础上的进一步划分[13]。

图1 不同W权重的可视化

4 实验结果分析

4.1 地铁数据集搜集

数据集是在地铁场景收集人群数据集,数据集的图像分辨率为1920*1080,共10000张,制作的数据集需要对人头中心位置进行标注,标注为中心位置的坐标点(x,y),本文使用Matlab工具对图像进行标注,共标注了45000个人头框。数据集包含10个区域,地铁出入口、站厅、站台、安检区域等,真实呈现了地铁站内不同摄像头的角度和高度变化情况,以及密集人群和严重遮挡因素,可以较为真实反应地铁实际场景。

4.2 实验评价指标

DL-CNT算法采用了平均绝对百分比误差评价指标,当MAPE为0时表示完美模型,MAPE大于100%则表示劣质模型,不可用。DL-CNT算法的MAPE值为8%[14]。

图2 地铁站台标注示意图

4.3 模型验证

通过选取地铁10个摄像头场景,人工标注了2000张测试集,平均每一个摄像头200张数据集,将2000张测试集输入模型得到预测数量,得到mape为8%,密度图测试效果如下,观察可知,对于疏密程度不同的地铁监控场景,网络都能获得较高的计数精度。同时生成的模型预测密度图较好的呈现了站内客流密度分布情况[15]。

图3 地铁数据集网络输出结果对比图

图4 地铁数据集网络输出结果对比图

5 客流密度算法在地铁站应用

地铁站内区域相对封闭,乘客日常出行在早晚高峰客流量集中,容易发生大客流,实时监控站内各区域乘客人数并预警可以有效避免人群拥挤,发生踩踏等风险因素。本文基于上述客流密度算法,基于B/S架构开发了一套车站客流计数监控预警系统。基于国标28181协议接入车站现有的CCTV系统获取车站现场摄像头实时视频流,基于客流密度算法将传入的视频流进行实时分析,输出车站现场各个区域的客流人数,例如站台候车区域,换乘通道等,满足车站日常使用需求。当视频分析结果超过预警的阈值时,站务人员可通过监控大屏收到预警通知,及时对客流密集区域进行疏散处置。

图5 地铁站换乘通道客流预警

6 结语

本文针对地铁客流管控场景设计了视频监控场景下的客流密度算法,利用基于深度学习的密度计数(DL-CNT)方法实现地铁各个区域客流人数计数。通过实验及应用结果发现该方法具有实时、高效、性能消耗少的特点,可以满足地铁站内客流监控需求,除在地铁场景应用外,也可在其他交通枢纽、公共场所应用。

猜你喜欢
客流计数卷积
客流增多
古人计数
基于3D-Winograd的快速卷积算法设计及FPGA实现
城市轨道交通节假日期间大客流行车组织思考与实践
递归计数的六种方式
古代的计数方法
卷积神经网络的分析与设计
古代的人们是如何计数的?
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法