Robust PCA进行背景建模
1. 原理
1.1 Robust PCA
Principal Component Analysis (PCA) 是一种降维的常用手段,可以去除噪声和冗余,使用另一组基去重新描述得到的新的数据空间 ,并且尽可能得使约减后的维度尽可能接近原数据,也即最小化重构误差E=M-L。但是由于PCA前提假设数据的噪声是高斯的,对于大的噪声或者严重的离群点,PCA会被它影响,导致其无法正常工作。
Robust PCA也是一种降维的方法。Robust PCA能够从corruption较大且稀疏噪声污染的观测数据中提取出低秩的数据。Robust PCA考虑的是这样一个问题:一般的数据矩阵D包含结构信息,也包含噪声。那么可以将这个矩阵分解为两个矩阵相加:D = A + E,A是低秩的(由于内部有一定的结构信息造成各行或列间是线性相关的,比如背景建模中的背景,基本保持不变,是线性相关的),E是稀疏的(含有噪声,则是稀疏的,比如背景建模中运动的物体),则Robust PCA可以写成以下的优化问题:$\min\limits_{A,E}\ rank(A)+\lambda ||E||_0\ s.t.\ A+E=D$,由于rank和$L_0$范数在优化上存在非凸和非光滑特性,所以一般将这个NP问题转换成求解一个松弛的凸优化问题: $\min\limits_{A,E}\ ||A||_*+\lambda ||E||_1\ s.t.\ A+E=D$。
1.2 增广拉格朗日算法
在朴素拉格朗日形式上加上一个惩罚项 :
$$L(A,Z,Y)=||A||_*+\lambda||Z||_1+\frac{1}{2}\mu||D-A-E||^2_F+<Y,D-A-E>$$
$$其中||A||_*是nuclear\ norm,保证A是低秩的,||.||_F表示Frobenius范数$$
精确拉格朗日乘子法算法迭代过程如下:
非精确的增广拉格朗日乘子法,也即交替方向法:
几种优化算法对比:(http://perception.csl.illinois.edu/matrix-rank/sample_code.html)
2. 实验
代码:
1 | # -*- coding: utf-8 -*- |
其中RPCA.py为代码文件,bmp_out.npy是原图像,out_low_rank.npy是背景,out_sparse.npy是前景。
如下图:
3. 参考文献:
[1] Lin Z, Chen M, Ma Y. The Augmented Lagrange Multiplier Method for Exact Recovery of Corrupted Low-Rank Matrices[J]. Eprint Arxiv, 2009, 9.
[2] 周密, 宋占杰. 基于稀疏与低秩矩阵分解的视频背景建模[J]. 计算机应用研究, 2015, 32(10):3175-3178.
[3] https://blog.csdn.net/u010510350/article/details/77803572
[5] http://blog.shriphani.com/2013/12/18/robust-principal-component-pursuit-background-matrix-recovery/
[6] http://perception.csl.illinois.edu/matrix-rank/introduction.html