压缩感知

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

首先,我们必须要认识到这一点,即CS(Compressed Sensing)中的Compressed不同于传统信息论和率失真意义上的compression。在CS中,"Compressed"一词更加准确的描述是一个降维采样的过程,而不是在信源编码意义上的“compression”。在CS中,我们是没有关于原始信号像素域的任何信息,仅仅只有观测域信息的,而这一点是常常被人忽略的。

其次,我们要明白CS理论的意义何在,往往有很多人忽略了这一理论的实际意义。CS最重要的意义在于其可以极大地减轻信号采集端的复杂度(在实践情况中,许多信号是没有实际意义的),在信号采集端采样率低的情况下,在信号接收端能够以比较大的概率重构出原始信号。CS的应用比如,在医学图像上,由于CS理论,我们可以减少对于病人伤害部位的观测时间,从而减少检查(如X光、CT)时对人体产生的副作用——辐射;再比如,如果信号采集设备地处偏远、环境恶劣,那么这个设备的能源供应系统就成了问题,而我们可以通过降低信号采集端设备的复杂度,从而减少采集端设备的能源消耗,如此CS理论就有很现实的意义了。

传统的数据采集模式是:数据 采集-压缩-传输-解压缩 的模式。既然采集数据之后反正要压缩掉其中的冗余度,而这个压缩过程又相对来说比较困难,那么我们为什么不直接「采集」压缩后的数据?这样采集的任务要轻得多,而且还省去了压缩的麻烦。这就是所谓的「压缩感知」,也就是说,直接感知压缩了的信息。

拓展:奈奎斯特采样定理(Shannon-Nyquist采样定理)。该定理将物理世界和数字世界连接起来。该定理的要求是:在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时,采样之后的数字信号完整地保留了原始信号中的信息。

而压缩感知的出现,告诉我们:如果信号在某一个正交空间具有稀疏性(即可压缩性),就能以较低的采样频率(远低于奈奎斯特采样频率)采样该信号,并可能以高概率精确地重建该信号。

所谓压缩感知,最核心的概念在于试图从原理上降低对一个信号进行测量的成本。比如说,一个信号包含一千个数据,那么按照传统的信号处理理论,至少需要做一千次测量才能完整地复原这个信号。这就相当于是说,需要有一千个方程才能精确地解出一千个未知数来。但是压缩感知的想法是假定信号具有某种特点(比如文中所描述得在小波域上系数稀疏的特点),那么就可以只做三百次测量就完整地复原这个信号(这就相当于只通过三百个方程解出一千个未知数)。

可是这看起来是不可能的事情。因为压缩后的数据并不是压缩前的数据的一个子集,并不是说,本来有照相机的感光器上有一千万个像素,扔掉其中八百万个,剩下的两百万个采集到的就是压缩后的图像,这样只能采集到不完整的一小块图像,有些信息被永远的丢失了而且不可能被恢复。如果要想采集很少一部分数据并且指望从这些少量数据中「解压缩」出大量信息,就需要保证:

第一:这些少量的采集到的数据包含了原信号的全局信息;

第二:存在一种算法能够从这些少量的数据中还原出原先的信息来。

有趣的是,在某些特定的场合,上述第一件事情是自动得到满足的。最典型的例子就是医学图像成像,例如断层扫描(CT)技术和磁共振(MRI)技术。对这两种技术稍有了解的人都知道,这两种成像技术中,仪器所采集到的都不是直接的图像像素,而是图像经历过全局傅里叶变换后的数据。也就是说,每一个单独的数据(K空间中的每一点)都在某种程度上包含了全图像的信息。在这种情况下,去掉一部分采集到的数据并不会导致一部分图像信息永久的丢失(它们仍旧被包含在其它数据里。从K空间这个角度理解)。这正是我们想要的情况。

上述第二件事就要归功于陶哲轩和坎戴的工作了。他们的工作指出,如果假定信号(无论是图像还是声音还是其他别的种类的信号)满足某种特定的「稀疏性」,那么从这些少量的测量数据中,确实有可能还原出原始的较大的信号来,其中所需要的计算部分是一个复杂的迭代优化过程,即所谓的「L1-最小化」算法。

把上述两件事情放在一起,我们就能看到这种模式的优点所在。它意味着:我们可以在采集数据的时候只简单采集一部分数据(「压缩感知」)比如说只采集图像20%的像素的信息即可(比如说用K空间采集数据),然后把复杂的部分交给数据还原的这一端来做(毕竟目前数据解压缩的这一部分功能是有运算能力比较强的机器来完成的),正好匹配了我们期望的格局。在医学图像领域里,这个方案特别有好处,因为采集数据的过程往往是对病人带来很大麻烦甚至身体伤害的过程。以X光断层扫描为例,众所周知X光辐射会对病人造成身体损害,而「压缩感知」就意味着我们可以用比经典方法少得多的辐射剂量来进行数据采集,这在医学上的意义是不言而喻的。

