能量泛函优化方法——L2范数(应用于图像处理)

在深度学习大火的今天,熟不知以前的图像处理方法大都还是使用能量泛函优化的方法,即使是今天依然有着深度学习不可取代的魅力。要想学习,基础的优化方法必不可少。
先说说传统的图像处理方法包括图像超分,图像去模糊,图像去噪等,现在一些有意思的应用比如去雨、去雾、去霾、去云等等。在深度学习之前解决这类问题最流行的方法是基于MAP的框架的优化方法。先说说,如何求解这类数据项加先验项的问题。首先说说对于L2范数的先验项如何求解。

问题

求解
arg ⁡ min ⁡ x ∥ A x − b ∥ 2 2 + λ ∥ x ∥ 2 2 \arg \min _ { x } \| A x - b \| _ { 2 } ^ { 2 } + \lambda \| x \| _ { 2 } ^ { 2 } argminxAxb22+λx22.

解析解求解方法

上述的问题凸且连续可导的问题。因此可以通过求导的方法来求解,这也是一种求取解析解的方式。求解方法如下:
E = ( A x − y ) T ( A x − y ) + λ x T x E = ( A x - y ) ^ { T } ( A x - y ) + \lambda x ^ { T } x E=(Axy)T(Axy)+λxTx, 经展开
E = x T A T A x − x T A T Y − Y T A x − Y T Y + λ x T x E = x ^ { T } A ^ { T } A x - x ^ { T } A ^ { T } Y - Y ^ { T } A x - Y ^ { T } Y + \lambda x ^ { T } x E=xTATAxxTATYYTAxYTY+λxTx.
求导:
∂ E ∂ x = 2 A T A x − A T y + 2 λ x = 0 \frac { \partial E } { \partial x } = 2 A ^ { T } A x - A ^ { T } y + 2 \lambda x = 0 xE=2ATAxATy+2λx=0,
求解上式得到, X = ( A T A + λ I ) − 1 A T y X = \left( A ^ { T } A + \lambda I \right) ^ { - 1 } A ^ { T } y X=(ATA+λI)1ATy.
如果A是一个对称矩阵,比如对应于模糊核k的矩阵,上述可以使用FFT进行加速
X = F − 1 ( F ( k ) ‾ ⋅ F ( y ) F ( k ) ‾ F ( k ) + λ ) X = F ^ { - 1 } \left( \frac { \overline { F ( k ) } \cdot F ( y ) } { \overline { F ( k ) } F ( k ) + \lambda } \right) X=F1(F(k)F(k)+λF(k)F(y)).
上述可以简单地使用MATLAB实现。

迭代解求解方法

迭代解求解的方法也很多,比如梯度下降法,牛顿法等,这里不再赘述。在图像处理中,更常用的是共轭梯度法。
共轭梯度法是一种使用迭代的解决最小二乘问题的算法。最小二乘问题如下:
A x = b A x = b Ax=b
其中A是一个 n × n n \times n n×n 维的对称正定矩阵。上述问题等价于
min ⁡ Φ ( x ) = 1 2 x T A x T − b T x \min \Phi ( x ) = \frac { 1 } { 2 } x ^ { T } A x ^ { T } - b ^ { T } x minΦ(x)=21xTAxTbTx
对上式进行求导得
∇ Φ ( x ) = A x − b = r ( x ) \nabla \Phi ( x ) = A x - b = r ( x ) Φ(x)=Axb=r(x),
其中,r是残差。
当存在非零向量组 { p 1 , p 2 , … … , p l } \left\{ p _ { 1 } , p _ { 2 } , \ldots \dots , p _ { l } \right\} {p1,p2,,pl} 和正定的对称矩阵A满足
p i T A p j = 0 ; p _ { i } ^ { T } A p _ { j } = 0 ; piTApj=0; for all i ≠ j i \neq j i̸=j
时,说明非零向量组 { p 1 , p 2 , … … , p l } \left\{ p _ { 1 } , p _ { 2 } , \ldots \dots , p _ { l } \right\} {p1,p2,,pl} 共轭
共轭梯度法的思想是,使解沿着共轭梯度的方向进行迭代减小,最终达到最优解。
共轭梯度的算法流程如下:
初始化: r 0 ← A x 0 − b , p 0 ← − r 0 , k ← 0 r _ { 0 } \leftarrow A x _ { 0 } - b , p _ { 0 } \leftarrow - r _ { 0 } , k \leftarrow 0 r0Ax0b,p0r0,k0
迭代: while r k ≠ 0 r _ { k } \neq 0 rk̸=0
α k ← r k T r k p k T A p k \alpha _ { k } \leftarrow \frac { r _ { k } ^ { T } r _ { k } } { p _ { k } ^ { T } A p _ { k } } αkpkTApkrkTrk,
x k + 1 ← x k + α k p k x _ { k + 1 } \leftarrow x _ { k } + \alpha _ { k } p _ { k } xk+1xk+αkpk,
r k + 1 ← r k + α k A p k r _ { k + 1 } \leftarrow r _ { k } + \alpha _ { k } A p _ { k } rk+1rk+αkApk,
β k + 1 ← r k + 1 T r k + 1 r k T r k \beta _ { k + 1 } \leftarrow \frac { r _ { k + 1 } ^ { T } r _ { k + 1 } } { r _ { k } ^ { T } r _ { k } } βk+1rkTrkrk+1Trk+1,
p k + 1 ← − r k + 1 + β k + 1 p k p _ { k + 1 } \leftarrow - r _ { k + 1 } + \beta _ { k + 1 } p _ { k } pk+1rk+1+βk+1pk,
k = k + 1 k = k + 1 k=k+1.
end (while)
输出:x。
对于提到的问题,带有二范数的正则化项。对其进行求导
∂ E ∂ x = 2 A T A x − A T y + 2 λ x = 0 \frac { \partial E } { \partial x } = 2 A ^ { T } A x - A ^ { T } y + 2 \lambda x = 0 xE=2ATAxATy+2λx=0
将上式改写为
∂ E ∂ x = ( 2 A T A + 2 λ ) x − A T y = 0 \frac { \partial E } { \partial x } = \left( 2 A ^ { T } A + 2 \lambda \right) x - A ^ { T } y = 0 xE=(2ATA+2λ)xATy=0
这就是一个最小二乘问题,可以使用上述的共轭梯度法进行求解,避免了对矩阵进行求逆的操作。注:这里的矩阵A是模糊核的BCCB,因此满足对称正定矩阵的要求,因此可以采用共轭梯度进行求解。

OK,图像处理中解决这类问题常用的两种方法完毕。如果有什么错误的地方请大家不宁赐教。

你可能感兴趣的:(基础理论,能量泛函优化方法,能量泛函优化方法,L2范数正则化项,图像处理能量泛函)