曾 婷,黄东军
(中南大学 计算机学院,长沙 410083)
当今社会人口数量庞大,诸如恐怖袭击、暴力抢劫、校园欺凌等各类社会矛盾时有发生,公共安全问题已经成为了国家重点关注领域。为切实提高社会治理水平,各地增加了监控摄像头的数量,扩大了监控摄像头的覆盖面积,一个巨大的视频监控网络正在形成,这就导致了视频监控数据的爆炸式增长。这必然对视频监控系统提出了新的要求,需要其从大量数据中获取有用信息并智能化地进行分析。
早期的模拟视频监控系统以及数字化视频监控系统仅仅提供了一些简单的功能模块,例如视频捕获、视频存储等[1],它难以实现异常事件的事前预警,这意味着监控视频数据只能用于事发时的记录和事发后的审计回放。对于数据的分析与查找,需要依靠人工来进行。由于人类无法24小时不间断地对视频数据进行甄别筛选,在工作中难免会出现漏看、误判的情况,既浪费了大量人力资源,也不利于在黄金时间进行案件分析与处理。
为了解决上述问题,许多研究人员转向智能监控系统的研究。国外研究起步较早,1997年,卡内基梅隆大学以及其他几个高校一起参与了(visual surveillance and monitoring,VSAM)项目的研发[2],VSAM系统主要用于战地的实时监控以及信息采集,它对视频进行自动化解析并且利用分布式监控网络对复杂环境中单人的行为进行识别与持续监控,从而有利于指挥中心对战地情况实时分析并快速做出决策。IBM与马里兰大学开发的W4[3]实现了对人物以及其行为的实时监控,能够有效地识别出个体的异常情况。2004年,针对机场的安保问题,法国国家信息与自动化研究所(INRIA,institute national de recherche en information et en automatique)与雷丁大学共同开展了机场智能监控项目AVITRACK[4],它可以进行异常行为预警。2005年,万国商业机器公司(IBM,international business machines corporation)研发了智能监控系统S3[5],通过联合硬件、软件以及服务,S3可以对监控视频序列中的关键信息进行提取并分析,从而实现了对异常事件的实时预警。
虽然起步较晚,但是国内各界对智能监控系统的研究也取得了显著的成果。2008年北京奥运会期间,我国采用了中国科学院研发的实时智能视频监控预警系统[6]来对各个场景,尤其是鸟巢区域,进行24小时人流监控和智能分析,实现对异常事件进行实时预警的作用。后续地,北京地铁13号线也应用了这个系统,对监控范围内的可疑人员进行跟踪,帮助安保人员抓获窃贼,大大提高了公共安全。香港中文大学利用集体理论估计集体动作,从而实现对视频中异常动作的检测[7]。为了加强城市的治安管理,2013年深圳市贝尔信智能系统有限公司研发了智能视频分析系统,该系统能在不同天气环境下对人员入侵、徘徊、丢包、消失等行为进行报警[8]。西北工业大学所研发的Great Wall系统可以对复杂环境中的运动目标进行检测、识别、跟踪以及行为分析等[9]。
由于异常行为与正常行为之间的界限没有统一的标准,不同场景下,正常行为与异常行为可以相互转化,例如:商场踢球属于异常行为,但操场踢球属于正常行为。目前较多关于异常行为检测的研究是基于特定场景来展开的,如银行、电梯、高速公路、旅游景区等等。检测异常行为一般来说包括3个功能模块:1)分离前景与背景,检测运动目标;2)对目标进行特征提取,表示运动行为;3)利用异常检测算法对行为进行判别。基本流程如图1所示。
图1 智能视频系统异常行为检测基本流程
本文针对性地分析异常检测算法模块,将现有的异常行为检测算法进行归类总结并对比。具体安排如下:第一节引言部分对国内外研发的智能监控系统进行简要介绍;第二节根据异常行为检测算法依据的不同分别从能量、推断、重构、推理、深度学习几个方面对相关研究成果进行梳理并对比分析;第三节分析目前异常行为检测所面临的挑战,同时针对性地提出方案;最后进行总结。
目前已经有了许多种针对异常行为检测的算法,根据划分准则的不同,可以有不同的分类方法。本文根据异常行为检测算法依据的不同,将其分为能量法、聚类法、重构法、推断法以及深度学习法,其各自的依据、可行技术方向以及特点如表1所示。以下各个小节分别详细介绍各个类别的检测算法。
表1 异常行为检测算法比较
利用能量进行异常行为检测的算法认为运动会产生相应的能量,可以在利用速度等相关运动特征计算出该运动所对应的能量后,直接通过给定的阈值来判断该运动行为是否属于异常行为。特征提取通常提取的是运动速度、运动方向、运动加速度等,可以通过获取Harris角等手段来进行,当对象是人群时,还可以提取人群密度。跟踪特征经常利用光流技术来实现,常见的有KLT特征跟踪器。通过特征跟踪可以得到用于描述运动的矢量场,从而构建合适的能量模型用于判断,基本流程如图2所示。
图2 能量法异常行为检测算法基本流程
目前使用动能作为判断依据的算法较多。文献[10]中,作者提出一种方法来估计一组感兴趣点的突然变化和异常运动变化,但它只考虑了运动特征的变化,如方向和运动幅度,而忽略了群体运动幅度的总值,并且其定义的方向直方图峰值在大多数人群场景中很难得到。文献[11]中,作者定义了基于动能的人群能量,并且通过对能量进行小波分析来实现异常行为检测,但其忽略了运动方向信息。基于文献[10]以及文献[11],文献[12]提出了一种基于光流来估计运动方向以及动能的方法,该方法认为运动变化是由两个相邻帧之间目标动能的变化导致的,作者结合人群密度定义群体动能,同时为了更好地利用运动方向信息,其利用运动方向熵定义了标准化互信息(NMI),低NMI表示两向量场相似性高,即运动方向变化小,高NMI意味着方向相似性较低。因此最终基于运动方向与运动幅值一致性观点来检测异常行为。文献[13]同样将熵的概念运用于场景理解,作者根据前景像素分布概率定义人群熵,并结合人群密度定义人群分布指数CDI,最终通过群体动能判断行为是否异常。
考虑到个体相互影响,段晶晶[14]等人通过综合考量群体运动程度、运动方向以及个体相对位置3个方面,构建了群体KOD能量特征,并结合隐马尔科夫模型进行群体异常检测。为了更好地研究运动特征,王乔等人[15]针对诸如跑步、打斗等异常行为提出了异常行为整体能量观点,他将行为发生者的个体能量以及双方的交互能量进行整合构成整体能量。
上述文献仅仅考虑物体运动时的动能来构建能量模型,而Xiong等人[16]将能量进一步划分为动能和势能,从图像势能模型中得到人群密度的估计,并且通过X轴和Y轴上所建立得前景直方图的概率分布来定义人群分布指数表示分散度,结合人群密度和人群分布基于阈值分析来进行异常检测,但该方法只能对特定行为:跑步以及聚集进行检测。
能量法异常行为检测算法对于分析人群整体的运动情况效果较好,但是由于拥挤情况下个体之间相互遮挡,所以单独分析个体的运动情况相对困难。
利用聚类进行异常行为检测的算法认为给定一个特征空间,正常行为与异常行为是可以区分的,且异常行为样本点与正常行为样本簇之间明显存在离群分界性。
图3 聚类法异常行为检测算法基本思路
Wang 等人[17]为了计算不同尺寸时空立方体之间的相似性,设计了一种由两层树构成的码本数据结构,第一层根据长度对立方体分类,第二层使用K-Means对不同类别立方体进行聚类,基于给定的阈值利用LDA(latent dirichlet allocation)模型进行异常检测,此方法需要预先知道立方体类别的个数,只适用于某一类型的数据。文献[18]从微观角度描述个体运动,并进行MeanShift聚类,从介观角度描述团体运动,最后根据聚类中心在特征空间中所属的区域进行正常或异常行为判断,该方法不要求预先知道类别个数,但其结果过分依赖于带宽的设置。
为了适应类别未知的行为,一些研究使用在线聚类的方法,例如,文献[19]对视频进行密集采样,构建STVs(spatio-temporal video volumes)并进行分组,使用机器人框架来近似区域STVs之间的组合关系并使用在线模糊聚类跟踪主导时空活动,从而检测异常行为。文献[20]中,作者对运动区域进行KLT角点提取,并通过光流法获得运动矢量,针对块内各个运动矢量利用高斯分布来计算块运动模式。然后,利用在线聚类方法对各个运动模式进行聚类,将后续未归类模式划分成正常类和异常类。由于该方法是基于角点提取与光流法相结合来进行的,它容易受到光照、相机角度、相机位置的影响。
目前也有不少利用针对轨迹进行聚类的算法,例如,胡智辉[21]利用密度峰聚类算法聚类船舶轨迹,并通过扫描线获得典型轨迹,进而计算偏差阈值,最后利用该阈值进行船舶行为是否异常的判定。另外基于半径[22]、蚁群[23]、k中心点[24]等聚类手段同样可以用于异常行为检测[25]。
利用重构进行异常行为检测的算法认为正常行为之间的关联性较强,一个正常行为通常可以构建字典来进行重构,基本框架如图4所示。
图4 重构法异常行为检测基本框架
Zhao[26]等人通过稀疏编码的视频来学习基本字典,并以在线方式对字典进行更新。在已知字典D的情况下,为每个查询事件学习重构权重向量,通过目标函数值与给定阈值的比较结果判断待测事件是否异常。
Chen等人[27]提出了一种基于增量稀疏组合学习的时空上下文感知异常事件检测方法,该方法利用后到达的视频数据,以增量方式在线更新学习模型。徐志通等人[28]通过运动轨迹构造正常行为字典,并对稀疏重构的轨迹以及幅值方向直方图熵加权处理,进而检测异常行为。
除了可以通过上述文献所使用的稀疏矩阵来进行重构,还可以利用低秩矩阵来实现。文献[29]利用低秩矩阵近似法计算出训练数据的具有代表性的运动子空间,然后计算测试数据的运动矩阵并进行代表性子空间的低阶近似,通过近似误差与用户定义的阈值来判断是否异常。Wen等人[30]提出了一种用于检测异常的自适应级联字典学习框架,该框架将异常检测视为具有级联词典的一类分类问题,级联的每个阶段构造自适应字典以使用无成本最小二乘优化解来检测异常。
重构法的关键在于构建合适的字典,字典的质量大大地影响检测的效果。
利用推断进行异常检测的算法是一种数据变化规律的理解问题,由于行为数据不断变化,此类算法需要理解其中的变化规律,从而判定行为是否异常。Gao等人[31]通过构建视频单元的运动特征向量并对其使用高斯混合模型来学习正常行为,同时计算待测行为正常水平的概率,最终利用概率值来判断行为是否异常。
目前,大多数推断型异常行为检测是基于隐马尔可夫模型来进行的。文献[32]提出了一种分层上下文隐马尔可夫模型(HC-HMM),用于护理中心视频流的行为理解,从而实现老年人日常行为异常的监测。文献[33]提出了隐马尔可夫主题模型以及主题隐马尔可夫层次模型来进行场景中的行为聚类,并基于累积的测度在线判断行为的异常性。文献[34]通过训练分布式隐马尔可夫模型来捕捉极其拥挤的场景中的稳态时间运动关系,并将这些时间信息纳入置信度度量,从而使得能够检测具有异常时间转换的运动模式。文献[35]通过描述运动行为的数据对场景建模,并利用隐马尔可夫模型生成离群值数据来模拟异常情况,从而建立运动行为模型,最后使用基于人群密度信息和运动行为的统计相似性匹配最适当的模型进行异常检测。
此外,还可以基于贝叶斯网络进行异常检测。文献[36]将视频分割成播放中断序列并从每个播放中断序列中提取若干特征,然后使用贝叶斯网络检测相关事件。
由于隐马尔科夫模型相对于贝叶斯网络更适合于时间序列数据,故其在异常行为检测上的应用更加广泛。
随着深度学习在计算机视觉领域不断发展,一些学者开始利用深度学习进行异常行为检测。文献[37]将多步的全局特征及局部特征结合用于分类并使用卷积稀疏编码的方法来预先训练每个阶段的滤波器,从而进行行人检测,其取得了比较好的检测效果。为了解决传统的卷积神经网络模型只能处理2D输入的问题,Ji等人[38]提出了3D CNN模型,其通过在卷积神经网络的卷积层进行3D卷积来捕获沿空间维度和时间维度的判别特征,进而获得相邻帧之间的运动信息。
由于上述算法是有监督地进行学习,在学习过程中需要大量的带有标签的样本数据,这无疑会导致复杂度增加,故此一些学者转向研究无监督式深度学习算法。
自编码网络是一种无监督式学习网络,它采用的是反向传播方式,其目标是学习一个函数使得目标值与输入值尽可能相等,结构如图5所示。
图5 自编码网络结构图
部分研究基于自编码网络来进行。例如,Xu 等人[39]基于去噪自编码网络进行图像重构,提取运动和外观特征,并利用多个单类SVM进行分类,最后将外观分数以及运动分数的结合视为最终异常分数,该算法能有效地检测出异常行为并进行标记,
另一种无监督式学习网络是限制波尔兹曼机[40],输入数据构成该网络的可见层的神经元,隐藏层h与可见层v之间通过权值矩阵W相连,同时,隐藏层各神经元以及可见层各神经元有其对应的偏置量bi,ai,该网络通过条件概率不断进行调参优化,寻找几乎与输入相等的隐藏层,其结构如图6所示。
图6 限制波尔兹曼机结构图
文献[41]使用条件限制波尔兹曼机来建模多种类型的人体运动。后续地,Le等人[42],Pei等人[43]设计了基于波尔兹曼机的深度学习网络用于学习时空特征,进而实现动作识别。
当然,其他的深度学习网络也可以应用于异常行为检测。Fang等人[44]将多尺度直方图光流和显着性信息结合到视频帧的时空特征中并采用PCANet来提取异常事件检测的高级特征。Mohammad等[45]首次提出将FCNN应用于异常行为检测,其将预先训练的分类CNN应用于一个FCN中,以产生同时描述运动和形状的视频区域,并提出一种新的FCN结构,用于时间有效的异常检测和定位。
基于深度学习的异常检测算法数据表达能力强,是未来智能视频监控系统中进行场景理解的可行研究方向之一。但其也存在着模型较为复杂、计算成本较高以及优化相对困难等问题,这些都是未来需要解决的。
目前用于视频异常行为检测最常用的数据集大体分为两类,一类用于个体异常行为检测,如UCSD、BEHAVE、CAVIAR、UCF-Crime、Avenue等;另一类用于群体异常行为检测,如UMN。
UCSD包括Ped1和Ped2两个部分,Ped1用于监控垂直方向人行道上的行为,共包括70个视频序列,其中34个全部为正常行为,用于训练,另外36个包含异常行为的视频序列用于测试,由于摄像机固定,人群行为的纵向变化会存在透视畸变;Ped2用于监控水平方向人行道上的行为,共包括28个视频序列,其中16个全部为正常行为,用于训练,另外12个包含异常行为的视频序列用于测试;UCSD数据集中包含的异常行为有:骑自行车、滑冰、开车、轮椅,侵入草地等等。
BEHAVE数据集是由斜向下方向视角摄像机拍摄完成,包括4个视频短片,共11个视频序列内容为多人交互行为,包括:打斗、并行、并跑、追逐、靠近、远离等。
CAVIAR数据集包括INRIA Labs入口以及里斯本购物商场走廊两个场景下的监控视频,分辨率为384×288像素,每秒25帧,其中包含的行为有:步行、闲逛徘徊、昏倒、丢包、并行、分离、打架、进出商场等。
UCF-Crime数据集包含1 900个监控视频,总计时长有128个小时,其对于异常行为进行了详细的分类,如纵火、攻击、抢劫、虐待、爆炸、枪击、虐待等,共有13种,故部分研究人员使用该数据集进行行为识别。
Avenue数据集包含37个视频片段,共有30 562帧,其中16个用于训练,其中包含的行为皆为正常行为,另外21个用于测试,包含了奔跑,投掷、方向错误以及异常物体等异常样本。但该数据集存在相机抖动、正常模式较少等挑战。
UMN数据集由草地、广场、室内走廊3个场景下的监控视频组成,共包含11个视频片段,每个视频前面部分为正常行为,后面部分为人群同向奔跑或人群逃散等异常行为,视频对异常帧进行帧级标注,由于该数据集人群密度较大,遮挡相对严重,故其多用于群体异常行为检测。
上述公开数据集对比见表2。
表2 异常行为检测常用数据集对比
由表2可以看出,目前用于群体异常事件的数据集较少,更多的公开数据集是用于低密度人群或单人行为的检测与识别。
国内外对于智能监控系统中异常行为检测算法的研究已经有很多年,学者们不断地设计出更优化的算法,但是仍然面临着如下挑战。
1)目标遮挡问题亟待解决:
对场景中的目标进行异常行为检测时经常会出现遮挡问题,这是计算机视觉领域场景理解的一大难题。遮挡问题分为两类,一类是非目标物体遮挡目标物体,例如石头,花草、电线杆等障碍物;另一类是人群密度较大时目标物体之间的相互遮挡,例如广场、车站、电梯厢等地方。任何一类遮挡问题都将导致运动目标的行为不能被准确地观察并理解,尤其是密集人群中的个体运动。
2)异常检测模型尚不具有普适性:
由于人群场景中可能存在成千上万种行为,几乎不可能对每一种行为都进行定义,尤其是那些缺乏异常的视频数据使得这一问题更加明显,所以只能将各种行为大致划分为正常群组以及异常群组。但是异常行为与正常行为之间的界限没有统一的标准,不同场景下,同一行为可能被认为是异常行为,也有可能被认为是正常行为,故而研究出具有普适性的异常行为检测模型是必要的。
3)如何去除场景多样性带来的干扰:
天气、光照等因素是产生场景多样性的重要原因,同样不同位置、不同角度的摄像头也会导致场景多样化,从而产生干扰。如何去除场景多样性带来的噪声是提高异常行为检测准确率的基础与重要环节。
根据现有算法以及所面临的挑战,我们认为:
针对场景多样性问题,可以利用深度学习模型强大的学习能力尽可能的将多个场景中的数据一并输入并进行训练,构建一个能适应多场景的学习模型。
针对密集人群中目标遮挡问题,由于场景结构力模型可以用于分析密集人群中的局部运动,从整体运动情况间接地推断个体运动情况,而社会力模型可以分析群体中的个体情况,我们可以基于这两种模型进行设计,稀疏场景采用社会力模型,稠密场景采用结构力模型。
针对检测模型不具有普适性问题,我们可以建立场景模型库,根据当前场景主体事件在线推断适用于当前场景的模型再进行后续处理。
智能监控系统可以应用在众多领域,尤其是安防领域对一些重要场合,如:银行、车站、电梯、机场等,进行异常行为检测与跟踪,从而智能化的进行预警等操作。本文综述了智能视频监控系统异常行为检测的研究发展现状,对比不同检测算法并根据现有文献总结了其可采用的技术分支,同时也分析了目前异常行为检测研究中所面临的挑战,对于未来算法的设计,提供了思路。我相信随着异常行为检测技术的不断发展,未来智能视频监控系统将会实现鲁棒性更好的算法在多个不同场景中的应用。