具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细描述:
本发明是通过获取视频的单帧信息以及帧间的运动信息来进行敏感的识别。单帧信息提供的是图像特征,运动信息提供的是运动特征。通过对基于变分混合高斯的肤色流形分类器对图像进行色彩分割,求出皮肤的暴露程度。通过连续图像序列获取光流方向直方图找出视频中运动对象的运动特征。在图像特征和运动特征的基础上对整个视频的敏感性做一个综合评价。
光流直方图求取运动特征:
光流的产生主要来自于摄影机与环境物体之间的相对运动,使得所获得的连续图像的图像强度(Image intensity)产生时间空间上的变化,因此其纯粹从连续图像中,计算图像强度样型(Brightness pattern)在时间空间上二维的可视速度(Apparent velocity)。在光流的定义中并没有描述到与三维场景的关系。所以当图像的光流不为零时,视场中事实上不见得有物体的运动产生。产生这种情形的原因很多,最简单的原因就是场景中光源照度的改变。例如对一个静止的场景取像,但是照射于场景中的光源却是会移动的,则在定义上,既然场景是静止的,场景投射在图像上的图像流会等于零。然而因为光源是移动的,所以在图像中的图像强度是会变动的,使得计算得到的光流不为零。同样地,也会产生有光流等于零,而图像流不等于零的情形。例如,一个表面光滑均匀的球体,由于其表面特性,当球体开始转动而且环境照度均匀,则撷取到的连续影像其图像强度并不会变化,因此计算所得的光流等于零,而实际上图像的图像流却是不为零的。
因此,如果要解析三维场景的结构与运动真正所需要的是图像流场。然而古典的作法却是撷取一连串场景的图像强度变化,从连续图像估测出光流场,然后在环境照度均匀,物体表面为平面等假设条件下,让光流场等效于图像流场,并且用以分析三维场景的架构与物体的运动。
所述的光流方向直方图并与光流直方图分类器比较是通过以下步骤实现的:
光流的约束方程
考虑图象的象素m=(x,y)T,时刻t的灰度值I(x,y,t)。令点m的速度为Vm=(vx+vy)T.若点m的速度保持不变,那么在很短的时间间隔dt内,有:
I(x+Vxdt,y+vydt,t+dt)=I(x,y,t)
其中
设vx=u,vy=v
可以用正则化技术[Horn 1981]求光流使下式最小:
在求得每一点的光流后,对整个图像求取光流方向直方图。在训练过程中将敏感视频中每帧的光流方向直方图和正常视频中每帧的光流直方图作为两类样本,输入到SVM分类器中训练。在识别阶段,用被测试视频中每帧的光流方向直方图在分类器中投影,计算其是否具有属于敏感运动特征。肤色流形参数变分估计:
传统肤色模型[Jones 1998]:
在RGB空间中,r,g,b三分量不仅代表颜色,还代表光照的明暗。为消除光照影响,对颜色采用正则化处理:r=R/(R+G+B),b=B/(R+G+B).颜色模型可以用高斯模型N(m,c)表示。
均值:m=E{x}其中x=(r b)T
方差:c=E{(x-m)(x-m)T}
P(r,b)=exp[-0.5(x-m)Tc-1(x-m)]其中x=(r b)T
通过取一定阈值,就能把皮肤分割出来。
其缺陷:只考虑到单高斯分布,只能处理一类肤色。
传统的多高斯肤色模型:
对肤色样本进行EM(期望最大化)参数估计,参数分别是每类别的均值和方差,还有每一个类别的先验概率。
其缺陷:在训练之前,必须已知模型结构,在模型结构未知的情况下无法训练。为了确定模型结构,往往是人为手工给定一个结构。
本发明的算法:所述的根据肤色流形分类器进行肤色分割,判别其肤色比例是否超过阈值是通过以下步骤实现的。
肤色流形参数变分估计
在混合高斯模型的类别数未知的情况下对样本进行训练,这是一种同时对结构和参数进行学习的方法,目的是寻找一种最优的模型结构和在此结构下的最优参数。
参数描述
假设观测为y=(y1,…yN),其中y1,…yN均为p维向量,N为观测样本的总数。假设隐藏变量为x=(x1,…xN),其中x1,…xN均为k维向量,分别表示对应观测的状态,在所处理的混合高斯模型中,k=1。
假设对每一类样本cj,其均值和逆协方差阵分别为μj,
即p(yj|xj)=N(yj;μj,Γj)。设p(xj)=πj,这样模型参数为(πj,μj,Γj)。同时对模型参数设定先验概率分布,为了使得模型的先验分布和后验分布性质一致,设定πj服从Dirichelet分布,μj服从高斯分布,Γj服从Wishart分布,即:
其中π1,...,πm≥0;
p(μj|Гj)=N(μj;ρ0,β0Гj) (2)
其中
{λj},ρ0,β0,v0,Φ0均为超参数,代表模型结构。参数估计的目的是在变结构,也就是说在类别数目可变的条件下,可以学习出一个最优参数估计。
混合高斯模型实际上是图模型的一个特例,其模型结构如图1所示,每个观测节点都有一个状态节点作其父节点,而且各状态节点之间相互独立,各观测节点之间也相互独立。下面我们给出通用图模型的EM估计步骤。通用图模型变分估计
参数估计中的EM估计是在p(y|θ)的表达式中求取一个θ,使得p(y|θ)取极大值。而往往直接求取d ln p(y|θ)/dθ=0来解θ比较困难,通过隐含变量过渡来求取
比较方便,这就是经典的EM算法,但是它只适合于结构固定时的参数估计。
根据Hinton的观点,优化p(y|θ)的过程可以转化为优化其下界
的过程。设m表示结构,我们同样可以求取p(y|m)的相应下界:
假设x和θ独立,需要分别求出q(x)和q(θ)使得p(y|m)的下界F最大。q(x)和q(θ)可以分别看成是相应真实分布的变分估计,当这个估计与真实一致时,p(y|m)的下界F取最大。通过F分别对q(x)和q(θ)求导作变分求解:
其中对q(x)估计的过程可以看成是E step,对q(θ)估计的过程可以看成是M step,由于q(θ)是对θ的后验估计,所以这个θ参数比经典EM中最大化p(y|θ)中的参数要可靠。
变分混合高斯模型参数估计
具体到混合高斯模型,我们分别按照(4)和(5)来求q(x)和q(θ),首先对ln p(x,y)作具体化:
然后求q(x):
其中:
这是E step,接下来是通过M step估计参数的后验分布,为了书写方便,预先定义几个变量:
Nj=N
πj
将(1)(2)(3)(6)代入(5)得到关于(πj,μj,Γj)的新的Dirichelet分布,正态分布和Wishart分布,假设新参数形式如下:
p(μj|Γj)=N(μj;ρj,βjΓj) (9)
可以求得新的参数分别为:
λj′=
Nj+λ0
βj=
Nj+β0
ρj=(
Nj
μj+β0ρ0)/(
Nj+β0)
vj=
Nj+v0
Φj=
Nj
∑j+
Njβ0(
μj-ρ0)(
μj-ρ0)T /(
Nj+β0)+Φ0
并且有:
<μj>=ρj
这就是对(πj,μj,Γj)的估计。
肤色分类器
设原来的样本为Y,新来一个样本y,则p(y|Y)服从混合的t分布:
ωj=vj+1-d
当样本数目趋于无穷大时,p(y|Y)趋于混合高斯分布。设y的状态为x,则:
其中
视频信息中的敏感性评测:
通过对每一关键帧的运动特征和图像特征进行敏感性估计,只有当被测试帧的运动特征和图像特征均具有敏感性的时候,才认为这一帧是敏感帧。这样就得到了视频在时间域上的的敏感帧分布情况,如附图3所示,其中深色部分代表可能含有敏感信息的帧。
通过对敏感帧分布密度进行估计,可以决策出视频是否敏感。
本发明采用c++开发而成。首先是输入一段视频,视频的输入可以是本地输入,也可以接收远程的视频URL输入。当接收远程URL时,该系统可以自动完成视频下载功能,并且以流媒体的方式进行下载和播放。在视频下载的同时进行视频解压缩处理,然后计算每一帧的光流方向直方图,然后以光流方向直方图作运动特征判别其是否敏感。同时根据肤色流形分类器进行肤色分割,判别其肤色比例是否超过阈值,如果超过阈值,则认为图像特征敏感。当运动特征和图像特征都敏感的时候,判定这一帧敏感。敏感视频的检测与静态敏感图象的检测有所不同:静态图象是单帧的,这一幅图象要么是敏感,要么非敏感。而视频则不同,里面含有较多的冗余信息,如果某一帧是敏感的,那最好不要马上决策这段视频是敏感的,因为这样会使检测的错误率提高。因为根据常识,如果一段视频是敏感的,那么这段视频绝不可能只有一个关键帧是敏感的。因此,就需要计算敏感帧的分布情况。如果在某个时间段敏感关键帧的分布密度过高,则有理由认为这一段视频就含有敏感信息。实际上,在敏感帧分布密度的基础上来判别视频的敏感性,其准确性往往比静态的敏感图象检测要高。敏感视频的检测框图如附图2所示。