初識壓縮感知Compressive Sensing

壓縮感知是近年來極爲熱門的研究前沿,在若干應用領域中都引發矚目。最近粗淺地看了這方面一些研究,對於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 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 

(ellenber@math.wisc.edu), an associate professor of mathematics at the University of Wisconsin, wrote about theNetflix Prize in issue 16.03.

相關文章
相關標籤/搜索