感谢香港理工大学的Kaihua Zhang,这是他即将在ECCV 2012上出现的paper:Real-time Compressive Tracking。 这里是他的介绍:
一种简单高效地基于压缩感知的跟踪算法。首先利用符合压缩感知RIP条件的随机感知矩对多尺度图像特征进行降维,然后在降维后的特征上采用简单的朴素贝叶斯分类器进行分类。该跟踪算法非常简单,但是实验结果很鲁棒,速度大概能到达40帧/秒。具体原理分析可参照相关文章。
工业界跟踪做的较好的公司是以色列的ioimage,他的ptz tracking让人印象深刻,楼主有没有研究过在ptz平台的跟踪算法呢? IOI的PTZ跟踪,无论是目标分割,还是PTZ的物理控制都做得相当出色。个人觉得是见过的PTZ跟踪里面做得最好的一家。
介绍一家以色列的智能视频监控公司,技术做的可靠实用,可以在雨雪雾等全天候高噪声环境下工作,产品应用很广,公司发展很快。下面摘自其公司网站。
凭借着设置简易性、产品包装技术和价格低廉等特点,ioimage 有了独特的市场定位 – 不仅为高端视频分析市场(如军用领域、核设施、关键基础设施及运输等)提供分辨率,同时还瞄准更大的商业市场(如教育、零售、工业、制造业和物流中心等)。
(ioimage已被美国公司收购:http://www.dvtel.com/products-solutions/ioimage/,可参照贝尔信)
http://blog.csdn.net/zouxy09/article/details/8118360
下面是这个算法的工程网站:里面包含了上面这篇论文、Matlab和C++版本的代码,还有测试数据、demo等。后面我再学习学习里面的C++版本的代码,具体见博客更新。
http://www4.comp.polyu.edu.hk/~cslzhang/CT/CT.htm
之前自己稍微学习了下稀疏感知的理论知识总结:
http://blog.csdn.net/zouxy09/article/details/8118329
一、实时压缩跟踪:
感谢香港理工大学的Kaihua Zhang,这是他即将在ECCV 2012上出现的paper:Real-timeCompressive Tracking。这里是他的介绍:
一种简单高效地基于压缩感知的跟踪算法。首先利用符合压缩感知RIP条件的随机感知矩对多尺度图像特征进行降维,然后在降维后的特征上采用简单的朴素贝叶斯分类器进行分类。该跟踪算法非常简单,但是实验结果很鲁棒,速度大概能到达40帧/秒。
实际上,感觉上面这几句话的介绍已经高度的概括了这个论文的主要思想。和一般的模式分类架构一样:先提取图像的特征,再通过分类器对其分类,不同在于这里特征提取采用压缩感知,分类器采用朴素贝叶斯。然后每帧通过在线学习更新分类器。当然,里面还包含着很多细节的推导和优化了,下面我们从论文中一起来学习一下。
上一博文中提到compressive sensing的主要原理就是用一个随机感知矩阵去降维一个高维信号,得到的低维信号可以完全保持高维信号的特性。这个随机感知矩阵要满足CS理论的RIP条件就可以完全从低维信号重建高维信号。
二、主要思想:
我再啰嗦一下:通过稀疏感知理论可以知道,我们通过一个满足RIP条件的非常稀疏的测量矩阵对原图像特征空间做投影,就可以得到一个低维压缩子空间。低维压缩子空间可以很好的保留高维图像特征空间的信息。所以我们通过稀疏测量矩阵去提取前景目标和背景的特征,作为在线学习更新分类器的正样本和负样本,然后使用该朴素贝叶斯分类器去分类下一帧图像的目标待测图像片(感知空间下)。
三、具体工作过程如下:
(1)在t帧的时候,我们采样得到若干张目标(正样本)和背景(负样本)的图像片,然后对他们进行多尺度变换,再通过一个稀疏测量矩阵对多尺度图像特征进行降维,然后通过降维后的特征(包括目标和背景,属二分类问题)去训练朴素贝叶斯分类器。
(2)在t+1帧的时候,我们在上一帧跟踪到的目标位置的周围采样n个扫描窗口(避免去扫描整幅图像),通过同样的稀疏测量矩阵对其降维,提取特征,然后用第t帧训练好的朴素贝叶斯分类器进行分类,分类分数最大的窗口就认为是目标窗口。这样就实现了从t帧到t+1帧的目标跟踪。
四、相关理论推导:
4.1、随机投影:
一个n x m的随机矩阵R,它可以将一个高维图像空间的x(m维)变换到一个低维的空间v(n维),数学表达就是:v = R x
在这里n远远小于m(这样才叫降维嘛)。最理想的情况,我们当然希望低维的v可以完全的保留高维的x的信息,或者说保持原始空间中各样本x的距离关系,这样在低维空间进行分类才有意义。
Johnson-Lindenstrauss推论表明:可以随机选择一个适当的高维子空间(当然,需要比原始空间维度小),原始空间两点的距离投影到这个子空间,能高概率的保留这种距离关系。(K+1次测量足以精确复原N维空间的K-稀疏信号)。
而Baraniuk证明了满足Johnson-Lindenstrauss推论的随机矩阵同样满足压缩感知理论中的restricted isometry property(RIP)条件。所以,如果随机矩阵R满足Johnson-Lindenstrauss推论,那么如果x是可压缩的(或者说是稀疏的),我们就可以通过最小化误差来从v中高概率恢复x。
所以原文就找到了一个非常稀疏的投影矩阵,不但满足Johnson-Lindenstrauss推论,而且可以高效的实时计算。
4.2、随机测量矩阵:
一个比较典型的满足RIP条件的测量矩阵是随机高斯矩阵,矩阵元素满足N(0,1)分布。但是,如果m的维数比较大的话,这个矩阵还是比较稠密的,它的运算和存储消耗还是比较大的。而在原文,采用了一个非常稀疏的随机测量矩阵,其矩阵元素定义为:
Achlioptas证明了,上式s取2或者3时,矩阵就满足Johnson-Lindenstrauss推论。这个矩阵非常容易计算,因为它只需要一个均匀随机数发生器就行,而且当s=3时,这个矩阵非常稀疏,计算量将会减少2/3。如果s=3,那么矩阵元素有1/6的概率为1.732(表示根号3,懒得插入公式了),有1/6的概率为-1.732,有2/3的概率为0;
本文中s=m/4,矩阵R的每一行只需要计算c(小于4)个元素的值。所以它的计算复杂度为O(cn)。另外,我们只需要存储R的非零元素即可,所以所需存储空间也很少。
4.3、提出的算法:
上图表明一个n x m的稀疏矩阵,它可以将一个高维图像空间的x(m维)变换到一个低维的空间v(n维),数学表达就是:v = R x ;
其中,矩阵R中,黑色、灰色和白色分别代表矩阵元素为负数、正数和零。蓝色箭头表示测量矩阵R的一行的一个非零元素感知x中的一个元素,等价于一个方形窗口滤波器和输入图像某一固定位置的灰度卷积。
为了实现尺度不变性,对每一个样本z∊Rwxh,通过将其与一系列多尺度的矩形滤波器{h1,1,…,hw,h}进行卷积,每一种尺度的矩形滤波器定义如下:
式中,i和j分别是矩形滤波器(模版)的宽和高。然后将滤波后的的图像矩阵展成一个wxh维的列向量。再将这些列向量连接成一个非常高维((wxh)2维)的多尺度图像特征向量x=(x1,…,xm)T。维数一般在10的6次方到10次方之间。
我们通过采用上面的稀疏随机矩阵R将x投影到低维空间的v。这个随机矩阵R只需要在程序启动时计算一次,然后在跟踪过程中保持不变。通过积分图,我们可以高效的计算v。
4.4、低维压缩特征的分析:
低维特征v的每一个元素vi是不同尺度的空间分布特征的线性组合。由于测量矩阵R的系数可正,可负,所以压缩特征可以像广义Haar-like特征一样计算相关灰度差。Haar-like特征的计算比较耗时,传统方法是通过boosting算法选择重要的特征来减少需要计算的特征数。本文中,我们通过稀疏测量矩阵对这些数目庞大的Haar-like特征进行压缩,稀疏感知理论保证了,压缩后的特征几乎保留原有图像的信息。因此,我们可以直接对压缩空间里面的投影特征进行分类,而避免了维数灾难。
4.5、分类器构建和更新:
对每个样本z(m维向量),它的低维表示是v(n维向量,n远小于m)。假定v中的各元素是独立分布的。可以通过朴素贝叶斯分类器来建模。
其中,y∊{0,1}代表样本标签,y=0表示负样本,y=1表示正样本,假设两个类的先验概率相等。p(y=1)=p(y=0)=0.5。Diaconis和Freedman证明了高维随机向量的随机投影几乎都是高斯分布的。因此,我们假定在分类器H(v)中的条件概率p(vi|y=1)和p(vi|y=0)也属于高斯分布,并且可以用四个参数来描述:
上式中的四个参数会进行增量更新:
上式可以由最大化似然估计得到。
图中显示了从某帧中的正样本和负样本提取出的三个不同特征(低维空间下)的概率分布。红色和蓝色阶梯线分别代表正样本和负样本的直方图。而红色和蓝色的曲线表示通过我们的增量更新模型得到的相应的分布估计。图说明了在投影空间,通过上式描述的在线更新的高斯分布模型是特征的一个良好估计。
五、压缩跟踪算法:
输入:第t帧图像
1、在t-1帧跟踪到的目标位置It-1的周围(也就是满足Dγ={z|||l(z)−lt−1||<γ,与It-1距离小于γ)采样n个图像片,然后对这些图像片进行特征提取(降维),得到每个图像片的特征向量v。
2、使用式(4)中分类器H(v)对这些v进行分类,找到最大分类分数的图像片作为当前帧跟踪到的目标,位置为It;
3、采样两个样本集:Dα= {z|||l(z) − lt|| < α}和 Dζ ,β= {z|ζ < ||l(z)−lt|| <β}其中,α< ζ < β;
4、提取上述两个样本集的特征,通过式(6)来更新分类器参数。
输出:跟踪到的目标位置It和更新后的分类器参数。
上一回粗略的引入了压缩感知。
http://blog.csdn.net/zouxy09/article/details/8118313
下面就针对自己的了解,具体总结下压缩感知理论。由于自己也是这几天看到那个《Real-Time Compressive Tracking》
http://www4.comp.polyu.edu.hk/~cslzhang/CT/CT.htm
其涉及到的理论就是压缩感知(或者稀疏表达)。然后感觉不错,了解了解(后面会对这个跟踪算法做介绍,具体见博客更新)。所以接触时间有限,理解未免出错,望各位不吝指正。
简单地说,压缩感知理论指出:只要信号是可压缩的或在某个变换域是稀疏的,那么就可以用一个与变换基不相关的观测矩阵将变换所得高维信号投影到一个低维空间上,然后通过求解一个优化问题就可以从这些少量的投影中以高概率重构出原信号,可以证明这样的投影包含了重构信号的足够信息。
在该理论框架下,采样速率不再取决于信号的带宽,而在很大程度上取决于两个基本准则:稀疏性和非相关性,或者稀疏性和等距约束性。
压缩感知理论主要包括三部分:
(1)信号的稀疏表示;
(2)设计测量矩阵,要在降低维数的同时保证原始信号x的信息损失最小;
(3)设计信号恢复算法,利用M个观测值无失真地恢复出长度为N的原始信号。
理论依据:
(1)设长度为N的信号X在某个正交基Ψ上是K-稀疏的(即含有k个非零值);
(2)如果能找到一个与Ψ不相关(不相干)的观测基Φ;
(3)用观测基Φ观测原信号得到长度M的一维测量值M个观测值Y,K<M<<N;
(4)那么就可以利用最优化方法从观测值Y中高概率恢复X。
数学表达:
设x为长度N的一维信号,稀疏度为k(即含有k个非零值),A为M×N的二维矩阵(M<N),y=Φx为长度M的一维测量值。压缩感知问题就是已知测量值y和测量矩阵Φ的基础上,求解欠定方程组y=Φx得到原信号x。Φ的每一行可以看作是一个传感器(Sensor),它与信号相乘,拾取(Acquisition)了信号的一部分信息。而这一部分信息足以代表原信号,并能找到一个算法来高概率恢复原信号。
一般的自然信号x本身并不是稀疏的,需要在某种稀疏基上进行稀疏表示,x=Ψs,Ψ为稀疏基矩阵,s为稀疏系数(s只有K个是非零值(K<<N)。
压缩感知方程为y=Φx=ΦΨs=Θs。
将原来的测量矩阵Φ变换为Θ=ΦΨ(称之为传感矩阵),解出s的逼近值s’,则原信号x’ = Ψs’。
1、信号的稀疏表示
信号的稀疏性简单理解为信号中非0元素数目较少,或者说大多数系数为0(或者绝对值较小)。
自然界存在的真实信号一般不是绝对稀疏的,而是在某个变换域下近似稀疏,即为可压缩信号。或者说从理论上讲任何信号都具有可压缩性,只要能找到其相应的稀疏表示空间,就可以有效地进行压缩采样。信号的稀疏性或可压缩性是压缩感知的重要前提和理论基础。
稀疏表示的意义:只有信号是K稀疏的(且K<M<<N),才有可能在观测M个观测值时,从K个较大的系数重建原始长度为N的信号。也就是当信号有稀疏展开时,可以丢掉小系数而不会失真。
我们知道,长度为N的信号X可以用一组基ΨT=[Ψ1,…, ΨM]的线性组合来表示:
x=Ψs,Ψ为稀疏基NxN矩阵,s为稀疏系数(N维向量),当信号X在某个基Ψ上仅有 K<<N个非零系数或远大于零的系数s时,称Ψ为信号X的稀疏基。我们需要做的就是合理地选择稀疏基,使得信号的稀疏系数个数尽可能少。
再啰嗦点的话:如果长度为N的信号X,在变换域Φ中只有K个系数不为零(或者明显大于其他系数),且K<<N,那么可以认为信号X在Φ域中是稀疏的并可称为K-稀疏(不是严格的定义)。那么在该域下,我们如果只保留这M个大系数,丢弃其他的系数,则可以减小储存该信号需要的空间,达到了压缩(有损压缩)的目的。同时,以这M个系数可以重构原始信号X,不过一般而言得到的是X的一个逼近。
我们应该熟悉JPEG跟JPEG2000的区别吧,JPEG的核心算法是DCT,而后者是DWT,本质上,这两种处理方法都是将信号从一个域变换到另外一个域(把坐标系进行旋转,将信号投影到不同的基上),从而获得信号的稀疏表示,即用最少的系数来表示信号,不过DWT比DCT更加稀疏而已。信号不同,对应最稀疏表达的基也会不同,比如,对于一维信号可能小波基是最稀疏的,而对于图像而言,可能那些Curvelet和contourlet是最优的,对于有些信号,也有可能需要将几种基结合起来才是最优的。稀疏分解是找到信号的最稀疏最有效的表达。
信号在某种表示方式下的稀疏性,是压缩感知应用的理论基础,经典的稀疏化的方法有离散余弦变换(DCT)、傅里叶变换(FFT)、离散小波变换(DWT)等。
最近几年,对稀疏表示研究的另一个热点是信号在冗余字典下的稀疏分解。 这是一种全新的信号表示理论:用超完备的冗余函数库取代基函数,称之为冗余字典,字典中的元素被称为原子。目前信号在冗余字典下的稀疏表示的研究集中在两个方面:一是如何构造一个适合某一类信号的冗余字典,二是如何设计快速有效的稀疏分解算法。目前常用的稀疏分解算法大致可分为匹配追踪(Matching Pursuit)和基追踪(Basis Pursuit)两大类。
2、信号的观测矩阵
观测矩阵(也称测量矩阵)MxN(M<<N)是用来对N维的原信号进行观测得到M维的观测向量Y,然后可以利用最优化方法从观测值Y中高概率重构X。也就是说原信号X投影到这个观测矩阵(观测基)上得到新的信号表示Y。
观测矩阵的设计目的是如何采样得到M个观测值,并保证从中能重构出长度为N的信号X或者稀疏基Ψ下等价的稀疏系数向量。
为了保证能够从观测值准确重构信号,其需要满足一定的限制:观测基矩阵与稀疏基矩阵的乘积满足RIP性质(有限等距性质)。这个性质保证了观测矩阵不会把两个不同的K稀疏信号映射到同一个集合中(保证原空间到稀疏空间的一一映射关系),这就要求从观测矩阵中抽取的每M个列向量构成的矩阵是非奇异的。
在CS编码测量模型中并不是直接测量稀疏信号X本身, 而是将信号投影到一组测量矩阵Φ上而得到测量值y。即,用一个与变换矩阵不相关的MxN(M<<N)测量矩阵Φ对信号x进行线性投影,得到线性测量值y: y=Φx ;
测量值y是一个M维向量,这样使测量对象从N维降为M维。测量矩阵的设计要求信号从x转换为y的过程中,所测量到的K个测量值不会破坏原始信号的信息,以保证信号可以精确重构。
由于信号x是是可稀疏表示的: x=Ψs,上式可以表示为下式:
y=Φx=ΦΨs=Θs
其中Φ是一个MxN矩阵。上式中,方程的个数远小于未知数的个数,方程无确定解,无法重构信号。但是,由于信号是K稀疏,若上式中的Φ满足有限等距性质(Restricted Isometry Property,简称RIP),则K个系数就能够从M个测量值准确重构(得到一个最优解)。RIP性质的等价条件是测量矩阵Φ和稀疏基Ψ不相关。
如果稀疏基和观测基不相关,则很大程度上保证了RIP性。CandeS和Tao等证明:独立同分布的高斯随机测量矩阵可以成为普适的压缩感知测量矩阵。则一般用随机高斯矩阵作为观测矩阵。目前常用的测量矩阵还有随机贝努利矩阵、部分正交矩阵、托普利兹和循环矩阵和稀疏随机矩阵等,这里不一一列举了。
3、信号的重构算法
当矩阵Φ满足RIP准则时。压缩感知理论能够通过对上式的逆问题先求解稀疏系数s,然后将稀疏度为K的信号x从M维的测量投影值y中正确地恢复出来。解码的最直接方法是通过l0范数(0-范数,也就是向量yˆ中非零元素的个数)下求解的最优化问题:
从而得到稀疏系数s的估计s’。则原信号x’ = Ψs’。由于上式的求解是个NP难问题(在多项式时间内难以求解,甚至无法验证解的可靠性)。L1最小范数下在一定条件下和L0最小范数具有等价性,可得到相同的解。那么上式转化为L1最小范数下的最优化问题:
L1范数最小化是通过用L1范数来近似0范数,取1而不取1/2,2/3或者其他值,是因为1范数最小化是凸优化问题,可以将求解过程转化成有一个线性规划问题。L1最小范数下最优化问题又称为基追踪(BP),其常用实现算法有:内点法和梯度投影法。内点法速度慢,但得到的结果十分准确:而梯度投影法速度快,但没有内点法得到的结果准确 。
目前,压缩感知的重构算法主要分为两大类:
(1)贪婪算法,它是通过选择合适的原子并经过一系列的逐步递增的方法实现信号矢量的逼近,此类算法主要包括匹配跟踪算法、正交匹配追踪算法、补空间匹配追踪算法等。
(2)凸优化算法,它是把0范数放宽到1范数通过线性规划求解的,此类算法主要包括梯度投影法、基追踪法、最小角度回归法等。
凸优化算法比贪婪算法所求的解更加精确,但是需要更高的计算复杂度。
从数学上来说,CS就是在一定的条件下求解欠定(不适定)方程,条件包括x要是稀疏的,测量矩阵要满足RIP条件,那么欠定(不适定)方程就会以很大的概率有唯一解。
http://www.cvchina.info/2012/07/31/real-time-compressive-tracking/