几种压缩感知算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.1 压缩感知部分
压缩感知算法主要可分为三类:贪婪迭代算法、凸凸优化(或最优化逼近方法)和基于贝叶斯框架提出的重构算法。

由于第三类方法注重信号的时间相关性,不适合图像处理问题,故目前的研究成果主要集中在前两类中。

目前已实现6中算法,分别为正交匹配追踪法(OMP)、迭代硬阈值法(IHT)、分段正交匹配追踪法(StOMP)、分段弱正交匹配追踪法(SwOMP)、广义正交匹配追踪(GOMP)、基追踪法(BP)。

1.1 正交匹配追踪法(OMP)
在正交匹配追踪OMP中,残差是总与已经选择过的原子正交的。

这意味着一个原子不会被选择两次,结果会在有限的几步收敛。

OMP的算法如下
(1)用x表示你的信号,初始化残差e0=x;
(2)选择与e0内积绝对值最大的原子,表示为φ1;
(3)将选择的原子作为列组成矩阵Φt,定义Φt列空间的正交投影算子为
通过从e0减去其在Φt所张成空间上的正交投影得到残差e1;
(4)对残差迭代执行(2)、(3)步;
其中I为单位阵。

需要注意的是在迭代过程中Φt为所有被选择过的原子组成的矩阵,因此每次都是不同的,所以由它生成的正交投影算子矩阵P每次都是不同的。

(5)直到达到某个指定的停止准则后停止算法。

OMP减去的Pem是em在所有被选择过的原子组成的矩阵Φt所张成空间上的正交投影,而MP减去的Pem是em在本次被选择的原子φm所张成空间上的正交投影。

经OMP算法重构后的结果如下所示:
算法的使用时间如下:
1.2 迭代硬阈值法(IHT)
目标函数为
这里中的M应该指的是M-sparse,S应该指的是Surrogate。

这里要求:
之后我们利用式
对目标函数进行变形。

接着便是获得极值点:
利用该式进行迭代可以得到极值点,我们需要的是最小值。

此时目标函数的最小值就得到了。

此时便得到我们需要的公式:
我们要保证向量y的稀疏度不大于M,即,为了达到这一目标,要保留最大的M项(因为是平方,所以要取绝对值absolute value),剩余的置零(注意这里有个负号,所以要保留最大的M项)。

IHT算法结果:
IHT算法使用时间如下:
1.3 分段正交匹配追踪法(StOMP)
分段正交匹配追踪(Stagewise OMP)也是由OMP改进而来的一种贪心算法,与CoSaMP、SP算法类似,不同之处在于CoSaMP、SP算法在迭代过程中选择的是与信号内积最大的2K 或K个原子,而StOMP是通过门限阈值来确定原子。

此算法的输入参数中没有信号稀疏度K,因此相比于ROMP及CoSaMP有独到的优势。

StOMP的算法流程:
经StOMP算法重构后的结果如下所示:
该算法的用时情况如下:
1.4 分段弱正交匹配追踪法(SwOMP)
分段弱正交匹配追踪(Stagewise Weak OMP)可以说是StOMP的一种修改算法,它们的唯一不同是选择原子时的门限设置,这可以降低对测量矩阵的要求。

我们称这里的原子选择方式为"弱选择"(Weak Selection),StOMP的门限设置由残差决定,这对测量矩阵(原子选择)提出了要求,而SWOMP的门限设置则对测量矩阵要求较低(原子选择相对简单、粗糙)。

SWOMP的算法流程:
经SwOMP算法重构后的结果如下所示:
该算法的用时情况如下:
1.5 广义正交匹配追踪法(GOMP)
广义正交匹配追踪(Generalized OMP, gOMP)算法可以看作为OMP算法的一种推广。

OMP 每次只选择与残差相关最大的一个,而gOMP则是简单地选择最大的S个。

之所以这里表述为"简单地选择"是相比于ROMP之类算法的,不进行任何其它处理,只是选择最大的S个而已。

GOMP算法流程如下:
经GOMP算法重构后的结果如下所示:
该算法的用时情况如下:
1.6 基追踪法(BP)
除匹配追踪类贪婪迭代算法之外,压缩感知重构算法另一大类就是凸优化算法或最优化逼近方法,这类方法通过将非凸问题转化为凸问题求解找到信号的逼近,其中最常用的方法就是基追踪(Basis Pursuit, BP),该方法提出使用l1范数替代l0范数来解决最优化问题,以便使用线性规划方法来求解。

经BP算法重构后的结果如下所示:
该算法的用时情况如下:
几种压缩感知算法
11 /
11
2.推荐
压缩感知算法在CDSN 上有很多介绍和资源,这里推荐一个大神的博客,基本包含了现在常用的所有的压缩感知算法的介绍,当然后很多是没有完整的代码资源的,不过初学者还是可以去学习一波。

AndyJee
这里还有我的几种算法的实现:
STOMP
SWOMP
GOMP
BP
SP。

相关文档
最新文档