2018年10月5日 星期五

.七步帶你認識電腦視覺

What is Computer Vision?




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

李飛飛——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等日程一定能學到不少知識。 

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

沒有留言:

張貼留言