发明内容
本发明的目的之一是提供一种人群流分割方法,该方法将人群流作为特殊的流体,采用脉线和倾向流作为人群流的底层特征作为聚类基础,实现人群流的分割,提高了人群流分割的精确度。
为实现上述发明目的,本发明的人群流分割采用下述技术方案予以实现:
一种人群流分割方法,所述方法包括下述步骤:
a1、获取视频流,采用Lucas-Kanade算法获得所述视频流中每一视频帧内运动粒子的二维速度场;
a2、根据所述二维速度场及流体力学中的脉线计算方法获得所述视频帧中的所有脉线及每条脉线的倾向流,将所述脉线及所述倾向流作为所述视频帧中人群流的底层特征;
a3、采用聚类算法对所述脉线及所述倾向流进行聚类,形成若干子人群流,实现人群流的分割。
如上所述的人群流分割方法,为进一步提高分割速度,所述步骤a3包括下述子步骤:
a31、按照下述算法计算所有相邻的
、
两条脉线
和
的相似度:
,
其中,
为脉线
的起始点与经过该起始点的第
个运动粒子所形成的向量,
为脉线
的起始点与经过该起始点的第
个运动粒子所形成的向量,
为
和
的夹角;
是脉线
在第
个运动粒子处的倾向流角度,
是脉线
在第
个运动粒子处的倾向流角度,
,
为脉线中的运动粒子数;
a32、计算上述步骤获得的脉线相似度
和倾向流相似度
加权求和值
,作为相邻两条脉线
和
的总相似度,
和
为权值,
是第
条脉线所有相邻脉线的集合;
a33、根据所述总相似度进行聚类,相似度大于设定阈值的脉线聚为一类,形成若干子人群流,实现人群流的分割。
如上所述的人群流分割方法,所述聚类算法优选为分水岭分割算法。
本发明的目的之二是提供一种人群流异常行为识别方法,该方法基于上述人群流分割方法,对分割后的子人群流提取特征向量,利用SVM分类器进行异常行为识别,提高了识别准确性。
为实现上述技术目的,本发明的人群流异常行为识别采用下述技术方案予以实现:
一种人群流异常行为识别方法,所述方法包括下述步骤:
b1、获取待识别的视频流,根据上述权利要求1至4中任一项所述的人群流分割方法对所述视频流中的每一视频帧内的人群流进行分割,获得若干子人群流;
b2、针对每个子人群流,根据Helmholtz分解算法计算其所含的每条脉线的势函数中的速度势及流函数;
b3、对所述速度势和所述流函数分别进行奇异值分解,获得两个奇异值特征向量,将所述两个奇异值特征向量合并为一个向量,作为相对应的子人群流在当前帧中的势函数特征向量,该子人群流在所述视频流所有视频帧中的势函数特征向量构成识别样本特征向量;
b4、采用训练好的人群流异常行为分类器识别所述识别样本特征向量,实现子人群流异常行为的识别,进而实现人群流异常行为的识别。
如上所述的人群流异常行为识别方法,为简化识别过程,先对所述步骤b3获得的识别样本特征向量降维,再执行所述步骤b4,采用训练好的人群流异常行为分类器识别降维后的识别样本特征向量。
如上所述的人群流异常行为识别方法,所述人群流异常行为分类器采用下述步骤训练:
c1、获取正常行为若干视频流和包含异常行为的若干视频流,分别作为正样本集和负样本集;
c2、根据流体力学中的脉线计算方法计算所述正样本集中每个正样本所包含的每一视频帧及所述负样本集中每个负样本所包含的每一视频帧的脉线;
c3、根据Helmholtz分解算法计算每条脉线的势函数中的速度势及流函数;
c4、对所述速度势和所述流函数分别进行奇异值分解,获得两个奇异值特征向量,将所述两个奇异值特征向量合并为一个向量,作为当前帧中的势函数特征向量,每个正样本或负样本所有视频帧中的势函数特征向量构成训练样本特征向量;
c5、多个所述训练样本特征向量及其对应的正常行为或异常行为构成训练样本特征向量集,训练分类器参数,生成人群流异常行为SVM分类器。
如上的人群流异常行为识别方法,先对所述步骤c4获得的训练样本特征向量降维,再执行所述步骤c5,将降维后的训练样本特征向量及其对应的正常行为或异常行为构成训练样本特征向量集,训练分类器参数,获得人群流异常行为分类器。
优选的,所述人群流异常行为分类器为SVM分类器。
与现有技术相比,本发明的优点和积极效果是:
1、在进行人群流分割时,将人群流作为特殊的流体,采用人群流的脉线和倾向流作为人群流的底层特征,采用聚类算法对脉线及倾向流进行聚类来实现人群流的分割,分割准确性高,分割速度快,能够适应各种复杂监控视频的分割需求。
2、将脉线和倾向流作为底层特征,计算脉线及倾向流在时空邻域内的相似度,利用两者相似度的加权求和值作为总相似度进行聚类,使得不同人群的特征更浓缩、更明显,进一步提高了人群流分割的准确性。
3、对于每个分割出的子人群流,通过计算其速度势和流函数,并进行奇异值提取后构成子人群流的特征向量,利用SVM分类器进行异常行为识别,不仅可以准确、快速识别出视频帧中是否存在异常行为,还可以实现对异常行为在视频监控范围内的局部定位和跟踪。
结合附图阅读本发明的具体实施方式后,本发明的其他特点和优点将变得更加清楚。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步详细的说明。
首先,简要介绍本发明的设计思路:为了对低分辨率视频监控环境中的人群流进行有效、准确地分割,可以将人群流作为一种特殊的流体,利用流体的处理方法对人群流进行分割。而且,在进行人群流分割时,考虑将人群流的脉线及其倾向流作为表征人群流的底层特征,可以获得明显、浓缩的人群特征,有利于对人群流的分割。在完成人群流分割之后,可以通过对每个子人群流进行识别来判断人群流是否发生异常行为,并能对特定子人群流进行定位和跟踪,提高了异常行为识别的速度和精确度。
请参考图1,该图所示为本发明人群流分割第一个实施例的流程图。
如图1所示,该实施例分割人群流的具体步骤如下:
步骤11:流程开始。
步骤12:获取视频流,采用Lucas-Kanade算法获得视频流中每一视频帧内运动粒子的二维速度场。
获取需要处理的视频流,对视频流采用Lucas-Kanade算法(金字塔光流算法)计算光流,并根据光流计算出每一视频帧内运动粒子的二维速度场(即运动光流场)。该计算过程为现有技术,在此不作详述。
步骤13:计算视频帧中的所有脉线及每条脉线的倾向流,将脉线及倾向流作为视频帧中人群流的底层特征。
获得运动粒子的二维速度场就得到了运动粒子的位置和速度,这些运动粒子构成脉线的基本组成单元,即延伸粒子。一定时间内流经同一像素空间位置的所有运动粒子的连线构成了以该像素空间位置为起始点的一条脉线,所以,利用这些运动粒子即可计算出视频帧中的所有脉线。
脉线的具体计算过程如下:
假设点
为运动粒子(
,
)在时间
、初始位置在
点、在第
视频帧中的位置。在
点重复的初始化就意味着:
粒子平移可以通过下述公式完成:
其中,是从光流中得到的速度场。
运动粒子的定义如下:
而脉线则是一定时间
内流经同一空间点的所有扩展粒子的集合,即
。其中,
,
为
内视频帧的数量。为了捕捉场景内容和群体动态在一个长的范围内变化,
不能太短,但太长也会使脉线失真,该实施例优选取
为20视频帧的时间间隔,也即
。
倾向流是脉线中每个粒子
的速度场在时间上的积分,定义为
,其中,
,
,其中
,
是两帧之间的时间间隔,即
是该脉线时间段
中的第
视频帧中粒子的时间点。
倾向流封装的信息近似为观察窗口
内的光流速度的均值信息,由于
时间较短,它也反映了这群粒子的局部信息,为分割提供基础数据。
获得脉线及脉线的倾向流之后,将其作为视频帧中人群流的底层特征。由于脉线表征了群体运动在时间和空间上的变化,而倾向流更清晰地表征了群体运动在时间上的变化,所以,脉线和倾向流反映了不同人群流的特性,可以作为人群流聚类分割的基础数据。
步骤14:采用聚类算法对脉线及倾向流进行聚类,形成若干子人群流,从而实现对人群流的分割。
获得表征不同人群流特性的脉线和倾向流之后,采用聚类算法进行聚类,可以将具有相同脉线及倾向流的人群聚为一类,形成一个子人群流,不同脉线及倾向流的组合即可获得若干子人群流,进而实现对视频范围内以运动行为为分割依据的人群流分割。聚类时,可以采用现有技术中常用的聚类方法,在此不作繁述。
步骤15:分割流程结束。
直接采用脉线及倾向流虽然能够实现人群流的分割,但是,聚类过程比较复杂,计算量大,聚类速度慢。为克服这些缺点,可以采用图2实施例的方法来执行。
请参考图2,该图示出了本发明人群流分割第二个实施例的流程图。
如图2所示,该实施例分割人群流的具体步骤如下:
步骤21:流程开始。
步骤22:获取视频流,采用Lucas-Kanade算法获得视频流中每一视频帧内运动粒子的二维速度场。
步骤23:计算视频帧中的所有脉线及每条脉线的倾向流,将脉线及倾向流作为视频帧中人群流的底层特征。
上述步骤22及步骤23的具体处理过程与图1实施例相同,可参考上面对图1实施例的描述。
步骤24:计算所有相邻的两条脉线的相似度及其倾向流的相似度。
为简化聚类过程,该实施例采用脉线的相似度将相似的脉线进行聚类。在步骤23获得脉线及倾向流之后,计算所有相邻的两条脉线的相似度以及两条脉线所对应的倾向流的相似度。具体过程如下:
参考图3和图4的脉线相似度计算示意图所示意,设
和
是相邻的第
条和第
条脉线,每个附图中的圆圈代表运动粒子,长方形代表起始点,这些运动粒子的连线构成了该起始点处的脉线。以图3的脉线
为例,起始点为
,在一定时间内经过起始点的运动粒子分别为
,…,
,
,
,
(与起始点
重合)。而如图4所示,脉线
的起始点为
,在一定时间内经过该起始点的运动粒子分别为
,…,
,
,
,
(与起始点
重合)。
每个经过起始点的运动粒子都会与起始点形成一个向量,两条相邻脉线
和
的相似度定义为
,该相似度是通过计算两条脉线中处于同一视频帧中的运动粒子与起始点形成的向量投影再求和得到。计算公式如下:
式中,
为脉线
的起始点
与经过该起始点的第
个运动粒子所形成的向量,
为脉线
的起始点
与经过该起始点的第
个运动粒子所形成的向量,
,
为脉线中的运动粒子数,
为
和
的夹角。
脉线
的倾向流和脉线
的倾向流的相似度定义为
,该相似度用角度来表示,计算公式为:
。
上式中,
是脉线
在第
个运动粒子处的倾向流角度,
是脉线
在第
个运动粒子处的倾向流角度。
步骤25:将步骤24所获得的脉线相似度
和倾向流相似度
加权求和:
,将该加权求和值作为相邻两条脉线
和
的总相似度,
和
为权值,为预先设定的值。在该实施例中,
取值为0.8,
取值为0.2。
在该实施例中,相邻两条脉线的含义为:脉线
的相邻脉线是指以该脉线
的起始点
为中心的8个邻域位置为起始点所形成的8条脉线。应该理解,这里的8条脉线可能是实际各不相同的8条脉线;也可能会存在相互重合的脉线;也可能是少于8条脉线,也即起始点
的个别邻域位置未构成脉线。
步骤26:根据总相似度进行聚类,将相似度大于设定阈值的脉线聚为一类,构成一个子人群流,最终形成若干子人群流,实现人群流的分割。
聚类时可以采用现有技术中的聚类算法,该实施例优选采用分水岭分割算法来聚类。采用分水岭分割算法进行聚类的过程为现有技术,在此不作复述。
步骤27:流程结束。
对视频监控范围内的人群流根据运动特征划分为若干个子人群流之后,可以对特定子人群流进行定位、跟踪、监控异常行为等。
请参考图5,该图示出了本发明人群流异常行为识别方法一个实施例的流程图。该实施例在对人群流异常行为识别时,基于图1或图2人群流分割的实施例,也即是对应用图1或图2方法进行分割后的子人群流进行异常行为识别。
如图5所示,该实施例对人群流异常行为进行识别的过程如下:
步骤51:流程开始。
步骤52:获取待识别的视频流,对视频流中的每一视频帧进行人群流分割,获得若干子人群流。
对于待识别的视频流,确切来说是一段视频流分解为长度一般为2-3秒(约为80帧)的子视频段,将子视频段作为待识别的视频流识别单元分别识别,目的是确定其在哪个具体时间点上出现群体异常行为。而且,为了防止漏检,前后两个子段视频可以有30帧的重叠。
该步骤的具体实现过程可参考图1或图2及上述相应附图的描述。
步骤53:针对每个子人群流,根据Helmholtz分解算法计算其所含的每条脉线的势函数中的速度势及流函数。
由于对人群流进行分割的依据是人群流的脉线,所以,每个子人群流分割后,其所含有的脉线也是已知的。
与倾向流类似,势函数也是脉线的一个属性,是表征群体运动在空间上变化的一个特征描述。势函数及其速度势和流函数的计算过程如下:
根据Helmholtz分解理论(霍尔姆兹分解理论),势函数
可以分解为不可压缩部分
和不可旋转部分
,即
。其中,
,
。
对
、
、
及
分别沿着该脉线做空间积分,可以获得该势函数的速度势
和流函数
:
上式中,
和
分别为速度势和流函数的初始值,在该实施例中,初始值均定为零。
步骤54:对上述速度势和流函数分别进行奇异值分解,获得两个奇异值特征向量。然后,将分解后的两个奇异值特征向量合并为一个向量,作为相对应的子人群流在当前视频帧中的势函数特征向量,该子人群流在当前视频流所有视频帧中的势函数特征向量构成识别样本特征向量。
由于奇异值代表了运动视频中的主要特征,该实施例用速度势和流函数的奇异值分解提取了群体运动的主要运动特征,忽略微小的运动变化,可以大大简化群体运动的计算和分析。
步骤55:采用SVM分类器对识别样本特征向量进行识别,实现子人群流异常行为的识别,进而实现对视频帧人群流异常行为的识别。
SVM分类器是预先已经训练好的一个分类器,具体训练过程可以参考图6所示及下面对图6的描述。在对识别样本特征向量进行识别之前,为简化识别过程,可以采用降维方法、如PCA算法(主成分分析算法)先对识别样本特征向量进行降维,将至与SVM分类器所要求的维数相同,然后再输入至SVM分类器中进行识别。
识别出每个子人群流是否有异常行为,在存在有异常行为的子人群流时,则整个视频帧中的人群流存在异常行为。而且,由于是针对每个子人群流进行了识别,因此,可以准确地获知发生异常行为的子人群流位置,便于进行定位和跟踪。
步骤56:流程结束。
为方便监控者及时获知异常行为的发生,可以在识别出异常行为之后,还可以通过声光报警等方式通知监控者。
在该实施例中,SVM分类器是预先根据训练样本已经训练好的一个分类器。图6示出了获得这样一个SVM分类器的流程图。
如图6所示,训练SVM分类器的具体过程如下:
步骤61:流程开始。
步骤62:获取正样本集和负样本集。
正样本集是指正常异常行为、也即不包含异常行为的若干视频流的集合,负样本集是指包含异常行为的若干视频流的集合。
步骤63:计算正样本集中每个正样本所包含的每一视频帧及负样本集中每个负样本所包含的每一视频帧的脉线,并根据Helmholtz分解算法计算每条脉线的势函数中的速度势及流函数。
正样本集中的每个样本作为正样本,负样本集中的每个样本作为负样本,将每个正样本和每个负样本看作一个整体,计算其脉线,并根据脉线计算势函数及势函数中的速度势和流函数。具体计算过程参考上述对图1及图5的描述。
步骤64:对速度势和流函数分别进行奇异值分解,获得两个奇异值特征向量,将两个奇异值特征向量合并为一个向量,作为当前帧中的势函数特征向量,每个正样本或负样本所有视频帧中的势函数特征向量构成训练样本特征向量。
例如,可以将速度势和流函数分别分解为80维的奇异值特征向量来近似一帧视频帧,则该视频帧的势函数特征向量是80维的速度势奇异值特征向量级联80维的流函数奇异值特征向量,即获得一个160维的特征向量。样本内所有视频帧的势函数特征向量构成一个训练样本特征向量作为该样本的描述符。
步骤65:利用训练样本特征向量集训练SVM,获得人群流异常行为SVM分类器。
每个样本具有一个训练样本特征向量,所有样本的训练样本特征向量及该样本多表示的正常行为或异常行为构成训练样本特征向量集。用训练样本特征向量集训练SVM参数,从而获得人群流异常行为SVM分类器。SVM训练过程为现有技术,在此不作详细阐述。
在训练SVM时,由于步骤64中所获得的训练样本特征向量维数较高,不利于训练速度的提升,因此,优选先将训练样本特征向量进行降维,获得精简描述符。例如,对于上述160维的训练样本特征向量,采用PCA将至100维。然后,利用降维后的训练样本特征向量所构成的特征向量集来训练SVM。
图5和图6实施例采用SVM分类器作为识别用分类器,但不局限于此,也可以采用现有技术中的其他分类器,各分类器的训练和识别过程也是现有技术,在此不作具体阐述。
以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管参照前述实施例对本发明进行了详细的说明,对于本领域的普通技术人员来说,依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明所要求保护的技术方案的精神和范围。