[CS131] Lecture 1 Course Introduction課程介紹
[CS131] Lecture 1 Course Introduction課程介紹
課件為本人上計算機視覺這門課的時候進行的翻譯 因為翻譯水平有限可能會有部分翻譯錯誤 如需原始課件請聯絡博主
下載地址
ppt https://download.csdn.net/download/baidu_31657889/11057200
筆記和課後作業 https://download.csdn.net/download/baidu_31657889/11057207
或者搜尋微信公眾號:“計算機視覺這件小事"或者"AI-ming3526” 回覆"cs131"免費獲取
1、什麼是計算機視覺?
1.1定義
計算機視覺可以定義為從數字影像中提取資訊的科學領域。從影像中獲得的資訊型別可能與識別、導航空間測量或擴增實境應用程式不同。
另一種定義計算機視覺的方法是通過它的應用。計算機視覺正在構建能夠理解影像內容並將其用於其他應用程式的演算法。我們將在第4節中詳細介紹應用計算機視覺的不同領域。
計算機視覺的起源可以追溯到麻省理工學院的一個本科生暑期專案,在1966年[4]。當時人們認為計算機視覺可以在一個夏天解決,但是我們現在有一個50年曆史的科學領域,這個領域還遠未得到解決。
圖一:(外黑) 物理學 生物學 心理學 電腦科學 數學 工程學
(內紅) 光學 影像處理 語音,神經語言學 機器人 機器學習 資訊檢索 系統,建築學 演算法,理論 認知 神經系統科學
計算機視覺處於多學科交叉領域
1.2 一個跨學科的領域
計算機視覺集合了大量的學科。神經科學可以通過首先理解人類視覺來幫助計算機視覺,我們將在第2節中看到這一點。計算機視覺可以看作是電腦科學的一部分,演算法理論或機器學習對於開發計算機視覺演算法是必不可少的。
在本課程中,我們將展示圖1中的所有欄位是如何連線的,以及計算機視覺如何從這些欄位中獲得靈感和技術。
1.3難題
計算機視覺已經有50年沒有得到解決,並且它仍然是一個非常困難的問題。這是我們人類無意識地做的事情,但這對電腦來說真的很難。
作詩比下棋難 1997年,IBM超級計算機“深藍”首次擊敗世界象棋冠軍加里·卡斯帕羅夫。今天,我們仍在努力創造出能輸出結構良好的句子的演算法,更不用說詩歌了。這兩個領域之間的差距表明,人類所謂的智力通常不是評估計算機任務難度的好標準。深藍通過暴力搜尋在數百萬種可能性中獲勝,並不比卡斯帕羅夫更聰明。
視覺比三維建模困難 今天,要建立一個精確到毫米的物體三維模型比建立一個能識別椅子的演算法要容易得多。目標識別是一個非常困難的問題,雖然我們正在接近人類的準確性。
為什麼如此之難? 計算機視覺是困難的,因為畫素和意義之間有很大的差距。計算機所看到的200×200 RGB影像是一組120,000的值。從這些數字到有意義的資訊是非常困難的。可以說,人類大腦的視覺皮層解決了一個同樣困難的問題:理解投射在視網膜上並轉化為神經元訊號的影像。下一節將展示研究大腦如何幫助計算機視覺。
2、理解人類的視覺
解決計算機視覺的第一個想法是理解人類視覺是如何工作的,並將這些知識轉移到計算機上。
2.1 視覺的定義(攝像機+電腦 人眼+人腦)
無論是電腦還是動物,視覺可以歸結為兩個部分。
首先,感測裝置從影像中獲取儘可能多的細節。眼睛會捕捉來自虹膜的光線,投射到視網膜上,視網膜上的特殊細胞會通過神經元將資訊傳遞給大腦。攝像機以類似的方式捕獲影像並將畫素傳輸到計算機。在這一部分,相機比人類更好,因為他們可以看到紅外線,看得更遠或更精確。
第二,口譯工具必須處理資訊並從中提取意義。人類的大腦在大腦的不同區域用不同的步驟來解決這個問題。計算機視覺在這一領域仍然落後於人類。
2.2 人類視覺系統
1962年,Hubel & Wiesel[3]試圖通過記錄神經元,同時給貓看明亮的線條來理解貓的視覺系統。他們發現,只有當這條線位於視網膜上的某個特定位置,或者它有特定的方向時,一些特定的神經元才會被啟用。
他們的研究開啟了理解人類視覺系統的科學之旅,這個系統至今仍然活躍。
由於他們的工作,他們在1981年被授予諾貝爾生理學和醫學獎。宣佈之後,Hubel博士說:
有傳言說大腦無法理解自己。這就好比一個人試圖靠自己的力量提升自己。我們認為這是無稽之談。我們可以像研究腎臟一樣研究大腦。
2.3 人類的視覺系統有多好?
速度:人類的視覺系統是非常有效的。由於識別威脅並迅速作出反應對生存至關重要,數百萬年來進化完善了哺乳動物的視覺系統。
人類視覺系統的速度已經被測量到[7]到150ms左右,從一個正常的自然場景中識別出一個動物。圖2顯示了大約150ms後,大腦對動物和非動物影像的反應是如何分化的。
愚弄人類 然而,這種速度是以一些缺點為代價的。改變影像中不相關的小部分,如水的反射或背景,可能會被忽略,因為人類的大腦關注的是影像[5]的重要部分。如果訊號非常接近背景,就很難檢測和分割影像的相關部分。
上下文 人類總是使用上下文來推斷影像的線索。先前的知識是最難融入計算機視覺的工具之一。人類使用上下文來知道在哪裡聚焦影像,知道在特定位置會發生什麼。環境也能幫助大腦補償陰影中的顏色。然而,語境可以用來愚弄人的大腦
2.4從大自然來的教訓
模仿鳥類並不會導致人類登上飛機。簡單地模仿自然並不是學習飛行的最好方法,也不是最有效的方法。但是研究鳥類讓我們理解空氣動力學,理解升力這樣的概念讓我們能夠建造飛機。(我們現在的飛機並不是像鳥那樣可以煽動翅膀進行飛行的 而是學習鳥類飛行習慣之後進行改良出來的)
智力也是如此。即使在今天的技術下,模擬整個人類大腦來創造智慧是不可能的,但這仍然不是達到這一目標的最佳途徑。然而,神經科學家希望對視覺、語言和其他智力形式背後的概念有所瞭解。
3、從影像中提取資訊
我們可以把從計算機視覺影像中獲得的資訊分為兩類:測量資訊和語義資訊。
3.1視覺作為測量裝置
在未知位置導航的機器人需要能夠掃描周圍環境來計算最佳路徑。利用計算機視覺,我們可以測量機器人周圍的空間,並繪製出它所處環境的地圖。
立體相機像我們的兩隻眼睛一樣,通過三角測量提供深度資訊。立體視覺是計算機視覺的一個大領域,目前有很多研究試圖在給定立體影像的情況下建立一個精確的深度圖。
如果我們增加視點的數量以覆蓋物件的所有邊,我們可以建立一個表示物件[2]的3D表面。一個更具挑戰性的想法可能是通過搜尋這個紀念碑[1]的谷歌影像的所有結果來重建一個紀念碑的3D模型。
在抓取方面也有研究,計算機視覺可以幫助理解物體的三維幾何形狀,從而幫助機器人抓取物體。通過機器人的攝像頭,我們可以識別並找到物體的手柄,推斷出它的形狀,從而使機器人找到一個好的抓取位置[6]。
3.2語義資訊來源
在測量資訊之上,影像包含大量的語義資訊。我們可以給影像中的物體加上標籤,給整個場景加上標籤,識別人,識別動作,手勢,臉。
醫學影像還包含大量的語義資訊。計算機視覺有助於根據皮膚細胞的影像進行診斷,例如判斷它們是否癌變。
4、計算機視覺應用程式
攝像頭無處不在,上傳到網際網路上的圖片數量呈指數級增長。我們在Instagram上有圖片,在YouTube上有視訊,有安全攝像頭,有醫學和科學圖片……計算機視覺是必不可少的,因為我們需要對這些影像進行分類,使計算機能夠理解它們的內容。以下是計算機視覺的一些非詳盡的應用。
特效 形狀和動作捕捉是像《阿凡達》這樣的電影中使用的新技術,通過記錄人類演員的動作使數字角色動起來。為了做到這一點,我們必須在3D空間中找到演員面部標記的準確位置,然後在數字化身上重新建立它們。
三維城市建模 用無人機在城市上空拍照可以用來渲染城市的3D模型。計算機視覺是用來將所有的照片組合成一個三維模型。
場景識別 有可能認出照片是在什麼地方拍的。例如,地標的一張照片可以與谷歌上的數十億張照片進行比較,以找到最佳匹配。然後我們可以確定最佳匹配並推斷照片的位置。
人臉檢測 多年來,人臉檢測一直被用於照相機中,以獲得更好的照片和對人臉的聚焦。微笑檢測可以讓相機在拍攝物件微笑時自動拍照。人臉識別比人臉檢測更困難,但是以今天的資料規模,像Facebook這樣的公司能夠取得非常好的業績。最後,我們還可以利用計算機視覺進行生物識別,使用獨特的虹膜模式識別或指紋。
光學字元識別 計算機視覺最古老的成功應用之一是識別字元和數字。這可以用來讀取郵政編碼或車牌。
移動可視搜尋 使用計算機視覺,我們可以使用影像作為查詢在谷歌上進行搜尋。
自動駕駛汽車 自動駕駛是計算機視覺最熱門的應用之一。特斯拉(Tesla)、谷歌或通用汽車(General Motors)等公司競相成為第一家生產全自動汽車的公司。
自動收銀 Amazon Go是一種沒有收銀臺的新型商店。通過計算機視覺,演算法可以準確地檢測出你買了什麼產品,並在你走出商店時向你收費。
應用互動 微軟的Kinect可以實時捕捉動作,允許玩家通過動作直接與遊戲互動。
擴增實境 目前AR也是一個非常熱門的領域,多家公司都在競爭提供最好的移動AR平臺。蘋果在6月份釋出了ARKit,它已經擁有了令人印象深刻的應用程式。
虛擬現實 VR使用的是與AR類似的計算機視覺技術,演算法需要知道使用者的位置,以及周圍所有物體的位置。隨著使用者的移動,所有內容都需要以一種現實而流暢的方式進行更新。
相關文章
- cs231n lecture1 introduction
- 課程介紹
- MIT6.S081 - Lecture1: Introduction and ExamplesMIT
- OpenGL Android課程五:介紹混合(Blending)Android
- 0章 RxJava2課程目錄介紹RxJava
- OpenGL Android課程六:介紹紋理過濾Android
- OpenGL Android課程四:介紹紋理基礎Android
- 快速高效學習 Kotlin | Kotlin Bootcamp 課程介紹Kotlinboot
- [Nvidia Triton Inference Server課程筆記] 1.1.1 框架介紹Server筆記框架
- go 併發程式設計案例一 課程介紹Go程式設計
- 【譯】WebSocket協議第一章——介紹(Introduction)Web協議
- BUU BURP COURSE 1
- BUU XSS COURSE 1
- Python入門課程—最詳細的Python庫介紹Python
- 入門全棧Java程式設計師——課程介紹全棧Java程式設計師
- 微課sql最佳化(1)、基礎概念介紹SQL
- Python-VidGear模組翻譯系列-01-Introduction介紹Python
- 1 Introduction to the Multitenant ArchitectureNaN
- 平行計算與並行程式設計課程內容介紹並行行程程式設計
- BookKeeper 介紹(1)--簡介
- 課程 3: Content Providers 簡介IDE
- ET介紹——CSharp協程CSharp
- 創作課程和SCORM的強大工具iSpring Suite詳細介紹ORMSpringUI
- 做一個有產品思維的研發:全部課程介紹
- 開源公開課丨大資料排程系統 Taier 任務排程介紹大資料AI
- Lecture_Neural Networks Part 1
- 軟工開課介紹部落格軟工
- 1. VUE介紹Vue
- 零基礎創作專業wordpress網站01-課程介紹網站
- python暑期課程 day1Python
- 1、Oracle 基礎介紹Oracle
- Docker_Docker介紹1Docker
- Ansible(1)- 簡單介紹
- Laravel: Up and Running (1):介紹Laravel
- CS131 homework1 使用numpy實現卷積卷積
- HSQL 資料庫介紹(1)--簡介SQL資料庫
- OpenGL Android課程七:介紹Vertex Buffer Objects(頂點緩衝區物件,簡稱:VBOs)AndroidObject物件
- Java課堂 自我介紹思維導圖Java