初識壓縮感知Compressive Sensing

原文地址:http://blog.csdn.net/abcjennifer/article/details/7721834

感覺非常棒,轉下來好好研究~~~



壓縮感知是近年來極爲熱門的研究前沿,在若干應用領域中都引起矚目。最近粗淺地看了這方面一些研究,對於Compressive Sensing有了初步理解,在此分享一些資料與精華。本文針對陶哲軒和Emmanuel Candes上次到北京的講座中對壓縮感知的講解進行講解,讓大家能夠對這個新興領域有一個初步概念。


compressive sensing(CS) 又稱 compressived sensing ,compressived sample,大意是在採集信號的時候(模擬到數字),同時完成對信號壓縮之意。中文的翻譯成“壓縮感知”,意思變得至少不太好理解了。


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.





/***********************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%的數據,直接去除冗餘信息不僅可以節省電池電量,還能節省空間




/***********************大牛介紹***********************/

陶哲軒澳籍華人數學家,童年時期即天資過人,目前主要研究調和分析偏微分方程組合數學解析數論表示論。24歲起,他在加利福尼亞大學洛杉磯分校擔任教授。他現在爲該校終身數學教授。

Emmanuel Candes (C牛)是斯坦福大學的數學、統計學,電子工程榮譽教授,同時也是應用計算數學領域的教授。他的 研究領域主要是在這種數學協調分析、數學優化、統計估測,以及在影像科學、信號研究。 Emmanuel Candes  授曾獲數項國際獎項,包括國家科學基金會最高個人獎項(該獎項主要獎勵 35 歲以下的學者)、 2008 年信息社 會理論論文獎,以及國際行業應用數學學會授予的獎項等等。

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),都是從數據本身的特性出發,尋找並剔除數據中隱含的冗餘度,從而達到壓縮的目的。這樣的壓縮有兩個特點:第一、它是發生在數據已經被完整採集到之後;第二、它本身需要複雜的算法來完成。相較而言,解碼過程反而一般來說在計算上比較簡單,以音頻壓縮爲例,壓制一個 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 l^1 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)。






/***********************CS的壓縮/解壓效果***********************/


由於剛剛看這一方面的資料,未免經驗不足,就借鑑了其他人(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 CandesTerence Tao

5. http://blog.163.com/gan_research/blog/static/16534814820107912256225/

6. C牛在Stanford的課程

7. 中國壓縮傳感資源(China Compressive Sensing Resources)

8.Using Math to Turn Lo-Res Datasets Into Hi-Res Samples  - Jordan Ellenberg 

([email protected]), an associate professor of mathematics at the University of Wisconsin, wrote about theNetflix Prize in issue 16.03.




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章