问题与初步思考
问题重述
问题一:视频的前后背景分离
给定一段视频(也可以说给定很多帧连续的图像),视频中有一些人或者别的东西在动(前景),也有一些不动的景象(背景)。要求使用背景建模的相关技术(最好使用优化方法),区分出前景和背景,输出为视频的每一帧对应的前景和背景。
如图[pic1]所示:
图像,左边是输入,右边是输出。
问题二:主成分提取
输入为一张由若干张小图放在一块拼接而成的大图,每个小图都由若干固定成分组合拼接而成。现在要求输出组成这些小图的固定成分。
如图[pic2]和[pic3]所示:
对问题的思考
第一个问题
对于第一个问题,想要用优化方法求解,优化的对象必然是每一帧图像的前景和背景。那么,目标函数是什么呢?想来我们想要做的是将前景和背景尽量分离开来,那么如何用一个函数来衡量这个分离的优劣呢?
我们可以将每一帧图像拉成一个列向量,那么一个视频(若干图像),就可以拉成很多列向量,放在一起,就形成了一个矩阵。假设原视频形成的矩阵记为
D
D
,前景视频记为,背景视频记为
E
E
,那么有。考虑到背景是不动的部分,所以
A
A
的每一列应该尽可能地一样,也就是说它的秩要尽可能低,向1靠拢。所以,能想到的优化的目标可以是让的秩尽可能低,但是这个考虑明显是不足。因为我们随随便便就可以让
A
A
的每一列都一样,比如说让每个元素都是同一个任意的数。咋一看,这问题应该出在了对的约束不足上。细细一想,我们应该让作为背景的
A
A
尽可能地“丰满”,这样才有可能把背景尽可能地提取出去。换言之,我们应该要让尽可能稀疏、“瘦小”,换一种考虑,我可以让
E
E
的欧式范数尽可能小。
剩下的事情就是求解这个优化这个问题了,我们已经建立了优化模型,剩下的我们可以拿着这个问题去问学优化的同学,这种问题是不是NP难的,最好用的算法是什么,请提供解法。学数学的同学就会告诉你,数值代数有一条矩阵低秩逼近的结论就是关于这个的,做SVD分解就行了。学优化的同学还会告诉你,哎呀这个因为秩这玩意儿是非凸的,在优化问题里面很难求解,那么就需要寻找它的凸近似来近似它了。对,你没猜错,我们可以用一个凸的被称为核范数的东西去近似,它其实是所有奇异值的和,就像我们用1范数取逼近0范数一样,我们也喜欢用核范数取逼近秩。
所以这个问题摇身一变,可能就不小心变成了RPCA问题:
剩下的问题,就是变着法地去解这个看起来很凸的问题。
第二个问题
第二个问题,同样把每一个小图片拉成一个个向量。问题想起来就很简单,无非就是寻找右边的图,使得存在它的某些个线性组合是左边的这个个小图。当然,这种寻找也要满足某些要求,使得我们“认知”上的需求得到体现,所谓“认知”上的需求,指的是做出来的结果看起来是如图展示的那么回事,而不要搞得乱七八糟。
假如用
V
V
来表示左边的大图拉成的矩阵,表示我们需要的右边的结果,也就是主成分拉成的矩阵,
H
H
的每一列表示对应列相对于
W
W
的组合系数,那么优化问题很简单,直接可写为:
这里的范数取什么呢?比如说,你可以取二范数,度量距离嘛。这里的 T1、T2 T 1 、 T 2 怎么取呢?比如说,很自然地想法,在这个问题中,成分取或者不取只有两个取值即 T1∈{0,1} T 1 ∈ { 0 , 1 } ,然后还可以加上其他的一些约束,比如说, H H 的正交约束等等。对应位置的相互约束影响等等,比如说机身、机翼和机尾只能各取一个等。
一般解法
以下我们都且只考虑第一个问题的一个详细的解法与算法等。
经典目标检测方法
1、背景差分法
,如果背景是静止的,利用当前图像与预存的背景图像作差分,再利用阈值来检测运动区域的一种动态目标识别技术。背景差分算法适用于背景已知的情况,但难点是如何自动获得长久的静态背景模型。MATLAB
中单纯的背景差分直接是函数imabsdiff(X,Y)就可以。\
2、帧差分法
。在运动的检测过程中,该方法利用时间信息,通过比较图像中若干连续帧获得对应像素点的灰度差值,如果均大于一定的阈值T2,则可以判断该位置存在运动的目标,较适合于动态变化场景。
3、光流场法
。能够较好的从背景中检测到相关前景目标,甚至是运动屋里中的部分运动目标,适用于摄像机运动过程中相对运动目标的检测。
新目标检测方法
1、像素点操作
,判别为前景或者背景两类。
2、低秩矩阵应用
。下面的例子就是将背景与前景分离开。使用的方法是RPCA的方法。
3、深度学习
FCN +
denseCRF,精确分割+语义标签。图像中的前景目标检测分割做的很好,下面还能做出语义检测,判断出图中的东西属于什么。
某些方法思想简述
迭代阈值方法
迭代阈值方法(IT)解决某个的松弛凸问题,迭代地更新A,E和Y。它通过相对于A和E最小化L(A,E,Y)来更新A和E,同时把Y固定。
然后,使用约束A + E =D的违反度来更新Y。为方便起见,我们引入了软阈值(收缩)运算符。此运算符可以扩展为向量和矩阵,以元素方式应用它。然后IT方法按照算法1中的描述工作,IT算法需要非常大量的迭代来收敛,并且难以选择步长
δK
δ
K
来加速,因此其适用性是有限的。
加速近端梯度法
加速近端梯度法(APG)用以解决某个无约束凸问题,在一个真正的希尔伯特空间中,赋予内积 ⟨∙,∙⟩ ⟨ ∙ , ∙ ⟩ 和相应的范数 ∥.∥ ‖ . ‖ ,g和f都是凸的,f是Lipschitz连续的: ∥∇f(x1)−∇f(x2)∥≤Lf∥x1−x2∥ ‖ ∇ f ( x 1 ) − ∇ f ( x 2 ) ‖ ≤ L f ‖ x 1 − x 2 ‖ ,可以局部逼近f(X)作为二次函数。这种方法被认为很容易更新解X。
通过前人研究,上述加速的近端梯度方法可以直接应用于松弛版本的RPCA问题,可以大大加速收敛。
高斯混合模型(GMM)
高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。
对图像背景建立高斯模型的原理及过程:图像灰度直方图反映的是图像中某个灰度值出现的频次,也可以以为是图像灰度概率密度的估计。如果图像所包含的目标区域和背景区域相差比较大,且背景区域和目标区域在灰度上有一定的差异,那么该图像的灰度直方图呈现双峰-谷形状,其中一个峰对应于目标,另一个峰对应于背景的中心灰度。对于复杂的图像,尤其是医学图像,一般是多峰的。通过将直方图的多峰特性看作是多个高斯分布的叠加,可以解决图像的分割问题。
在智能监控系统中,对于运动目标的检测是中心内容,而在运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。而建模正是背景目标提取的一个重要环节。
前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。即利用当前帧和视频序列中的当前背景帧进行加权平均来更新背景,但是由于光照突变以及其他外界环境的影响,一般的建模后的背景并非十分干净清晰,而高斯混合模型(GMM,Gaussian mixture model)是建模最为成功的方法之一,同时GMM可以用在监控视频索引与检索。
混合高斯模型使用K(基本为3到5个)个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后更新混合高斯模型,用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点,否则为前景点。通观整个高斯模型,他主要是有方差和均值两个参数决定,,对均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性。由于我们是对运动目标的背景提取建模,因此需要对高斯模型中方差和均值两个参数实时更新。为提高模型的学习能力,改进方法对均值和方差的更新采用不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立背景图像并实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。
设有随机变量XX,则混合高斯模型可以用下式表示:
其中 N(x|μk,∑k) N ( x | μ k , ∑ k ) 称为混合模型中的第k个分量。如果有两个聚类,可以用两个二维高斯分布来表示,那么分量数K=2, πk π k 是混合系数,且满足:
可以看到 πk π k 相当于每个分量 N(x|μk,∑k) N ( x | μ k , ∑ k ) 的权重。
EM算法估计GMM参数
EM算法分两步,第一步先求出要估计参数的粗略值,第二步使用第一步的值最大化似然函数。因此要先求出GMM的似然函数。
假设 x={x1,x2,x3,…,xN} x = { x 1 , x 2 , x 3 , … , x N } , x x 是所有点(每个点有在二维平面上有两个坐标,是二维向量,因此等都用粗体表示)。GMM模型中有三个参数需要估计,分别是 π,μ,β π , μ , β :
为了估计这三个参数,需要分别求解出这三个参数的最大似然函数。先求解的最大似然函数。对(6)式取对数后再对 μk μ k 求导并令导数为0即得到最大似然函数。
注意到上式中分数的一项的形式正好是后验概率的形式。重新整理可以得到:
其中:
同理求 βK β K 的最大似然函数,可以得到:
最后剩下 πk π k 的最大似然函数。注意到 πk π k 有和为1的限制条件,因此我们需要加入拉格朗日算子:
EM算法估计GMM参数即最大化 μk,πk,βk μ k , π k , β k ,我们先指定 μk,πk,βk μ k , π k , β k 的初始值,中计算出 γ(znk) γ ( z nk ) ,,求得 μk,πk,βk μ k , π k , β k ;接着用求得的 μk,πk,βk μ k , π k , β k 再得到新的 γ(znk) γ ( z nk ) ,如此往复,直到算法收敛。
拉格朗日乘子方法介绍
模型建立
根据前面对问题的分析我们知道,对于前景背景分离问题可以转化成下面的数学模型。假设给定数据矩阵是一个列数很大的大矩阵
D∈Rm×n
D
∈
R
m
×
n
,对应的问题是为了估计一个低维的子空间,我们需要找到低秩矩阵
A
A
,使得
和
E
E
之间的误差是最小的,即转化成下面的约束优化问题
其中 r r 远小于是子空间的目标维数, ||⋅||F | | ⋅ | | F 为 Frobenius F r o b e n i u s 范数,假设数据带有独立同分布的高斯噪音,这个问题能通过奇异值分解解决。
主成分分析(PCA)是高维数据处理、分析、压缩和可视化的一种常用工具,在科学和工程领域有着广泛的应用。它假定给定的高维数据位于一个低维线性子空间附近。由于PCA给出了当破坏是由附加的独立同分布的高斯噪声引起时的最佳的估计,它在实践中运行良好,前提是噪声很小。然而,在大噪声破坏时效果不行,即使噪声只包含很少的观察结果。事实上,即使只有A的一个条目被任意破坏,经典PCA所获得的估计值可以任意地远离真值。因此,有必要研究低秩矩阵 A A 是否仍然可以从损坏的数据矩阵中准确地恢复,其中加性误差E的一些条目可以任意大。
Wright W r i g h t 等人的研究表明,在相当宽泛的条件下,答案是肯定的:只要误差矩阵 E E 足够稀疏(相对于),可以从 D=A+E D = A + E 精确地恢复低秩矩阵A。通过解决以下凸优化问题:
其中 ||⋅||∗ | | ⋅ | | ∗ 表示矩阵的核范数(即,其奇异值的和), ||⋅||1 | | ⋅ | | 1 表示矩阵元素的绝对值之和, λ λ 是正加权参数。由于能够精确地恢复数据中潜在的低秩结构,即使存在大的错误或异常值,这种优化被称为Robust PCA(RPCA)。
优化上述问题可以被视为一般凸优化问题,并且在被重新表述为半定规划之后由任何现成的内点求解器(例如,CVX)求解。
然而,尽管内点法通常只需很少的迭代就可以收敛,但它们很难解决处理大矩阵,因为计算步长方向的复杂度是 O(m6) O ( m 6 ) ,其中m是矩阵的维数。
在本次研究中,我们采用了新的矩阵恢复算法,利用增强拉格朗日乘子法(ALM)技术完成恢复。这里提出的精确ALM(EALM)方法被证明具有令人满意的Q线性收敛速度,而APG理论上只是亚线性的。对精确ALM的略微改进导致不精确的ALM(IALM)方法,其实际上与精确的ALM一样快地收敛,但是所需的部分SVD的数量明显更少。
精确的拉格朗日乘子方法
增广拉格朗日乘子的一般方法来解决这种约束优化问题:
其中可以定义拉格朗日函数如下
其中 μ μ 是一个正标量,然后优化问题可以通过下面的拉格朗日乘子的方法求解。
一般的拉格朗日乘法的流程如下:
上面是一般算法,现在具体到我们需要求解的问题,首先我们进行一下简单推导。由上面的算法我们可以知道,该算法的关键地方在于如何求解这个子问题,通过查看迭代阈值方法我们有下面的结论。
其中 USVT U S V T 为 W W 的奇异值分解。
更新公式是极小化拉格朗日乘子函数,需要对该函数进行求导,下面是矩阵求导的的一些公式。
其余需要的公式就是一些等价定义了, <A,B>=tr(ATB),||X||∗=tr(Σ),||X||F=tr(XTX)−−−−−−−√ < A , B >= t r ( A T B ) , | | X | | ∗ = t r ( Σ ) , | | X | | F = t r ( X T X ) <script type="math/tex" id="MathJax-Element-563"> =tr(A^TB),||X||_*=tr(\Sigma),||X||_F=\sqrt{tr(X^TX)}</script>,对于1范数我们考虑其次梯度, ∂||X||1∂X=sgn(X) ∂ | | X | | 1 ∂ X = s g n ( X ) ,推导可以得到下面这几个公式。
公式5对应的解析解如下
公式5对应的解析解如下
同理有求解这个问题的精确的拉格朗日乘子方法算法2如下
非精确的拉格朗日乘子方法
上述EALM算法中,如果 μk μ k 呈几何增长,EALM方法将线性收敛Q,如果 μk μ k 增长得更快,EALM方法也会收敛得更快。然而数值试验表明,对于较大的 μk μ k ,求解子问题 (A∗k+1,A∗k+1)=argminA,EL(A,E,Y∗k,μk) ( A k + 1 ∗ , A k + 1 ∗ ) = A , E arg min L ( A , E , Y k ∗ , μ k ) 的迭代阈值法将收敛的很慢。
由于SVD占计算负荷的大部分, {μk} { μ k } 的选择应该是明智的,因此SVD的总数是最小的。
幸运的是,事实证明,我们不必精确的解决子问题,相反,在解决该子问题时更新 Ak A k 和 Ek E k 足以使 Ak A k 和 Ek E k 收敛到RPCA问题的最优解。
每一步精确求解子问题计算量非常大,所以我们希望并不精确求解这个子问题,非精确的拉格朗日乘子算法3如下。
基于本问题的鲁棒PCA方法
RPCA方法
主成分分析(PCA)是高维数据处理、分析、压缩和可视化的一种常用工具,在科学和工程领域有着广泛的应用。它假定给定的高维数据位于一个低维线性子空间附近。在很大程度上,PCA的目标是准确而准确地估计这个低维子空间。假设给定的数据被指定为一个大矩阵
D∈Rm×n
D
∈
R
m
×
n
的列,用于估计低维子空间的数学模型是低秩矩阵A,使得A和D之间的差异最小化,从而形成一个如下优化问题。
其中 R≪min(m×n) R ≪ min ( m × n ) 是子空间的目标维数, ∥∙∥F ‖ ∙ ‖ F 是F范数,它对应于假设数据被独立同分布的高斯噪声破坏。通过计算D的奇异值分解(SVD),然后将D列投影到由D的r主左奇异向量所跨越的子空间中,可以方便地解决这个问题。
由于PCA给出了当破坏是由附加的独立同分布的高斯噪声引起时的最佳的估计,它在实践中运行良好,前提是噪声很小。然而,在大噪声破坏时效果不行,即使噪声只包含很少的观察结果。事实上,即使只有A的一个条目被任意破坏,经典PCA所获得的估计值可以任意地远离真值。因此,有必要研究低秩矩阵A是否仍然可以从损坏的数据矩阵D=A+E中准确地恢复,其中加性误差E的一些条目可以任意大。
前人研究已经表明,在相当宽泛的条件下,答案是肯定的:只要误差矩阵E足够稀疏(相对于A),可以从D= A + E精确地恢复低秩矩阵A。通过解决以下凸优化问题:
其中 ∥∙∥∗ ‖ ∙ ‖ ∗ 表示矩阵的核范数(即其奇异值的和), ∥∙∥1 ‖ ∙ ‖ 1 表示矩阵条目的绝对值之和,并且λ是正加权参数。由于能够精确地恢复数据中潜在的低秩结构,即使存在大的错误或异常值,这种优化被称为Robust PCA(RPCA)。
优化上述问题可以被视为一般凸优化问题,并且在被重新表述为半定规划之后由任何现成的内点求解器(例如,CVX)求解。
然而,尽管内点法通常只需很少的迭代就可以收敛,但它们很难解决处理大矩阵,因为计算步长方向的复杂度是
O(m6)
O
(
m
6
)
,其中m是矩阵的维数。
在本次研究中,我们采用了新的矩阵恢复算法,利用增强拉格朗日乘子法(ALM)技术完成恢复。这里提出的精确ALM(EALM)方法被证明具有令人满意的Q线性收敛速度,而APG理论上只是亚线性的。对精确ALM的略微改进导致不精确的ALM(IALM)方法,其实际上与精确的ALM一样快地收敛,但是所需的部分SVD的数量明显更少。
当 {μk} { μ k } 有界时,由前面产生的拉格朗日乘子 Yk Y k 线性收敛到最优解,而当 {μk} { μ k } 无界时,超线性Q收敛。ALM的这种卓越的收敛特性使其非常具有吸引力。ALM的另一个优点是更新 Yk Y k 的最佳步长被证明是选择的惩罚参数 μk μ k ,使得参数调整比迭代阈值算法更容易。ALM的第三个优点是算法收敛到精确的最优解,即使不需要 μk μ k 接近无穷大。而严格来说,前面提到的迭代阈值和APG方法只能找到问题的近似解。
数值实验与效能评估
略
参考文献
1、Lin Z, Chen M, Ma Y. The Augmented Lagrange Multiplier Method
for Exact Recovery of Corrupted Low-Rank Matrices[[]{}J[]]{}. Eprint
Arxiv, 2013, 9.
2、Lin Z, Ganesh A, Wright J, et al. Fast Convex
Optimization Algorithms for Exact Recovery of a Corrupted Low-Rank
Matrix[[]{}J[]]{}. Journal of the Marine Biological Association of the
Uk, 2009, 56(3):707-722.
3、https://www.cnblogs.com/xingshansi/p/6685811.html