但是同样需要说明的是,这样的做法在不同的应用领域里并不总能满足上面所描述的两个条件。有的时候,第一个条件(也就是说测量到的数据包含信号的全局信息)无法得到满足,例如最传统的摄影问题,每个感光元件所感知到的都只是一小块图像而不是什么全局信息,这是由照相机的物理性质决定的。为了解决这个问题,美国Rice大学的一部分科学家正在试图开发一种新的摄影装置(被称为「单像素照相机」),争取用尽量少的感光元件实现尽量高分辨率的摄影。有的时候,第二个条件(也就是说有数学方法保证能够从不完整的数据中还原出信号)无法得到满足。这种时候,实践就走在了理论前面。人们已经可以在算法上事先很多数据重建的过程,但是相应的理论分析却成为了留在数学家面前的课题。

但是无论如何,压缩感知所代表的基本思路:从尽量少的数据中提取尽量多的信息,毫无疑问是一种有着极大理论和应用前景的想法。它是传统信息论的一个延伸,但是又超越了传统的压缩理论,成为了一门崭新的子分支。它从诞生之日起到现在不过五年时间,其影响却已经席卷了大半个应用科学

压缩感知的几个看似稀松平常,但是很关键的理论基础如下:

1. 稀疏信号的定义

若一个信号是稀疏信号,则只需在该信号左侧左乘一个测量矩阵即可。即:

y=ΦX

另外需要知道的知识点:

压缩感知最初提出时,是针对稀疏信号x,也即压缩感知算法处理的信号是稀疏信号。

什么是稀疏信号呢?

如果一个原始信号X,X能够可以用N行一列的矩阵表示,也就是一个N×1的列向量。另外090841_IKrJ_614348.png是一个包含N个向量的正交基。如果原始信号X可以被Ψ中的几个向量线性表示,那么X就是一个稀疏信号。

此时这个稀疏信号(PS:稀疏信号,是指在这个信号X中非零元素的个数远小于其中零元素的个数。)可以被这样表示:

压缩感知_第1张图片

上式中,Ψ是稀疏基(或者叫正交基),a表示X在正交基上的分解系数。

此时假设N不是很大,X是一个稀疏信号。

2. 投影(或叫映射)

若该信号是非稀疏信号,则需要先将该信号稀疏化,即左乘一个稀疏基(是一个正交基),然后再左乘一个测量矩阵(即观测矩阵)即可。

2.1. 稀疏基

稀疏基其实就是指的某种正交变换的变换矩阵列向量组成的基。下面说离散傅里叶变换基,也就是第五类,这样更容易说清楚。

2.1.1. 稀疏基的分类

(1) 正(余)弦基、离散余弦变换基、离散余弦变换(DCT)、DCT基、DCT变换。

(2) 小波基、离散小波变换基、小波(wavelet)、紧支集正交小波(DbN)、近似对称的紧支集双正交小波(SymN)、Coifmant小波(CoifN)、双正交样条小波(BiorN)、小波变换、小波系数、Harr小波基、DaubechiesD4&D8小波、小波基。

(3) curvelet基

(4) curvelet基、Curvelet基、curvelet、Curvelet系数、曲线波Curvelets

(5) 快速傅里叶变换基、FFT基、快速傅里叶变换(FFT)、Fourier变换、Fourier系数、傅里叶基、局部傅里叶基

(6) Gabor基、Gabor系数

(7) DWT基

(8) 沃尔什变换

(9) bandlet基

(10) Contourlet、轮廓波Contourlets

(11) 其它:全变差范数、冗余字典、过完备原子分解、正交级联字典、框架字典、字典学习

注意:上面分类中,第一类除第1个外其它都指的DCT;第二类应该大类是小波基,只是小波基分了不同的种类;第三类至第十类应该各自指的都是一个内容,第十一类感觉比较抽象不好说明白就不说了。其中第五类局部傅里叶基还不清楚和傅里叶基有什么区别(看名字应该是傅里叶基的部分列向量组成的???待考证!)。

2.2. 测量矩阵

压缩感知测量

给出观测模型y=ΦX时,要有怎么样的Φ(测量矩阵,也叫观测矩阵),通过什么样的方式可以从y中恢复出X。

然而,很多信号本身并非稀疏的(即若1.中的X不是稀疏信号),比如图像信号。此时需要对原始信号稀疏化,即“降维”处理:原始信号X是一个N*1的矩阵,即N*1的列向量。现对X进行“降维”处理,“降维”成M*1的矩阵(或者列向量)。具体方法是:

