压缩感知是近年来极为热门的研究前沿,在若干应用领域中都引发瞩目。最近粗浅地看了这方面一些研究,对于Compressive Sensing有了初步理解,在此分享一些资料与精华。本文针对陶哲轩和Emmanuel Candes上次到北京的讲座中对压缩感知的讲解进行讲解,让你们可以对这个新兴领域有一个初步概念。css
compressive sensing(CS) 又称 compressived sensing ,compressived sample,大意是在采集信号的时候(模拟到数字),同时完成对信号压缩之意。中文的翻译成“压缩感知”,意思变得至少不太好理解了。html
Compressed sensing is a mathematical tool that creates hi-res data sets from lo-res samples. It can be used to resurrect old musical recordings, find enemy radio signals, and generate MRIs much more quickly. Here’s how it would work with a photograph.git
/***********************Compressive Sensing研究背景***********************/
算法
(1)CS大约是2000年左右的一篇博士论文中,已经出现了雏形。后来被陶哲轩,C牛(Emmanuel Candes)和D(Donoho)牛,完善理论。这几位顶尖高手联手挖出了信号处理领域、机器学习领域,近10年最大的学术大坑。
2004年左右,大牛们聊天,以为要起一个简单的名字,由于理论自己是“经过对信号的高度不完备线性测量的高精确的重建”,若是这样名字不响,不能起到理论推广做用。因此就成了如今的名字"compressive sensing"。安全
(2)陶哲轩,是这个世界上最聪明的人,他怎么会关注到CS呢?陶哲轩是这个世界上搞调和分析的顶尖高手之一(固然他别的方面也很厉害)。 压缩感知的发现是一次意外,话说一天,当时是加州理工学院教授(如今去了斯坦福)的Emmanuel Candès在研究名叫Shepp-Logan Phantom的图像,这种标准图像常被计算机科学家和工程师测试图像算法。Candès检查的图像质量很是差,充满了噪声,他认为名叫L1-minimization的数学算法能去除掉噪声条纹,结果算法真的起做用了,忽然就以为好神奇哦,“It was as if you gave me the first three digits of a 10-digit bank account number — and then I was able to guess the next seven,” he says. He tried rerunning the experiment on different kinds of phantom images; they resolved perfectly every time.。并且在图像变干净的同时,他发现图像的细节出人意料的完美起来。网络
某一日Candes去幼儿园接孩子,正好赶上了也在接孩子的陶哲轩,两人攀谈的过程当中他提到了本身手头的困难,因而陶哲轩也开始想这个问题,它们成为两人合做的压缩感知领域第一篇论文的基础。Emmanuel Candès认为压缩感知(简写CS)技术具备广阔的应用前景,好比MRI,数码相机。数码相机镜头收集了大量的数据,而后再压缩,压缩时丢弃掉90%的数据。若是有CS,若是你的照相机收集了如此多的数据只是为了随后的删除,那么为何不一开始就丢弃那90%的数据,直接去除冗余信息不只能够节省电池电量,还能节省空间。dom
/***********************大牛介绍***********************/机器学习
陶哲轩:澳籍华人数学家,童年时期即天资过人,目前主要研究调和分析、偏微分方程、组合数学、解析数论和表示论。24岁起,他在加利福尼亚大学洛杉矶分校担任教授。他如今为该校终身数学教授。ide
Emmanuel Candes (C牛)是斯坦福大学的数学、统计学,电子工程荣誉教授,同时也是应用计算数学领域的教授。他的 研究领域主要是在这种数学协调分析、数学优化、统计估测,以及在影像科学、信号研究。 Emmanuel Candes 教 授曾获数项国际奖项,包括国家科学基金会最高我的奖项(该奖项主要奖励 35 岁如下的学者)、 2008 年信息社 会理论论文奖,以及国际行业应用数学学会授予的奖项等等。wordpress
David Donoho WaveLab是小波和相关的时频变换的一个Matlab例程库,由美国斯坦福大学的donoho维护
/***********************基本思想***********************/
压缩感知的概念:
将未知的要得到的信号记为AK,它是一个波形。咱们但愿它越不连续越好,越扩散越好,而我所要作的是按照 必定的顺序得到图像信号的信息。咱们按照高斯分布来收集数据,而不是线性的,因此咱们只会有少许的感测次数,而这些数据 的相关性很是低。
压缩的意思,是指比较先前及当前数据的差别,并记录下这些差别而减小 需储存的资料量。对于压缩感知的问题比压缩难多了,像是咱们要收集怎样分布的数据、如何收集、保留一些什 么系数,从而获得最佳的结果。咱们会获得一些机变,保留最大的,最有意义的系数在里头。咱们能够作一些抽样,把最重要的保留下来。一个信号,咱们知道它是很是好的,但这个信号彻底是稀疏的,可能并非咱们要损失掉的。
对核磁共振的图像,来看一下这些系数, 6000 个不连续性系数,我说咱们只 要看 1800 不连续的测量,让咱们看有什么变化,让咱们看看重建后的图片,这些图片是很是接近真实图像的, 咱们能够用少于三倍或甚至四倍的测量次数而获得一个很是接近的结果。
感知压缩难点在于,压缩后的数据并非压缩前的数据的一个子集,并非说,原本有照相机的感光器上有一千万个像素,扔掉其中八百万个,剩下的两百万个采集到的就是压缩后的图像,──这样只能采集到不完整的一小块图像,有些信息被永远的丢失了并且不可能被恢复。
若是要想采集不多一部分数据而且期望从这些少许数据中「解压缩」出大量信息,就须要保证:第一:这些少许的采集到的数据包含了原信号的全局信息,第二:存在一种算法可以从这些少许的数据中还原出原先的信息来。
有趣的是,在某些特定的场合,上述第一件事情是自动获得知足的。最典型的例子就是医学图像成像,例如断层扫描(CT)技术和核磁共振(MRI)技术。对这两种技术稍有了解的人都知道,这两种成像技术中,仪器所采集到的都不是直接的图像像素,而是图像经历过全局傅立叶变换后的数据。也就是说,每个单独的数据都在某种程度上包含了全图像的信息。在这种状况下,去掉一部分采集到的数据并不会致使一部分图像信息永久的丢失(它们仍旧被包含在其它数据里)。这正是咱们想要的状况。
上述第二件事就要归功于陶哲轩和坎戴的工做了。他们的工做指出,若是假定信号(不管是图像仍是声音仍是其余别的种类的信号)知足某种特定的「稀疏性」,那么从这些少许的测量数据中,确实有可能还原出原始的较大的信号来,其中所须要的计算部分是一个复杂的迭代优化过程,即所谓的「L1-最小化」算法。
把上述两件事情放在一块儿,咱们就能看到这种模式的优势所在。它意味着:咱们能够在采集数据的时候只简单采集一部分数据(「压缩感知」),而后把复杂的部分交给数据还原的这一端来作,正好匹配了咱们指望的格局。在医学图像领域里,这个方案特别有好处,由于采集数据的过程每每是对病人带来很大麻烦甚至身体伤害的过程。以 X 光断层扫描为例,众所周知 X 光辐射会对病人形成身体损害,而「压缩感知」就意味着咱们能够用比经典方法少得多的辐射剂量来进行数据采集,这在医学上的意义是不言而喻的。
/***********************基本概念详细说明举例***********************/
本部分为陶哲轩在一篇blog中对于comprehensive sensing 文章翻译过来的精华部分,提取了重点,并加入了一些理解,这里用来解释CS的概念堪称经典。
相机的用途,天然是记录图像。为了简化论述,咱们把图像假设成一个长方形阵列,好比说一个1024×2048像素的阵列(这样就总共是二百万像素)。为了省略彩色的问题(这个比较次要),咱们就假设只须要黑白图像,那么每一个像素就能够用一个整型的灰度值来计量其亮度(例如用八位整型数表示0到255,16位表示0到65535)。接下来,按照最最简化的说法,传统相机会测量每个像素的亮度(在上述例子中就是二百万个测量值),结果获得的图片文件就比较大(用8位灰度值就是2MB(1024*2048*8b),16位灰度就是4MB)。数学上就认为这个文件是用超高维矢量值描绘的(在本例中就是约二百万维),进行。
在我开始讲“压缩感知”这个新故事以前,必须先快速回顾一下“老式压缩”的旧故事。(已经了解图像压缩算法的读者能够跳过这几段。)
老式压缩:
怎么样压缩图像?方式多种多样,其中有些很是先进,不过我来试试用一种不过高科技的(并且也不太精确的)说法来描述一下这些先进技术。图像一般都含有大片无细节部分–好比在风景照里面,将近一半的画面均可能被单色的天空背景占据。咱们假设提取一个大方块,比方说100×100像素,其中彻底是同一颜色的——假设是全白的吧。无压缩时,这个方块要占10000字节存储空间(按照8位灰度算);可是咱们能够只记录这个方块的维度和坐标,还有填充整个方块的单一颜色;这样总共也只要记录四五个字节,省下了可观的空间。不过在现实中,压缩效果没有这么好,由于表面看来没有细节的地方实际上是有着细微的色差的。因此,给定一个无细节方块,咱们记录其平均色值,就把图片中这一块区域提取出来,只留下微小的残余偏差。接下来就能够继续选取更多无细节的方块,抽象成单色色块。最后剩下的是亮度(色彩强度)很小的,肉眼没法察觉的细节。因而就能够抛弃这些剩余的细节,只须要记录那些“可见”色块的大小,位置和亮度。往后则能够反向操做,重建出比原始图像质量稍低一些,占空间却小得多的复制图片。
其实上述的算法并不适合处理颜色剧烈变更的状况,因此在实际应用中不颇有效。事实上,更好的办法不是用均匀色块,而是用“不均匀”的色块——比方说右半边色彩强度平均值大于左半边这样的色块。这种状况能够用(二维)Haar小波系统来描述。后来人们又发现一种”更平滑的”小波系统更可以避免偏差,不过这都是技术细节,咱们就不深刻讨论了。然而全部这些系统的原理都是相同的:把原始图像表示为不一样“小波(相似于上文中的色块)”的线性叠加,记录显著的(高强度的)小波的系数,放弃掉(或者用阈值排除掉)剩下的小波系数。这种“小波系数硬阈值”压缩算法没有实际应用的算法(好比JPEG 2000标准中所定义的)那么精细,不过多少也能描述压缩的广泛原理。
整体来说(也是很是简化的说法),原始的1024×2048图像可能含有两百万自由度,想要用小波来表示这个图像的人须要两百万个不一样小波才能完美重建。可是典型的有意义的图像,从小波理论的角度看来是很是稀疏的,也就是可压缩的:可能只须要十万个小波就已经足够获取图像全部的可见细节了,其他一百九十万小波只贡献不多量的,大多数观测者基本看不见的“随机噪声”。(这也不是永远适用:含有大量纹理的图像–好比毛发、毛皮的图像——用小波算法特别难压缩,也是图像压缩算法的一大挑战。But that is another story。)
接下来呢,若是咱们(或者不如说是相机)事先知道两百万小波系数里面哪十万个是重要的,那camera就能够只计算这十万个系数,别的就无论了。(对于单个系数的计算,能够在图像上应用一种合适的filter“滤波器”或叫mask“滤镜/掩模”,而后计量过滤出来的每一个像素的色彩强度)可是,相机是不会知道哪一个系数是重要的,因此它只好计量所有两百万个像素,把整个图像转换成基本小波,找出须要留下的那十万个主导基本小波,再删掉其他的。(这固然只是真正的图像压缩算法的一个草图,不过为了便于讨论咱们仍是就这么用吧。)
PS: 经典的数据压缩技术,不管是音频压缩(例如 mp3),图像压缩(例如 jpeg),视频压缩(mpeg),仍是通常的编码压缩(zip),都是从数据自己的特性出发,寻找并剔除数据中隐含的冗余度,从而达到压缩的目的。这样的压缩有两个特色:第1、它是发生在数据已经被完整采集到以后;第2、它自己须要复杂的算法来完成。相较而言,解码过程反而通常来讲在计算上比较简单,以音频压缩为例,压制一个 mp3 文件的计算量远大于播放(即解压缩)一个 mp3 文件的计算量。
那么,现在的数码相机固然已经很强大了,没什么问题干嘛还要改进?事实上,上述的算法,须要收集大量数据,可是只须要存储一部分,在消费摄影中是没有问题的。尤为是随着数据存储变得很廉价,如今拍一大堆彻底不压缩的照片也无所谓。并且,尽管出了名地耗电,压缩所需的运算过程仍然算得上轻松。可是,在非消费领域的某些应用中,这种数据收集方式并不可行,特别是在传感器网络中。若是打算用上千个传感器来收集数据,而这些传感器须要在固定地点呆上几个月那么长的时间,那么就须要尽量地便宜和节能的传感器——这首先就排除了那些有强大运算能力的传感器(然而——这也至关重要——咱们在接收处理数据的接收端仍然须要现代科技提供的奢侈的运算能力)。在这类应用中,数据收集方式越“傻瓜”越好(并且这样的系统也须要很强壮,好比说,可以忍受10%的传感器丢失或者各类噪声和数据缺损)。所谓的「压缩感知」,也就是说,直接感知压缩了的信息。
压缩感知:
这就是压缩感知的用武之地了。其理论依据是:若是只须要10万个份量就能够重建绝大部分的图像,那何须还要作全部的200万次测量,只作10万次不就够了吗?(在实际应用中,咱们会留一个安全余量,好比说测量30万像素,以应付可能遭遇的全部问题,从干扰到量化噪声,以及恢复算法的故障。)这样基本上能使节能上一个数量级,这对消费摄影没什么意义,对感知器网络而言却有实实在在的好处。
不过,正像我前面说的,相机本身不会预先知道两百万小波系数中须要记录哪十万个。要是相机选取了另外10万(或者30万),反而把图片中全部有用的信息都扔掉了怎么办?
※※※※※※※※※※※※※※※
解决的办法简单可是不太直观。就是用非小波的算法来作30万个测量——尽管我前面确实讲太小波算法是观察和压缩图像的最佳手段。实际上最好的测量其实应该是(伪)随机测量——好比说随机生成30万个滤镜(mask)图像并测量真实图像与每一个mask的相关程度。这样,图像与mask之间的这些测量结果(也就是“相关性”)颇有多是很是小很是随机的。可是——这是关键所在——构成图像的2百万种可能的小波函数会在这些随机的mask的测量下生成本身特有的“特征”,它们每个都会与某一些mask成正相关,与另外一些mask成负相关,可是与更多的mask不相关。但是(在极大的几率下)2百万个特征都各不相同;这就致使,其中任意十万个的线性组合仍然是各不相同的(以线性代数的观点来看,这是由于一个30万维线性子空间中任意两个10万维的子空间几乎互不相交)。所以,理论上是有可能从这30万个随机mask数据中恢复图像的(至少能够恢复图像中的10万个主要细节)。简而言之,咱们是在讨论一个哈希函数的线性代数版本。
PS: 这里的原理就是说,若是3维线性子空间中的任意两个2维子空间是线性相关的话,好比:
①3x+2y=8
②6x+4y=16
③4x+5y=10
中,①②就是线性相关的,①③不是线性相关的。将200万个小波函数降维到30万个掩模基的过程就是相似去掉①②中冗余基的过程。
然而这种方式仍然存在两个技术问题。首先是噪声问题:10万个小波系数的叠加并不能彻底表明整幅图像,另190万个系数也有少量贡献。这些小小贡献有可能会干扰那10万个小波的特征,这就是所谓的“失真”问题。第二个问题是如何运用获得的30万测量数据来重建图像。
咱们先来关注后一个问题(怎样恢复图像)。若是咱们知道了2百万小波中哪10万个是有用的,那就可使用标准的线性代数方法(高斯消除法,最小二乘法等等)来重建信号。(这正是线性编码最大的优势之一——它们比非线性编码更容易求逆。大多数哈希变换其实是不可能求逆的——这在密码学上是一大优点,在信号恢复中却不是。)但是,就像前面说的那样,咱们事前并不知道哪些小波是有用的。怎么找出来呢?一个单纯的最小二乘近似法会得出牵扯到所有2百万系数的可怕结果,生成的图像也含有大量颗粒噪点。要否则也能够代之以一种强力搜索,为每一组可能的10万关键系数都作一次线性代数处理,不过这样作的耗时很是恐怖(总共要考虑大约10的17万次方个组合!),并且这种强力搜索一般是NP完备的(其中有些特例是所谓的“子集合加总”问题)。不过还好,仍是有两种可行的手段来恢复数据:
•匹配追踪:找到一个其标记看上去与收集到的数据相关的小波;在数据中去除这个标记的全部印迹;不断重复直到咱们能用小波标记“解释”收集到的全部数据。
Matching pursuit: locate a wavelet whose signature seems to correlate with the data collected; remove all traces of that signature from the data; and repeat until we have totally “explained” the data collected in terms of wavelet signatures. 就是先找出一个貌似是基的小波,而后去掉该小波在图像中的份量,迭代直到找出全部10w个小波.
•基追踪(又名L1模最小化):在全部与(image)数据匹配的小波组合中,找到一个“最稀疏的”基,也就是其中全部系数的绝对值总和越小越好。(这种最小化的结果趋向于迫使绝大多数系数都消失了。)这种最小化算法能够利用单纯形法之类的凸规划算法,在合理的时间内计算出来。
Basis pursuit (or minimisation): Out of all the possible combinations of wavelets which would fit the data collected, find the one which is “sparsest” in the sense that the total sum of the magnitudes of all the coefficients is as small as possible. (It turns out that this particular minimisation tends to force most of the coefficients to vanish.) This type of minimisation can be computed in reasonable time via convex optimisationmethods such as the simplex method.
须要注意到的是,这类图像恢复算法仍是须要至关的运算能力的(不过也还不是太变态),不过在传感器网络这样的应用中这不成问题,由于图像恢复是在接收端(这端有办法链接到强大的计算机)而不是传感器端(这端就没办法了)进行的。
如今已经有严密的结果显示,对原始图像设定不一样的压缩率或稀疏性,这两种算法完美或近似完美地重建图像的成功率都很高。匹配追踪法一般比较快,而基追踪算法在考虑到噪声时则显得比较准确。这些算法确切的适用范围问题在今天仍然是很是热门的研究领域。(说来遗憾,目前尚未出现对P不等于NP问题的应用;若是一个重建问题(在考虑到测量矩阵时)是NP完备的,那它恰好就不能用上述算法解决。)
因为压缩感知仍是一个至关新的领域(尤为是严密的数学结果刚刚出现),如今就指望这个技术应用到实用的传感器上还为时尚早。不过已经有概念验证模型出现了,其中最著名的是Rice大学研制的单像素相机。
最后必须提到的是,压缩感知技术是一种抽象的数学概念,而不是具体的操做方案,它能够应用到成像之外的许多领域。如下只是其中几个例子:
• 磁共振成像(MRI)。在医学上,磁共振的工做原理是作许屡次(但次数还是有限的)测量(基本上就是对人体图像进行离散拉东变换(也叫X光变换)),再对数据进行加工来生成图像(在这里就是人体内水的密度分布图像)。因为测量次数必须不少,整个过程对患者来讲太过漫长。压缩感知技术能够显著减小测量次数,加快成像(甚至有可能作到实时成像,也就是核磁共振的视频而非静态图像)。此外咱们还能够以测量次数换图像质量,用与原来同样的测量次数能够获得好得多的图像分辨率。ps:在C牛的video中也有提到
•天文学。许多天文现象(如脉冲星)具备多种频率震荡特性,使其在频域上是高度稀疏也就是可压缩的。压缩感知技术将使咱们可以在时域内测量这些现象(即记录望远镜数据)并可以精确重建原始信号,即便原始数据不完整或者干扰严重(缘由多是天气不佳,上机时间不够,或者就是由于地球自传使咱们得不到全时序的数据)。
•线性编码。压缩感知技术提供了一个简单的方法,让多个传送者能够将其信号带纠错地合并传送,这样即便输出信号的一大部分丢失或毁坏,仍然能够恢复出原始信号。例如,能够用任意一种线性编码把1000比特信息编码进一个3000比特的流;那么,即便其中300位被(恶意)毁坏,原始信息也能彻底无损失地完美重建。这是由于压缩感知技术能够把破坏动做自己看做一个稀疏的信号(只集中在3000比特中的300位)。
许多这种应用都还只停留在理论阶段,但是这种算法可以影响测量和信号处理中如此之多的领域,其潜力实在是振奋人心。笔者本身最有成就感的就是能看到本身在纯数学领域的工做(例如估算傅立叶子式的行列式或单数值)最终具有造福现实世界的前景。
/***********************CS研究内容***********************/
研究压缩感知的内容有几块呢?
(1)压缩感知理论,好比测量矩阵,重建性能分析,测量数据量化影响;
(2)优化算法,本质上是重建算法优化,好比线性规划(LP)、贝叶斯优化等等;
(3)实际的应用,压缩?后处理?分类?等等
The main theoretical findings in this recent field have mostly centered on how many multiplexed measurements are necessary to reconstruct the original signal and the attendant nonlinear reconstruction techniques needed to demultiplex these signals.
最近的理论研究主要集中在 ①须要多少多维测度才能重建原始信号 ②分解信号所需的非线性重建技术;还有可以直接进行多维信号选择的感知硬件(sensing hardware)。
因为刚刚看这一方面的资料,未免经验不足,就借鉴了其余人(Ganer)在该领域的探究结果,他的博客中写到:
不少mpressive sensing的实际用于信号采集效果其实并非很好。
就从个人实验而言,对于图像压缩甚至会差的很,远远低于传统的压缩方式。
那就不难有学者发出感叹,实际上compressive sensing 就是depressive sensing了。
个人理解是什么呢?有2点紧紧记住的
(1)compressive sensing其实是对信号采集的颠覆性的理论,打破了乃奎斯特采样(也称香农采样)。
实际上,大部分信号是稀疏的,没有必要用乃奎斯特采样,进行时间离散化。
注意两点:(1)乃奎斯特采样对信号没有稀疏性的假设;
(2)CS对信号有稀疏性假设,既K稀疏;
那么,信号采集过程也就是说从A2D,变成了A2I。
可是在实际应用角度,2者结合会有很大的收益。(我的观点)
(2)compressive sensing本事是最大后验(MAP)解码,这点比传统的方式要更为”先进“,也更为”危险“。
关于Compressive Sensing更多的学习资料将继续更新,敬请关注本博客和新浪微博Sophia_qing。
References:
1. Compressed sensing and single-pixel cameras - Terrytao
2. 斯坦福大学Emmanuel Candes教授:压缩感知 video2
3. An Introduction to Compressed Sensing (斯坦福课程,可根据syllabus分块啃食)
4.Near Optimal Signal Recovery From Random Projections: Universal Encoding Strategies?-Emmanuel Candes, Terence Tao
5. http://blog.163.com/gan_research/blog/static/16534814820107912256225/
7. 中国压缩传感资源(China Compressive Sensing Resources)
8.Using Math to Turn Lo-Res Datasets Into Hi-Res Samples - Jordan Ellenberg
(ellenber@math.wisc.edu), an associate professor of mathematics at the University of Wisconsin, wrote about theNetflix Prize in issue 16.03.