1. 程式人生 > >七步帶你認識計算機視覺(Computer Vision)

七步帶你認識計算機視覺(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等日程一定能學到不少知識。 

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

相關推薦

認識計算機視覺Computer Vision

如果想要機器能夠進行思考,我們需要先教會它們去看。  李飛飛——Director of Stanford AI Lab and Stanford Vision Lab 計算機視覺(Computer vision)是一門研究如何使機器“看”的科學,更進一步的說,就是

認識計算機視覺 作者:李尊 2016-08-10 18:30

七步帶你認識計算機視覺(Computer vision) 如果想要機器能夠進行思考,我們需要先教會它們去看。  李飛飛——Director of Stanford AI Lab and Stanford Vision Lab 計算機視覺(Computer vision)是一門研究如何使機器“看”

10認識大資料和雲端計算,圖文並茂讓不再蒙圈

第一步:大資料 “大資料”這個概念是近幾年開始火起來的,現在可謂是無處不在了。在瞭解什麼是大資料之前,我們先了解一下什麼是傳統資料? 傳統資料就是IT業務系統裡面的資料,如客戶資料、財務資料等。這些資料是結構化的,量也不是特別大,一般只是TB級。對比傳統資料,還有一種叫“新資料”,是來源於社

微專案:一使用SpringBoot入門

最近放假了,休息的時候不忘寫個小專案來玩玩。 如果有需要一起手動做專案的朋友可以和我一起做這個小專案。 做到哪隨心所欲。也就一週的事哈哈。 *** 開發環境 JDK1.8 JetBrain InteliJ 傻瓜式啟動專案 開啟newProject 然後單擊Spring Initializr然後一直next

微專案:一使用SpringBoot入門

今天我們來使用JPA做分頁專案並且做講解 如果是新來的朋友請回上一篇 上一篇:微專案(一) maven整合 在pom檔案的dependencies依賴中匯入以下依賴 <dependency> <groupId>org.springframewor

計算機視覺ComputerVision, CV相關領域的站點鏈接

條碼識別 航空航天 類信息 模型生成 win public 語言識別 don char 關於計算機視覺(ComputerVision, CV)相關領域的站點鏈接,當中有CV牛人的主頁。CV研究小組的主頁,CV領域的paper,代碼。CV領域的最新動態。國

機器學習與計算機視覺深度學習

【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】       要說很多現在最火的AI是什麼,那就是深度學習。那麼深度學習和機器學習有什麼關係呢?我們可以通過一問一答的形式來解決。   1

德國計算機視覺研究機構及企業computer vision

Humboldt U Berlin: Visual Computing (Eisert)Heinrich-Hertz-Institut Berlin: Image Processing LabU Bochum: Neuroinformatik (v.d. Mahlsburg, Schöner, früher

機器學習與計算機視覺darknet編譯

【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】       曾經有一段時間,我自己很喜歡閱讀程式碼,但是對編譯程式碼不是很有興趣。這其實是本末倒置的做法。真正去學一門語言或者一個開源軟體,必須去實際操作

構建一個MPU6050I2C類驅動

1 i2c基本協議和時序 i2c基礎的知識這裡就不提了,直接從時序開始,直接來看看i2c的波形 2 i2c子系統軟體框架 先來看看i2c匯流排的分層思想: 在分層圖中我們可以看到,driver和device在核心層中分別成為了2條連結串列,核心層會按一定的

寫SAP RFC 實戰專案

函式目的:OA通過讀取採購訂單號獲取物料號最近5次變價記錄,結果如圖1-1所示   1)  通過TCode:SE37,我們既可以進入RFC的開發初始介面,如圖1-2所示。 2)  與Report不同的是,新建RFC程式前必須先定義一個FuncitonGroup,一個Gr

獨家 | 10分鐘上手TensorFlow實踐附程式碼

原文標題:TensorFlow Tutorial: 10 minutes Practical T

關於計算機視覺隨談

關於計算機視覺(隨談)       之前看了這麼一本說自然影象統計學的書,本來是想著要好好看,然後每天翻譯幾頁的。但實習的時候太忙了,沒有什麼時間,所以只把目錄給翻譯了,哈哈。這本書叫:Natural Image Statistics: A Probabilistic App

計算機視覺深度學習校招記錄CNN的特點以及優勢

1. 區域性感知 : 通過在底層的區域性掃描獲得影象的區域性特徵,然後在高層綜合這些特徵獲取影象的全域性資訊。作用:降低引數的數目。 2.  權值共享  : CNN中每個卷積核裡面的引數即權值,原始圖片卷積後會得到一副新的圖片,而新圖中的每個畫素都來自同一個卷積核,這就是權

計算機視覺:特徵檢測/提取feature detection/extraction

關鍵點檢測和匹配流水線四個階段 一、背景知識 1. 影象特徵 2. 數字函式的一階導數和二階導數 3. 導數與影象特徵關係 二

認識Oracle索引型別

Oracle索引和MySQL索引是一個概念,都是為了提高資料庫查詢效率,例如字典的目錄,就是一種索引。不同的索引有不同的查詢效率,比如字典的目錄有以拼音首字母的,有偏旁部首的。當我們對所有索引型別有了瞭解之後,就可以針對性的寫出高效的SQL語句、建立最合適的索引。 那Oracle索引都有

計算機視覺

影象描述:    Demo:   https://vimeo.com/146492001  http://cs.stanford.edu/people/karpathy/neuraltalk2/demo.html 二。最新的方法概述:    1. Neur

實現自定義圓形進度條詳解

        每次看到別人做出炫酷的都會想,這個應該很難吧?這是心理上先入為主的就這麼認為了,其實實現很簡單,下面一步一步的詳細剖析自定義圓形進度條的步驟。 首先看效果圖: 篇幅有點長,耐心看完肯定get新技能。 看每一個檢視都包含了些什麼。 最

計算機視覺:構建兩層的神經網路來分類Cifar-10資料集

1 - 引言 之前我們學習了神經網路的理論知識,現在我們要自己搭建一個結構為如下圖所示的神經網路,對Cifar-10資料集進行分類 前向傳播比較簡單,就不在贅述 反向傳播需要注意的是,softmax的反向傳播與之前寫的softmax程式碼一樣。神經網路內部的反向傳播權重偏導就是前面

完成支付寶支付功能的整合超詳細

首先說說筆者的整合經歷,一開始整合時,像往常一樣百度了一下整合的方法,然後出來一大堆結果,以為應該會很簡單,然而事實卻並非如此。網上的整合方法很多都是舊版本的整合,現在支付寶已經對sdk以及demo進行了更新,雖說和舊版差別不是很大,不過對於不瞭解整個流程的開發