基于深度聚类的人群运动行为检测
2020-11-12杨玉成岳诗琴邵定琴
杨玉成 张 乾 岳诗琴 邵定琴
1(贵州民族大学数据科学与信息工程学院 贵州 贵阳 550025) 2(贵州省模式识别与智能系统重点实验室 贵州 贵阳 550025)
0 引 言
人群运动是公共场所中一种极为普遍的行为现象,随着人口数量的不断增加,公共场所人群密集程度也随之增加,这给公共场所人群管理与安全防控带来巨大难题[1],因此人群运动行为检测成为公共安全领域的热点研究课题。人群运动行为检测涉及模式识别、计算机视觉、机器学习和人工智能等领域理论知识。经过多年发展,人群运动虽然在理论体系和检测技术上取得诸多成绩,但仍然存在一些技术瓶颈尚未得到很好的解决,例如人群密集的场所中人群个体间存在严重的遮挡、其他非行人混入人群中、人群中个体运动方向和速度不一致性等。这些因素给人群运动行为检测带来巨大挑战。
场景人群聚类实质是对场景中的运动人群进行检测[2],目前人群检测算法主要分为三大类:(1) 基于轨迹点的算法;(2) 基于视图的算法;(3) 基于深度学习的算法。基于轨迹点的算法主要是根据人群运动轨迹的位置信息和时间信息进行检测。Takahashi等[3]利用关键轨迹特征识别运动人群动作;Zou等[4]利用关联轨迹点检测运动人群;Zhao等[5]提出一种基于轨迹点光流直方图的算法检测异常人群,虽然基于人群运动轨迹点的算法能够快速检测异常人群,但是人群的轨迹信息与人群实际运动存在偏差[2],所以该类算法检测结果可信度不高。基于视图的算法是指从不同的视频角度对运动人群进行检测。Peng等[6]提出一种多视图贝叶斯模型对行人进行检测;Tian等[7]将三维光谱图像切分为三个视图进行聚类;Qian等[8]提出一种基于嵌入图的多视图聚类算法,虽然基于多视图的算法能够较为准确地检测人群,但是该类算法需要先验知识确定阈值,而且算法鲁棒性较差;Wang等[2]提出一种自加权多视图人群聚类算法框架,虽然该算法不依赖于任何阈值参数并获得较强鲁棒性,但是该算法计算复杂度较高,在一定程度上增加了计算成本。深度学习算法在图像识别、姿态估计和语音识别等领域表现出优越的性能[9],同时也被广泛应用于人群运动行为检测领域。Shuaibu等[10]提出一种三维CNN(Convolutional Neural Networks)用于人群场景理解。Keçeli等[11]在迁移学习的基础上提出一种人群暴力行为检测算法。Zhang等[12]提出一种基于SSD框架的拥挤场景人群检测算法。Tzelepi等[13]在CNN的基础上提出一种无人机自动人群检测算法,虽然深度学习算法具有强大的特征学习能力,但网络学习到的特征包含大量异常点信息给计算增加了负担并影响效率。
针对上述问题,本文提出一种基于深度聚类的人群运动行为检测算法。首先将人群运动轨迹的位置和速度组合得到运动特征描述符,通过K-medoids算法对运动特征描述符进行聚类得到聚类指数U1,从而将人群场景划分为不同的运动区域;然后通过SqueezeNet轻量级正向加速网络提取视频帧图像特征,再次采用K-medoids算法对图像特征进行聚类得到聚类指数U2并将其作为U1的约束条件去除异常点;最后将去除异常点的聚类指数映射至每一帧图像,从而实现人群检测。
1 SqueezeNet正向加速网络
由于传统CNN网络存在训练周期长、参数多、计算内存需求大等缺陷,因此Iandola等[14]提出一种轻量级CNN网络SqueezeNet,其卷积核参数仅为传统CNN网络的1/9;为减少网络输入参数,在传统CNN网络基础上增加压缩层,用于压缩输入图像的通道数;为减少信息损失将池化层置于卷积层后。
SqueezeNet网络结构主要由输入层、卷积层、Fire模块、池化层、输出层构成。Fire模块的结构如图1所示,该模块由压缩卷积层和扩展卷积层组合而成,其中扩展卷积层由1×1卷积核和3×3卷积核构成。Fire模块是SqueezeNet网络的核心组成部分,主要作用是减少图像输入通道数和卷积参数,其输出结果被作为整个网络的中间参数。在图像特征学习过程中,首先对输入图像进行卷积操作,然后经过8个Fire模块连续参数压缩,最后通过一层卷积操作得到1×1 000维的特征向量。SqueezeNet的网络结构如图2所示。
图1 Fire模块
图2 SqueezeNet网络
虽然SqueezeNet网络与传统CNN网络相比性能有很大提升,但是网络计算速度仍然较慢。在CNN网络中,层与层之间、卷积核之间、输出特征图等多为并行结构。鉴于此,Motamedi等[15]提出一种基于FPGA的加速器框架,该框架充分利用网络的并行结构对SqueezeNet正向网络加速。
FPGA加速器框架主要由乘法器和加法器组成,具体结构如图3所示。第一层为乘法器层,由K个乘子构成;第二层为加法器层,该层的主要作用是对乘法器层的结果进行累积。将乘法器层中的乘法子集与加法器中对应位置的加法子集进行组合得到PCE(Parallel Convolution Engine)模块;在网络输出层将PCE模块与加法子集组合构成并行输出模块。为使网络达到最佳性能,需要计算输入特征映射n、乘子K和并行输出模块m的最优值。
图3 FPGA加速器结构
首先定义一个周期函数T如下:
(1)
该函数即为乘法运算和加法运算次数。式中:fp为特征总数;Wp为输出特征;S为卷积核的大小;l为信息传递损失量。然后定义一个网络运算总数计算函数:
N=2×fp×S
(2)
最后定义一个峰值计算函数:
(3)
在式(1)-式(3)中fp、Wp、S为固定值,由此可以计算得到m、n、K的最优值。
FPGA加速器强大的加速性能使SqueezeNet正向网络运行速度达到最佳状态。SqueezeNet正向加速网络提取一幅图像的特征仅需22±1 s,因此本文采用SqueezeNet正向加速网络提取图像特征。
2 K-medoids算法
机器学习算法分为监督学习和无监督学习两大类别。监督学习是对带有标签信息的数据进行学习从而得到数据的类别数;无监督学习是对无标签数据进行学习从而得到数据的聚类簇。
K-medoids算法是无监督学习算法中的经典算法,由于在处理聚类问题时表现出优越的性能,因此被广泛应用于人群检测领域。K-medoids算法的核心思想:首先,选取K个数据点;然后,计算每个数据点X=(x1,x2,…,xk)与K的距离,将与K距离最近的点划分为同一聚类簇,同时更新K个数据点;最后,聚类函数收敛,得到总体数据的聚类簇个数[16]C=(c1,c2,…,ck)。聚类函数定义为[17]:
(4)
式中:οi为K个数据点的中心;d(xi,oi)是数据点与中心的距离。
(5)
οi的更新准则定义为[17]:
(6)
Dmin的值表示聚类簇内各数据点接近中心的程度,Dmin的值越小,表明各数据点与中心的接近程度越高,各数据点间的相似度也就越高。本文采用K-medoids算法对运动特征描述符和视频帧图像特征进行聚类。
3 深度网络人群运动聚类
公共场所人流量较大,人群密集度较高,通常混合了不同运动状态的人群目标,例如:移动方向、速度、轨迹等不同运动状态,同时还混合了其他非人群目标,例如:汽车、树木等目标。本文的研究重点是对不同运动状态的人群进行聚类,即检测不同运动状态的人群。
人群遮挡和光照等因素使人群区域内出现大量倒影,由于人群运动过程中倒影也随之运动,因此产生大量异常点数据,其次K-medoids的初始聚类中心是随机选取的,因此在聚类时易出现局部最优值[17]。上述因素直接影响聚类效果。鉴于此,本文融合SqueezeNet正向加速网络与K-medoids算法提出一种深度聚类人群运动行为检测算法。
3.1 运动区域划分
运动轨迹和运动速度是人群运动的重要特征,本文通过人群运动轨迹的位置信息和运动速度,定义一个运动特征描述符:
An×4=[Vn×2,Pn×2]
(7)
式中:n为轨迹点数,V是n×2维的速度矩阵,P是n×2维的轨迹矩阵。引入运动特征描述符之后,采用K-medoids算法将人群场景划分为四个不同的运动区域,被划分在同一区域内的人群个体的运动状态是相同的,即运动速度和方向相同。具体划分过程为:(1) 采用K-medoids算法对运动特征描述符An×4进行聚类得到聚类指数U1=(u1,1,u1,2,…,u1,n),u1,i∈[1,4];(2) 将μ(u1,i,Vn)→M,M表示图像。划分结果如图4所示。
图4 人群运动区域
图4所示为人群场景运动区域划分结果,不同颜色(图中用灰度描述)所覆盖的区域表示不同的运动区域,属于同一运动区域的人群运动状态相同。
3.2 深度人群聚类
本文将SqueezeNet正向加速网络与K-medoids算法融合,提出一种深度聚类算法用于人群聚类。人群场景图像能够直观地反映人群的运动状况,深度学习算法可完整地表达图像特征信息,因此本文将SqueezeNet正向加速网络用于图像特征提取,采用K-medoids算法对特征进行聚类。
首先采用SqueezeNet正向加速网络提取视频帧图像特征得到一个1×1 000维的特征向量。然后采用K-medoids算法对所提取的特征向量进行聚类得到聚类指数U2=(u2,1,u2,2,…,u2,1 000),u2,i∈[1,4],场景中的人群较为密集,在光照等因素影响下,人群之间会产生许多噪声,即U1和U2中存在异常特征点,这些异常特征点直接影响聚类结果,因此本文定义一个约束条件如下:
(8)
(9)
由式(8)和式(9)得到去除异常点之后的人群聚类指数U′1=(u′1,1,u′1,2,…,u′1,n),最后将μ(u′1,i ,Vn )→M,从而实现人群聚类。
3.3 算法流程
本文将K-medoids算法与SqueezeNet正向加速网络融合,提出一种深度聚类算法,算法流程如算法1所示。
算法1本文算法
输入视频帧图像,人群运动轨迹
SqueezeNet提取图像特征:f=1×1 000
计算运动特征描述符:An×4=[Vn×2,Pn×2]
计算聚类指数:
K-medoids对f聚类得U1=(u1,1,u1,2,…,u1,n)
K-medoids对An×4聚类得U2=(u2,1,u2,2,…,u2,1 000)
去除异常点:
If |U1|≤|U2|&|u1,i|≤|u2,i|
thenU′1=U1
ElseU′1=0
End if
Ifu1,i>u2,i
u′1,i=u′1,i-1
Elseu1,i=0
End if
输出U′1=(u′1,1,u′1,2,…,u′1,n)
映射至图像:μ(u′1,i ,Vn )→M
4 实 验
针对本文提出的基于深度聚类的人群运动行为检测算法,通过在各种国际公开数据集上进行实验,结果表明本文算法能够准确检测场景中的不同人群,与其他人群运动行为检测算法相比,本文算法具有更高的异常点去除率(Abnormal Point Removal Rate,APR)和纯度值(PU)。
本文所有验证实验平台为Windows 7 64位系统,CPU2.5 GHz,RAM 4.0 GB,MATLAB R2017b。本文选取了CCD(CUHK Crowd Dataset)[18]、CMD(Collective Motion Database)[19]、MPT(MPT-20×100)[20]三个公开数据集进行实验,并将本文提出的算法与MCC(Measuring Crowd Collectiveness)[19]、CF(Coherent Filtering)[21]两种主流人群运动行为检测算法进行实验对比。为客观评价提出算法的性能,选择人群聚类的PU值和APR值作为综合评价指标。
4.1 人群聚类评价
图5所示为本文算法与其他人群聚类算法在三个国际公开数据集上的人群聚类结果,其中相同颜色(图中用灰度描述)点所覆盖的区域表示属于同一类的人群。图6所示为本文算法去除人群场景中异常点的结果,图中“+”符号表示被去除的异常点。实验结果表明,本文算法能够对场景中的不同人群进行有效聚类,并且能够有效去除人群场景中由于遮挡和光照影响所产生的异常点数据,证明了本文算法在人群聚类和异常点去除问题上的优越性能。
图5 各种算法的聚类结果
图6 异常点去除
为了进一步验证本文算法的优越性,表1统计出了本文算法与其他算法在三个不同数据集上去除的异常点数和APR值。在CMD数据集上,本文算法去除的异常点数比CF算法多170个点,比MCC算法多48个点;本文算法的APR值比CF算法高0.05,比MCC算法高0.08。在CCD和MPT数据集上,本文算法去除的异常点数和APR值均明显优于其他人群聚类算法。
表1 不同聚类算法去除异常点数和APR值
4.2 与其他算法比较结果
为更加客观地证明本文提出算法的优越性能,本文在CCD数据集上进行实验,并比较本文提出算法与其他人群聚类算法的PU值。表2统计了本文算法与其他人群聚类算法在CCD数据集上的PU值,可以看出,本文算法的PU值比MCC算法高0.079,比CF算法高0.066,进一步证明了其优越性。
表2 不同聚类算法的各项指标值
为更加综合地证明本文算法的有效性,本文对各种人群聚类算法的聚类数进行对比。图7统计了本文算法与其他人群聚类算法的聚类数,本文算法所得聚类数与Groundtruth一致,CF算法比Groundtruth多2类,MCC算法比Groundtruth多10类,进一步证明了本文算法的优越聚类性能。
图7 各算法聚类数
5 结 语
为解决现有算法不能有效去除异常点的问题,本文提出一种基于深度聚类的人群运动行为检测算法。将SqueezeNet正向加速网络与K-medoids算法融合去除人群异常点,通过在各种国际公开数据集进行实验对比,本文算法在准确率与目前主流算法相同的情况下,得到了更高的异常点去除率和更高的聚类纯度,实验结果证明了本文算法的有效性。未来将继续探索SqueezeNet正向加速网络的优化以及与其他聚类算法的结合,进一步提高人群检测算法的准确率和其他各项性能。