通过正交变换(即投影,即稀疏处理)Ψ(是一个稀疏基,也叫正交基,大小是N*N)

将信号投影到另外一个空间,这个投影起到了对原始信号进行稀疏处理的作用 。而在这个空间中,信号a=Ψ*x(analysis model)变得稀疏了(相当于信号x的本质没有改变,基(空间)改变了),此时a是稀疏信号。

然后我们可以由模型y=Φ*a,即y=Φ*Ψ*X,来恢复原始信号X。Φ是测量矩阵,或者叫做观测矩阵。

3. 信号恢复

后来,人们发现不仅仅能够通过正交变换可以将原始的非稀疏信号变换成稀疏信号;还可以通过一个字典D,得到稀疏信号x=D*a(synthesis model),a是稀疏的,为了增强变换后信号的稀疏性,通常D是过完备的。即

模型y=Φ*x=Φ*D*a       (3-1),

此时记A=Φ*D               (3-2),

即为感知矩阵。这个模型,是我们现在最常用的。

将②带入①,得:

y=A*a                           (3-3)

在式(3-1)和式(3-2)中,当矩阵D可逆的时候,后面两个模型等价。(常用的DCT变换,小波变换,双树小波变换,均满足此条件。)

第一个模型,只需考虑Φ的RIP;

模型二,由于我们通常不会再采样端对信号进行任何的稀疏变换,所以通常只是在理论上考虑;

模型三,不仅要求Φ的RIP,而且要求Φ和D极度不相干。

压缩感知的重构算法目前有以下几类:

3.1. BP和BPDN模型,利用线性和二次圆锥的方法高效求解,但是这样的凸规划问题在高维度的图像和视频中算法复杂度高;改进的基于gradient-descent methods来求解BPDN的方法在实际应用中比interior-point法快速,基于梯度的方法有iterative splitting and thresholding(IST),sparse reconstruction via separable approximation (SpaRSA),和gradient projection for sparse reconstruction (GPSR);

3.2. 贪婪算法,包括,matching pursuits,orthogonal matching pursuits (OMP) ,和compressive sampling matching pursuit (CoSaMP),在实际中,这些算法能够很好的较少算法复杂度,但是这是以降低重构图像质量为代价的;

3.3. 迭代阈值(Iterative-thresholding)法是贪婪算法的一种替代算法,迭代阈值算法通过连续投影和取阈值来产生 。这个过程是PL(Projected Landweber)算法的一个特例,它不仅能够降低算法复杂度,而且还可以结合一些额外的优化准则,如Wiener滤波,来提高图像恢复质量;

3.4. 基于图像结构的bayesian算法,对这个重构算法的了解相当少。。。

压缩感知的一般模型是酱子的
压缩感知_第2张图片

因为在压缩感知中,涉及图像的应用比较多,这里以X是图像信号来说明。
由于图像信号数据量非常大,所以在处理时,通常按或者按采样、重构。上图模型是以列为前提,来说明的。

  1. 采用光栅(光学部件)得到图像信号的一列;
  2. 利用观测矩阵,获得观测域信号;
  3. 传输到达重构端;
  4. 通过重构算法,恢复稀疏信号;(注意:恢复的稀疏信号和原始信号不可能完全相同,只能使恢复的信号趋近于原始信号)
  5. 将恢复的稀疏信号光栅反投射,放到相应的位置;
  6. 待所有列恢复后,做稀疏反变换,得到原始信号。

Rice大学单像素相机是一个典型的应用,原理结构是这样子的
压缩感知_第3张图片

  1. 图像经透镜投影到DMD;
  2. DMD上所有反射镜处于伪随机状态1,它们的状态构成观测矩阵的第一行;
  3. 经反射后的信号在单点传感器上重合,即产生相加效应,则本次观测得到观测值的第一行;
  4. 变换DMD反射镜状态,重复上面步骤M次,即构成观测矩阵Φ,等价于y=Φ*X;
  5. 图像重构端就是纯数学的问题了,利用上面提到的重构算法可以恢复原始图像。

多次随机采样?感觉没有这个必要。首先,每次随机采样能够重建图像的质量是一定的;其次,多次随机采样会增加采样端复杂度;再者,多次采样现实中你如何实现呢?

PS:我对multi-frame blind deconvolution不了解。

但是,我们可以在重构端对信号采用多假设,重叠分块重构的算法进行重构,这一算法可以很明显的改善图像恢复的质量。

以上。

转载于:https://my.oschina.net/wangsifangyuan/blog/1036623

你可能感兴趣的:(人工智能,python)