CS231n課程總結:Lecture1
斯坦福大學的CS231n課程的主要內容是計算機視覺(computer vision),或者說是影象識別( visual recognition),演算法主要關注CNN(convolutional neural network)或者說泛指的深度學習。計算機視覺是一門很強的交叉學科,生物學、心理學、物理學、工程和數學等等。第一節課的主要內容有兩個,一是研究計算機視覺的重要性,二是計算機視覺的發展簡史。
計算機視覺的重要性
研究計算機視覺的重要性源自現在無處不在的攝像頭以及大眾對於視覺資訊的青睞,視訊和影象資訊佔據了網際網路上流量的大部分,而且視訊和影象資訊增長迅速。講者將網際網路上的視訊資訊比喻成黑洞,意指體量大但是蘊涵其中的內容難以觀測和分析。另外,計算機視覺也支撐著機器生產力的提高以及人工智慧的普及。
計算機視覺簡史
生物視覺(biological vision)的發展
大約543百萬年前,地球上的古老生物還沒有眼睛,在大海中張著嘴漫遊,那時地球上可能只有幾種生物。澳大利亞一位生物學家Anderw Parker在化石中發現了第一個擁有眼睛的生物,這個生物的時間大約在540百萬年前,而後的一千萬年間地球上的生物發生了指數式的增長,生物學家稱之為生物進化的大爆炸(Big Bang of Revolution),此前關於此次生物大爆炸的猜測理論有很多,在發現了這隻帶眼睛的生物後,這位生物學家提出了一個理論:因為生物進化出眼睛,生物中的撲食者和獵物之間的活動開始變得更加積極(preactive),由此導致了生物進化速度的加快,生物數量從幾個增長到千百萬。到今天,在人類身上,視覺已經發展成為最大的感官系統(sensor system),視覺皮層(visual cortex)大約佔據了大腦皮層的一半。可見視覺系統對於生物發展的重要性。
機器視覺(mechanical vision)的發展
人類在機器視覺上最早的嘗試應該是暗箱成像,成像的原理是針孔成像,與生物眼睛的成像原理有相同之處。後來這種暗箱進一步發展,增加了雙凸透鏡、光圈和感光材料等等,經過幾代技術革新就發展成今天的相機。
計算機視覺(computer vision)的發展
Huble和Wiesel於1959年
人類對於視覺形成原理的探索應該在很早就開始了,最早的一個具有里程碑意義的實驗發生在1959年[1][2],生物學家Huble和Wiesel將電極植入貓的視覺皮層,並在貓的眼前投影各種線條和形狀,他們發現貓的視覺平層中一些細胞會對特定的線條、形狀或者角度敏感,他們將這些細胞稱之為“small cell”,而還有一些“complex cell”可以檢測特定的edge(與位置無關)或者特定的移動方向。後來這個實驗的結論被不斷總結為:視覺神經系統對事物複雜的表示來源於簡單的特徵,也就是一種層層抽象的表示方法。下圖為原文中兩個結論的截圖。
Larry Roberts於1963年
他是第一篇計算機視覺博士論文的作者。在他的論文中,世界被簡化為簡單的幾何圖形,研究的目標是識別這些幾何圖形並且重組出這些圖形(the world is simplified into simple geometric shapes and the goal is to able to recognize them and reconstruct what these shapes are)。
MIT於1966年
MIT(Massachusa Institute of Technology)的summer project,旨在希望在幾個月內研究出視覺感知的機理,當然了這個目標很激進,至今我們都沒將這一問題參透。
David Marr於1970s
David Marr提出了視覺神經系統認知的過程,第一階段是primal sketch,包含邊緣、線條、條紋、界限和線條等等,第二階段是2+1/2D,第二階段可以分清整塊的表面、深度和層次等等(piece together the surfaces, the depth information, the layers, or the discontinuities of the visual scene) ,第三階段是3D抽象,層次化的表面和體積元資訊(hierarchically organized in terms of surface and volumetric primitives)
Brook和Binford於1979年以及Fischler and Elschlager於1973年
分別提出對複雜物體的抽象描述的理論,分別為:generalized cylinder和pictorial structure
David Lowe於1980s
David Lowe嘗試運用線條和線條的組合來重組所見的圖形
以上從60s-80s年代,計算機視覺的發展主要體現在理論猜想上,還是基於人的所見來分析神經系統的處理過程, 不是對相機拍攝得到影象資料的分析(當然了,那個時間也沒有數字的圖片資訊),後來還有人提出影象分割的理論,試圖通過色彩資訊先進行影象分割再進行識別,這也基本停留在猜想階段。
機器學習的發展
1990s到2010s之間機器學習演算法的發展尤其是統計機器學習(statistical machine learning),比如支援向量機SVM、boosting和graphical models等,機器學習在計算機視覺領域一個成功的案例就是人臉識別,Paul Viola和Michael Jones於2001年提出運用Adaboost演算法進行實時的人臉識別,並且FujiFilm公司運用這一演算法在2006年產出了可以實時識別人臉的相機,實現了快速的成果轉化。另外指的一提的是當時卷積神經網路已經被提出了,是在1998年由Yan Lecun等人提出,用來對郵票上的字元進行識別,當時神經網路在功能上根本無法與傳統的機器學習演算法抗衡,幾乎奄奄一息。經過Yan Lecun等人的不懈堅持,神經網路演算法終於迎來了豐富快速的計算資源以及大量的資料集,在2012年通過AlexNet(另外有個名字是supervision)打了一場翻身仗,自此開始迎來了蓬勃發展的時代。
David Lowe於1999年
提出了基於特徵的影象識別,也就是SIFT(scale-invariant feature transform),尺度不變特徵轉換。基於特徵的影象識別的內涵是一種事物的影象無論在角度、光線、變形和遮擋等變數影響下還會有一些典型特徵(critical feature)是不變的(some features that tend to remain diagnostic and invariant to changes),通過將影象的這些典型特徵提取出來進行特徵對比要優於對整個影象進行模式對比(pattern comparison)
資料集的發展
為了評估計算機視覺的發展,以及得益於網際網路的發展,開始出現作為計算機視覺演算法測試激勵的資料集。從2007-2012比較有影響的是PASCAL visual object challenge,後來就是李飛飛教授帶領團隊完成的ImageNet資料集。課程中李飛飛教授講了兩點製作這個資料集的目的,一是測試機器學習演算法能否識別世界萬物;二是將機器學習演算法拉回來面對過擬合的問題。
計算機視覺的發展任重道遠
在CNN的推動下,計算機視覺在某些情況下的識別精度和速率已經可以和人類不相上下,但是計算機視覺還處在初級階段,計算機視覺在對影象資訊的理解上還與人類有較大差距,人類看見一幅圖可以產生很多符合情境的猜測,但是計算機還不能,相比於人類,計算機視覺要顯得呆板很多,另外計算機視覺在識別中的功耗以及必須的計算資源也是一個問題。
[1]: Receptive fields of single neurons in the cat’s striate cortex
[2]: Receptive fields, binocular interaction and functional architecture in the cat’s visual cortex