关于计算机视觉(随谈)
關于計算機視覺(隨談)
zouxy09@qq.com
http://blog.csdn.net/zouxy09
?
? ? ? ?之前看了這么一本說自然圖像統計學的書,本來是想著要好好看,然后每天翻譯幾頁的。但實習的時候太忙了,沒有什么時間,所以只把目錄給翻譯了,哈哈。這本書叫:Natural Image Statistics: A Probabilistic Approach to Early Computational Vision大家可以瞧瞧。不過,看到里面視覺概述的時候,自己也想扯扯點東西,按捺不住,就吐了不少文字。如果有什么不對的地方,也還希望大家不吝指正,謝謝。
?
一、什么叫視覺Vision?
? ? ? ?什么叫視覺?可能這個問題的第一反應就是:不就是看東西么。好吧,那么高大上的問題就被這么輕描淡寫了。看東西不是目的,目的是看到后知道是個什么東西,然后基于這種物體與事件的聯系服務于高層意識理解。哈哈,瞬間檔次又拉上去了。個人淺見,目前大體視覺可以分為生物視覺和機器視覺。生物視覺就是有眼睛的動物能什么看東西的。例如喵星人、汪星人還有地球人啥的。每種動物的視覺感官不同,能感受的光波長也不同。我們如果可以知道它們是怎么工作了,就可以借鑒著做出具有類似強大功能的設備了。這其中涉及到的東西有很多,它們的視覺流是怎樣的?包含怎么接受光信號的輸入,到如何逐級的提取信息,再到高層的推理,還有高層到底層的反饋等等。有的已經被解密了,有的還猶抱琵琶半遮面,也的神秘依舊。遺憾的是,后者的比重更大。
? ? ? 目前來說,大家最感興趣的還是人的視覺系統。它實在是太強大了,但卻又太神秘,使得眾多探秘者傾注心血也只能窺知一二。不過也還是有令人欣慰的消息可以傳出,然后對某些成果,也有種能用之一二,受用一生的感覺。哈哈。
? ? ? ?人腦中大約70%的信息是來自于眼睛。大概20-30%的皮層區域是拿來做視覺處理的。生物視覺的最終目標還是想把人的視覺系統徹底告破于天下。嗯,理想是應該豐滿點。那機器視覺又是啥呢?就是機器看東西嘛。因為內在的平臺還是計算機,所以叫計算機視覺。Computer Vision!它屬于人工智能里面很核心的一部分。機器要像人一樣,會看,會聽,會說,會學習,會思考等等。其中,像人一樣,視覺的信息的比重依舊是最大的。所以計算機視覺的重要性毋庸置疑。計算機視覺研究的終極目標也是如何讓機器具有人一樣的視覺!這聽起來就挺難的是嗎?嗯,之前人工智能的發展實在太緩慢了,近幾年Deep Learning的出現、大數據和大機器的支撐才給人工智能的發展稍微推進了一段距離,但還有很遠的路要走。很遠。
? ? ? ?好了,視覺是啥?視覺就是看東西,呃,不是很專業。視覺是為了獲取關于環境中物體和事件的信息,從物體發射或者反射出來的光中提取信息的過程。所以我們第一件需要考慮的事情是,這些信息在什么形式的時候才是有效的?
? ? ? ?物體發出或者反射的光會被收集和度量,當然了,這里沒有特定任務的信息提取的處理。生物視覺系統和人工視覺系統都通過同一種方式來完成這第一個步驟,也就是將這些光投影到一個二維的圖像中。對于人眼和攝像頭,雖然存在不少差別,但圖像信息的處理基本是相同的。通過非常多的感光的細胞或者感光的原件接受光,然后將這些光的強度變成一個二維圖像。然后圖像的每個點的光強度就保存了某種信息。
? ? ? ?一般來說,投影圖像還具有時間和彩色的維度。但我們大部分關注靜態和灰度的圖像。這個圖像可以表示為二維的標量函數I(x,y),也就是給定每個位置(x,y),會得到一個對應的灰度值I(x,y)。盡管位置和灰度值都應該是連續的,但典型的情況是離散采樣。也就是說x和y是整數,而灰度值在每個點采樣。在數字系統中,采樣一般也是矩形。但實際上,生物系統中的空間采集采樣并不是矩形的,甚至是無規律的。
? ? ? ?視覺就是從這種圖像數據中提取信息的。物理環境的信息包含在這個圖像中的,但很遺憾,是隱含著的。視覺系統必須將這種隱含的信息變換成明確的形式,例如識別環境中的物體。但這不是一件容易的事情。
?
二、人類視覺系統的魔法
? ? ? ?視覺是個非常棘手的任務。盡管這對搞視覺的人來說沒什么可以驚訝的,但對其他人來說,他們可能會覺得非常驚訝,他似乎沒有意識到自己與生俱來的雙眼是如此的強大和不可復制。因為他幾乎毫不費力的無時無刻的既有效又快速執行這個任務。但實際上在你看我的文字的時候,你大腦的整個計算過程是非常復雜的,但可惜呀,我們一般只在乎這個結果,大腦直接給我們它的計算結果,而沒有告訴我們它完成這個是多么的辛苦。默默無聞,以使得被忽略和遺忘。
? ? ? ?為了說明視覺的難度,我們看下圖。其實一個度量后的圖像就是這樣子的,每個空間位置有個光的強度值。那請你告訴我,下面這幅圖像是個啥?你可以破解嗎?
? ? ? ?OK,我知道這個對大家很難,那我們看看他究竟是啥,我們把每個方塊的數字換成同等幅度的灰度。瞬間清晰了,有木有,這是一張男人的臉!雖然眼睛接收到的就是上面的那些類似數字之類的東西,但我們的視覺系統把這些數字都變得有意義了,然后發現了真實世界的物體。
? ? ? ?到目前為止,我們做了大量慘絕人寰的簡化。實際上人的視網膜的光接收器是可以接收不同波長的光的,同時我們一般是雙眼看世界,而不是只用一個。還有一個最大的差別是,我們是看動態的圖像,而不是靜態的。相機是一次成像,而人眼則是眼睛和大腦的組合,眼睛持續不斷把圖像信息傳遞給大腦,并且眼睛在不挺的轉動,讓高分辨率的感應區域掃過對象的各個細節。大腦把所獲得的信息進行動態累加,就得到了我們所感覺到的圖像了。你驚呼,差點被忽悠了。但這些差別并沒有改變一個事實,就是光信息的確是通過上圖那么的數據展示的。所以視覺系統的使命就是讀懂這些數據。
? ? ? ?大部分凡人都會同意說,這些任務剛看起來會很難,但經過一定的思考后,就會覺得應該沒那么難吧?圖像灰度的邊緣不是可以檢測出來嗎?只要找到小數字和大數字相鄰的地方就是邊緣了呀。嗯,是的,邊緣特征檢測的方法目前已經可以公式計算和實現了。那邊緣得到了,將這些邊緣片段連接到一起,那物體的輪廓或者說某種直觀的物體表達形式是不是就出來了呢?嗯,你是聰明的,這種直觀的想法造就了目前很多計算機視覺的算法。很遺憾的是,這些算法在一些合成圖像或者一些在高度限制環境中的圖像才有好的表現,但對于無約束的自然圖像來說,他們的表現就很一般。經過多年的研究,有一個結論:real-world images is extremely difficult!就算是找到物體輪廓這樣一個任務也變得非常困難,因為一般物體的輪廓在物理世界中是不夠清晰的,如下圖:
? ? ? ?這不就是一個杯子嗎?你看,你看,你就只在乎結果!!!我們慢慢分析下嘛。圖中放大了兩個地方,一個是本來杯子有邊緣的地方,在圖像中卻沒有了邊緣,因為背景和杯子很像,邊緣不清晰了。另一個是本來杯子沒有邊緣的地方,在圖像中因為光照的關系,卻變得有邊緣了。這無中生有,有中化無,大自然的招數,怎么破!
? ? ? ?也許這還不能說服你。我們看看下圖。我們教小孩子識圖的時候,是不會拿個這么變態的圖來嚇他的。但不拿這個給你看,是說服不了你的。說服什么?就一點:視覺有多難,你的視覺系統有多牛掰!
? ? ? ? 我們再看看下面的人臉:
? ? ? ? 不要驚訝。實際上一個小孩在六歲之前,就已經認識一萬到三萬類的物體了。而這個物理世界,大約也就是三萬種物體。你說,目前的算法如何才能夠強大到囊括這三萬種物體(包括能識別它們在所有環境下的所有形態)。那你會想,那人為什么可以呢?你終于問出這個問題了,累覺不愛。因為人有種能從少量樣本學習的能力!一類物體,變化萬千。但人只要認識其中一兩個,剩下的就不攻自破了。融會貫通,舉一反三,乃人類與生俱來的才能!說這個好像又沒什么實際意義,是吧。要怎么利用這個來指導目前的視覺才是王道。但鄙人才疏學淺,往下就講不了了。這也是生物視覺和機器視覺研究者窮盡一生想要共同探索的神秘世界。希望有生之年,能瞥見這美麗的星空吧。
? ? ? ?我有時候會想。人從呱呱墜地開始,花了六年的時間,來建立自己強大的大腦,也就是硬件設施。在這里,我還是要對人腦的硬件設備驚嘆一番。據了解(這三個字就表示了不知道對不對,呵呵),人腦的CPU主頻是320GHZ,目前電腦因為半導體工藝的限制,能做到3GHZ左右每個CPU核。所以咱們搞個300個CPU就可以了么?NO,NO。要運算,每個CPU之間還得通信,訪問內存數據等,這些通信帶寬的限制才是這種大集群的最大瓶頸。但人腦呢?它的存儲體您得按斤算,哈哈。據猜測(哈哈,這算嚴謹么),人腦存儲大概10^15GB,這還不是牛的,最牛的來了,這些空間可以作為內存和緩存使用!不要問我這代表什么了!懷疑懷疑為什么自己老忘記前天老師上課講的東西,我昨天還記得的啊,怎么就忘了呢,這海馬體廢了么!哈哈,可能是忘了保存到硬盤了!然后大腦一死機,就沒有了!所以記得每天要記得好好吃飯,補充能量。再來膜拜下人眼。人眼是很不可思議的精密系統,它能自動對焦,曝光自動補償,自動運動模糊處理,目前所有讓凡人窮三代的單反都望塵莫及的!還包括免費贈送的夜視功能……最神奇的是,實現這些功能,不需要升級windows和安裝任何驅動,不需要耗電!每個人出生的時候就被裝配了所有這些功能。所以在這里也呼吁大家好好珍愛如此高檔的設備吧,追劇不要太晚,打游戲不要太晚,上班看電腦多用眼藥水,哈哈。
? ? ? ?扯遠了。回來說說大腦的系統和軟件吧。我們除了睡覺的時間,每時每刻都在接收輸入,然后通過自己強大的硬件設施來處理輸入。非常關鍵的一點是,大腦里面會慢慢的建立歷史學習到的東西的知識關聯庫。隨著知識的擴充與完善,大腦的網絡越來越復雜。神經元個數,神經元連接的個數,千絲萬縷卻又理不清。但對于計算機呢?我們的硬件設施呢?最牛掰的就是超算了。我們也建立了一個很大的網絡,與人的大腦相當的網絡,然后期待著幾天、幾個月的時間就可以讓我們的計算機能達到人腦的水平,這會不會太苛刻了呢?當然了,這其中有幾點不公平對比的差別。一是大腦的高層結構和運作機制實際上是不清晰的,所以目前計算機所做的高層模擬是否與大腦高層類似,這個也沒有答案。二是到底是計算機快還是人腦快?做同樣的事情,超算運作需要消耗一個城市一個月的電量,但人腦只需要你吃個雞腿補充下就好了。OK,what is your point?! I am Sorry!
? ? ? ?生物上的啟發對計算機視覺的研究者是非常重要的。很多視覺的處理過程和算法就是模擬生物視覺系統來進行設計的,而且也顯示出了有效性。但到目前為止,人類對自身大腦所知還是九牛一毛,更談不上對視覺更有力的指導了。但實際上,視覺計算理論和生物界實驗沒有什么誰靠誰,誰欠誰的說法。這里面官方點算就是相輔相成:視覺計算理論可以指導生物實驗性研究,實驗性研究結果又可以指導計算理論的研究。
? ? ? ?好了,不說了。
總結
以上是生活随笔為你收集整理的关于计算机视觉(随谈)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习中的范数规则化之(二)核范数与规
- 下一篇: 在Github上搭建Jekyll博客和创