1. 程式人生 > >從計算機視覺的小白變為大神,你需要經歷這七個階段

從計算機視覺的小白變為大神,你需要經歷這七個階段

如果想要機器能夠進行思考,我們需要先教會它們去看。 

李飛飛——Director of Stanford AI Lab and Stanford Vision Lab

計算機視覺(Computer vision)是一門研究如何使機器“看”的科學,更進一步的說,就是指用攝影機和計算機代替人眼對目標進行識別、跟蹤和測量等機器視覺,並進一步做影象處理,用計算機處理成更適合人眼觀察或進行儀器檢測的影象。

學習和運算能讓機器能夠更好的理解圖片環境,並且建立具有真正智慧的視覺系統。當下環境中存在著大量的圖片和視訊內容,這些內容亟需學者們理解並在其中找出模式,來揭示那些我們以前不曾注意過的細節。 計算機視覺的實現基本過程為:

計算機從圖片中生成數學模型

計算機圖形在模型中對影象進行繪製,然後在影象處理過程中將其作為輸入,另外給出處理影象作為輸出 

計算機視覺的理念在某些方面其實與很多概念有部分重疊,包括:人工智慧、數字影象處理、機器學習、深度學習、模式識別、概率圖模型、科學計算以及一系列的數學計算等。因此,你可以將本文看成是深入這個領域研究的第一步。本文將盡量包涵到儘可能多的內容,但是可能仍然會存在一些較為複雜的主題,也有可能存在某些遺漏之處,敬請見諒。

丨第一步——背景 

通常來說,你應該具有一點相關的學術背景,比如上過有關概率學、統計學、線性代數、微積分(微分與積分)等相關課程,對矩陣計算有一定了解更好。另外,從我的經驗來看如果你對數字訊號處理有了解的話,在以後對於概念的理解來說會更加容易。 
在實現層面來說,你最好能夠會用MATLAB或者Python中的一種,一定要記住的是計算機視覺幾乎全部與計算機程式設計有關

。 

你也可以在Coursera上選修《概率繪圖模型》一課,這門課程相對較難(講得比較深入),你也可以在學習一段時間之後再對其進行了解。

丨第二步——數字影象處理 

觀看來自杜克大學的Guillermo Sapiro所教授的課程——《影象和視訊處理:從火星到好萊塢Image and Video Processing: From Mars to Hollywood with a Stop at the Hospital》,該課程所提供的教學大綱每章都是獨立的且包涵大量的練習,你可以在coursera和YouTube上找到相關的課程視訊資訊。另外你可以看下Gonzalez與Woods編寫的《數字影象處理(Digital Image Processing)》一書,使用MATLAB來執行其中所提到的範例,相信一定會有所獲。

丨第三步——計算機視覺 

一旦學習完有關數字影象處理有關內容,接下來應該瞭解相關的數學模型在各種影象和視訊內容中的應用方法。來自佛羅里達大學的Mubarak Shah教授在計算機視覺方面的課程可以作為一門很好的入門課程,其涵蓋了幾乎所有的基礎概念。 

觀看這些影片的同時,可以學習Gatech的James Hays教授的計算機視覺專案課程所使用的概念和演算法,這些練習也都是基於MATLAB的。千萬不要跳過這些練習,只有在真正的練習過程中才會對這些演算法和公式有更深入的瞭解。

丨第四步——高階計算機視覺 

如果你認真學習了前三步中的內容,現在可以進入到高階計算機視覺相關學習了。 
來自巴黎中央理工學院的Nikos Paragios和Pawan Kumar講授了一門人工視覺中的離散推理(Discrete Inference in Artificial Vision)課程,它能提供相關的概率圖形模型和計算機視覺相關的大量數學知識。

到現在這一步來看就比較有趣了,這門課程一定能讓你感受到用簡單模型構築機器視覺系統有多麼複雜。學完這門課程的話,在接觸學術論文之前又邁進一大步。

丨第五步——引入Python和開源框架 

這一步我們要接觸到Python程式語言。
就Python而言有許多像 OpenCV、PIL、vlfeat這樣的相關擴充套件包,現在就是將這些擴充套件包運用到你的專案中的最好時機。因為如果有其他的開源框架存在的話,沒有必要從頭開始來編寫一切內容。 
如果需要參考資料的話可以考慮《使用Python對計算機視覺進行程式設計 Programming Computer Vision with Python》,使用這本書就夠了。你可以動手去嘗試下,看看MATLAB和Python結合的話如何來實現你的演算法。

丨第六步——機器學習與CovNets(卷積神經網路) 

有關如何從頭開始機器學習的資料實在太多,你可以從在網上查詢到大量相關教程。

從現在開始最好一直使用Python進行程式設計,可以看下《使用Python建立機器學習系統——Building Machine Learning Systems with Python》和《Python機器學習——Python Machine Learning》這兩本書。 
目前深度學習正大行其道,可以試著學習卷積神經網路在計算機視覺中的應用( Computer Vision: the use of CovNets),在此推薦斯坦福的CS231n課程:針對視覺識別的卷積神經網路。 

丨第七步——如何才能更進一步 

行文至此,你可能會覺得已經講了太多的內容,需要學的已經太多。但是,你還可以進一步進行探索研究。 
其中一個方法是看看由多倫多大學的Sanja Fidler和James Hays所舉行的一系列研討會課程,能幫助你對當下計算機視覺研究方向的最新概念有所理解。 
另一種即跟著 CVPR、ICCV、 ECCV、 BMVC這些頂級學術會議的相關學術論文(也可關注雷鋒網(搜尋“雷鋒網”公眾號關注)的相關報道),通過會上的研討會、主旨演講以及tutorial等日程一定能學到不少知識。 

總結:如果你按照步驟一步步完成所有的學習任務,屆時你將大概瞭解計算機視覺中有關濾波器、特徵檢測、描述、相機模型、追蹤器的歷史,另外還學習到分割和識別、神經網路和深度學習的最新進展。希望本文能幫助你在計算機視覺領域走得更遠,學習得更加深入。

PS : 本文由雷鋒網獨家編譯,未經許可拒絕轉載!

題圖來自aitists.com