《Randomized Low-Rank Dynamic Mode Decomposition for Motion Detection》读书笔记(中)

谢绝任何不标注出处的转载

如有问题请联系作者

原文链接:https://arxiv.org/abs/1512.03526

上一篇读书笔记大致介绍了svd和rsvd,这一篇来学习一下dmd和rdmd。

DMD是一个合并了PCA和时间序列(傅里叶模式)的数据驱动型方法。

DMD起源于流体力学,它的使用几乎不需要潜在假设,但是它对数据有一定的要求。数据需要是用于描述动态系统且有序并且均匀分布的(ordered and evenly spaced data sequence describing a dynamic system)。我们将图像数据变为(维度,维度)的灰度图像,然后将数组重新排列,变成(维度*维度,1)的向量,将其称为框架frame,那么对于任意图像ft(t>=1),我们有:


即,该图像构成的frame的下一图像的frame能够由该图像和一个m*m维度的矩阵M表示。M被称作库普曼算子(Koopman Operator)。库普曼算子的特征值分解能够描述整个视频序列的演变。综上,其实DMD的核心就是在找一个合适的M来描述这个时间序列关系。这里有一个地方很神奇——即使M是现行的,它依然能用来描述非线性的流体系统。

具体操作起来,先看DMD:

首先,将整个数据转化为一个m*n的矩阵D,n是图像的数量,m是frame的维度。然后,将D分为两个m*(n-1)的矩阵X和Y。X从第一个frame开始,到倒数第二个frame结束;Y从第二个frame开始,到最后一个frame结束。那么根据上面的公式,我们有:


要求解一个M,其实问题就转化为了:


这里有一点神经网络前馈传播和反向传播的意思,首先我们计算出来一个M,然后进行优化。

对于M,根据第一个公式,我们有:


使用svd,则有:


其中,M是一个m*m的矩阵,Y为m*(n-1),V((n-1)*(n-1))和U((m*(n-1)))分别是X的右奇异和左奇异向量,大写的σ((n-1)*m)是由X的奇异值构成的对角线向量。通过了解M的m是如何构成的,我们可以知道对于越高清的图像,m越大,所以直接计算一个(m,m)的矩阵是很耗费资源的,甚至不可行,这里我们就要构成一个小一点的M:


通过这种方法构建出的小M,很神奇的和M拥有一样的奇异值【这一点真的是超关键了】。这样,通过这个U,其实我们是将PCA的思想融入了DMD之中。综合上面的两个公式,我们重新计算小M:


公式第二个等号后的两个左奇异向量U的合并在DMD中是核心数学问题,结合了pca和svd。

同样地,用svd会变得非常expensive,所以可以用一些低秩分解技巧代替,例如rsvd。使用rsvd产生的dmd则为rdmd(randomized DMD)。此刻我们构造的小M就是一个k*k的小矩阵,k远小于m和n,非常可爱。对于一个小M,我们有:


其中,W是一个k*k的奇异向量矩阵,大写的lambda是一个k*k的包含奇异值λ的对角线矩阵。

接下来计算动态模式φ(dynamic modes)。φ是一个m*k的矩阵,通过下式得到:


还有一种方法(因为我是在没看出来这个公式是咋得出来的,姑且算做第二种方法吧),如下图所示,文章作者采用的是该方法:


如此一来,对于每一个frame, 我们有:


λ是矩阵的第i个奇异值,φ是第i个动态模式,b是相应的振幅。这个地方不是很好理解,我想的是既然我们的目的是通过M来寻找一个能较好阐述这个时间序列关系的特性,那么计算出的M和小M又拥有同样的奇异值,所以得到的λ和φ是能够阐述这个时间序列的关系的,此外还加了一个k*1的b,用于控制noise?注意此处b是时间独立的,b可以用线性最小二乘法求得,那么我们的f1有:


对于整个DMD,可以写作:


B是一个由bi组成的对角线矩阵,Vand是被称作the Vandermonde matrix of the eigenvalues(范德蒙矩阵)的矩阵。范德蒙矩阵常应用于纠错编码,各行为几何级数的矩阵,形式如下:


下图表示了该算法如何进行动态模式分解和重构,嗯我没太看懂,大概意思应该是通过时间和frame将视频拆分,然后矩阵由后三个相乘重新组建,嗯。。待我问过老师了再来解释这一部分吧。先放这儿吧。摘自论文《Randomized Low-Rank Dynamic Mode Decomposition for Motion Detection》。



猜你喜欢

转载自blog.csdn.net/weixin_39965890/article/details/81023165