于俊俊,朱立军
(沈阳化工大学 计算机科学与技术学院,辽宁 沈阳 110142)
电梯轿厢的运行环境封闭,是抢劫、施暴等异常行为的事故高发地。目前小区、写字楼等高层建筑的电梯大多采用人工方式进行视频监控。这种传统方式存在众多弊端,如发生异常时不能及时通知、错报漏报多、事后录像取证困难等,并且实时性相对较差。
目前,针对人体异常行为检测的研究方法主要分为2种,分别是采用传统方法提取特征和利用深度学习神经网络提取特征。传统方法通过光流法、运动历史图(MHI)、方向梯度直方图(HOG)等提取人体行为特征,如文献[1]通过运动历史图提取特征,根据运动历史图的图片熵来建立能量函数并设置相应阈值进行异常检测。文献[2]建立了角点动能模型,利用金字塔LK光流法对运动前景的角点进行光流计算,通过统计图像中的平均动能,实现对打斗情形的检测。使用深度学习进行异常行为检测方法:齐琦等对多通道3DCNN的结构进行了改进,从而对人体行为进行识别。张怡佳等人提出一种改进的双流卷积神经网络模型,训练得到一个多模型融合的人体行为识别器。CNN的训练必须以充足丰富的训练样本数据为基础,计算量较大且训练样本不足会导致检测准确率下降,难以实现实时准确的异常检测。
本文针对电梯轿厢环境的特殊性,经过综合考虑电梯内乘客异常检测的准确率和实时性,提出了一种基于金字塔LK光流法的实时检测异常行为的方法。针对检测到前景人体角点的噪声问题,利用速度大小筛除背景光流噪声点,通过计算光流点的平均速度和方向熵的乘积表示运动的混乱度,最后设置阈值来检测异常行为。
光流的概念最早由Gibson提出,它携带了运动目标的方向和幅值等信息。光流法不需要提前对图像背景进行建模,计算结果不易受外部环境的影响,只取决于连续帧的相对运动,因此很适合运用于异常行为的检测。光流通常有稠密和稀疏之分,可以很好地反映运动目标的时空信息特征。稠密光流需要对图像中所有像素点进行逐点匹配,通过计算图像上特征点的偏移量,形成一个稠密的光流场。其典型代表是Horn-Schunck光流法,这种方法计算量比较大,实时性不高,用在视频监控系统中很难取得理想效果。
Lucas-Kanade(LK)光流法是计算稀疏光流的一种经典方法,它计算的前提条件是假定×邻域范围内的所有像素点都具有一致的运动,利用最小二乘法对该邻域的光流值进行计算。角点包含丰富的信息,是图像中梯度纵向和横向变化最明显的点。与密集光流法相比,LK光流法的计算量较小,仅需计算角点邻域范围内的光流。因此采用稀疏光流法进行运动目标的检测。
LK算法前提条件如下:
(1)亮度一致;
(2)前后帧像素点移动的偏差不能过大;
(3)某一像素点与其周围像素点移动的模式相同。
像素点的运动如图1所示。假设像素点的亮度值在连续两帧图像中保持不变,即像素点从时刻的(,)位置,运动到+Δ时刻的(+Δ,+Δ)位置,亮度保持不变。则有:
图1 像素点的运动
将式(1)进行一阶泰勒级数展开,忽略高阶项,得到光流约束公式:
单个像素点通过上式无法解出2个未知数,可以利用×个像素点建立多个方程:
通过求解上述方程可得:
实际应用中,像素点的运动不一定满足假定小且连贯的特点,比如电梯内发生的打架、抢劫等动作幅度大、运动速度较快的异常行为。使用金字塔LK光流法能够有效弥补LK光流法在这方面的不足。本文构建的图像金字塔结构如图2所示。金字塔的最底层即原始图像的层数为0,将原始图像不断缩小,降低图像分辨率,待最顶层图像的分辨率降低到一定程度后,像素点移动变得足够小,以满足LK光流法动作较小的前提条件。从金字塔的最顶层开始估计光流,然后沿着金字塔结构逐层迭代计算,不断修正起初假设的位移,从而得到原始图像的光流运动估计。本文使用的金字塔为3层,既能实时有效的计算光流矢量,又不会增加计算量。
图2 图像金字塔
利用改进的金字塔LK光流法进行光流检测的总体流程如图3所示。
图3 改进的金字塔LK光流检测过程
电梯轿厢空间有限,通过分析乘客乘坐电梯的心理,可以发现正常情况下,乘客走进电梯轿厢后先按下自己想去的楼层键,然后几乎一动不动地站着等待电梯到达目的楼层。如果乘客相互之间不熟悉不会进行太多肢体接触,只会进行一些动作幅度较小的动作,比如低头玩手机、谈话交流等。然而,电梯内突然发生异常行为的情况总是不可避免,且这些行为的动作幅度大、速度较快、方向混乱,不具有规律。本文将电梯内发生的打斗和抢劫等运动速度快、运动方向混乱的行为定义为异常行为。
光流矢量蕴含丰富的特征,其方向可以反映人体或物体运动的方向,其长短可以反映人体或物体运动速度的快慢,其强度可以反映图像中运动目标的分布情况。将这些特征结合可以有效判断运动目标运动时的形态变化特征和运动变化规律。
通过金字塔LK光流法求得每个光流点的速度矢量(,),据此可以求得每个光流点(,)的运动速度:
光流点的运动方向:
运用光流法进行运动目标检测前,首先要去除噪声、背景等多余信息的干扰,以达到尽可能保留对视频分析有意义的特征信息。实验过程中会有背景光流点的噪声干扰,对实验的准确率产生影响。因此,运用光流法提取运动特征,去除背景噪声角点非常必要。通过实验分析发现,运动背景中的角点光流速度小于运动前景人体角点的速度,为了去除背景噪声光流点,设置速度约束条件,保留满足>条件的光流点。为筛选光流点的阈值,经多次实验后取值为30。
均值是统计学术语,在数学上的含义与平均数类似。每帧图像的光流速度均值为:
式中,为当前帧所有成功匹配到的角点总数。为排除正常行为检测到角点数少的影响,通过大量实验,本文取值为100。表示视频的帧数,采用平均速度来体现每一帧视频图像的速度信息。
直方图是一种以图形形式准确表示一组数值的数据分布条形图,通过图表形式非常直观地展示了统计的数据分布。方向直方图顾名思义就是对光流方向进行直方图统计,将特征点运动的方向范围划分为大小相等的个角度区间,然后将运动矢量分别归类到对应区间。本文采用光流方向直方图(HOF)的形式对特征点的运动方向信息进行描述,通过计算方向直方图的熵来衡量光流点运动方向的混乱程度。
熵的概念被用来描述一个系统的混乱度。它可以用来表示任何一种能量在空间中的分布均匀程度,能量分布得越均匀,相应的熵值就会越大。计算得到的方向熵的值越大,表明当前帧中光流点运动的方向越混乱,越有可能发生异常行为。如图4所示,将平面中360°方向空间从0°开始逆时针划分区间,分为均等的8个区间,当光流点的运动方向属于该区间时加入此方向区间的统计中。
图4 光流方向划分
在计算方向熵之前,首先计算每个区间方向的概率:
式中:区间的光流方向次数总和为d;S为方向直方图的方向次数总和,此处将S定义为100。
方向熵的计算公式如下:
运动的方向熵和平均速度是判断是否存在异常行为的重要因素,电梯轿厢内的乘客进行正常的小幅度动作时,平均速度和方向熵都很小。相反,当出现打斗和抢劫等异常行为时,方向熵和平均速度变大,乘法可以理解为量变发展到质变的结果。本文经过大量的实验研究,提出衡量运动混乱度的公式:
实验采用在真实电梯轿厢环境拍摄的行为数据集。将摄像头固定在电梯上方,正对电梯门位置。视频大小为566×424,帧率为15 FPS,正常行为包括在电梯内走动,按下目标楼层、喝水、看手机等,异常行为有电梯内有人打架、撕扯等。
为验证实验所提出方法的准确性,本文在Windows7系统,8G内存的计算机上使用实验工具VS2015 和OpenCV4.1.0,通过C++编程语言进行编程,在自制数据集中进行测试。
通过图5可以看出,发生打斗等异常行为时,光流点运动的方向比较混乱,而正常行为发生时,光流点运动方向比较一致。
图5 电梯内光流图
图6统计了正常行为和异常行为的光流方向直方图,可以看出正常行为的运动方向主要集中在0~(1/4)π,(3/4)π~π和(7/4)π~2π范围,运动方向较集中。异常行为的运动方向区间比较均匀,其熵值较大。
图6 正常行为和异常行为方向直方图
由图7可以看出,正常行为的方向熵值范围为1.5~2.5;异常行为由于光流点运动方向比较混乱,其熵值较大,数值集中在3.0以上。
图7 正常行为和异常行为方向熵曲线
通过对比图8的实验数据可以看出,正常行为的值较小,且数值大多在700以内;而异常行为由于光流点运动的速度大,方向比较杂乱,其值较大,数值集中在700以上。此处阈值设置为700,若连续2帧视频序列的值超过阈值,提示出现异常行为。
图8 电梯内正常行为和异常行为的W值曲线
将本文方法在自制数据集中进行验证,实验测试数据包含正常行为1 575帧,异常行为1 125帧。与平均速度法进行对比,其中,异常漏检率为异常行为检测为正常行为的概率,实验对比结果见表1所列。
表1 与其他方法的检测结果对比
由表1得出,与平均速度(阈值250)方法相比,本文方法准确率较高,同时误检率相对较低,能获得比较准确的实验结果,在实际运用中能满足实时准确的检测要求。
针对电梯内乘客打架、抢劫等运动幅度大、方向混乱的异常行为,提出基于金字塔LK光流法的异常行为检测方法。本文方法的优点是计算简单,行之有效,且方法的执行速度较好,可以实现实时检测。通过实验验证,本方法在效果上能够达到预期。