CS231n 2017 Lecture 1: Course Introduction 隨堂筆記

本筆記中的所有取自課件的多媒體版權屬於斯坦福大學。


這節課包含兩個部分,一個是計算機視覺的簡要歷史,一個是CS231n這個課程的概述。

計算機視覺,顧名思義就是針對視覺數據的研究,在過去短短几年視覺數據量在爆炸性地增長,這很大程度得益於世界上許多的感測器,根據思科2015年的一個研究估計到2017年互聯網上大約80%的流量都是視頻。但是視覺數據很難理解,有時候會把它稱為互聯網的暗物質,演算法很難去探知和理解網路上的視覺數據。在YouTube上,大概每秒鐘會有長達5小時的內容會被上傳到這個視頻網站。雖然谷歌有很多員工,但也無法對這些數據一一進行標註。如果他們想要對視頻進行分類並為觀眾推薦相關的視頻,這就開發觀測並且理解這些視覺數據的技術。

計算機視覺是一個跨學科的領域,涉及到了如下的科學和工程技術的很多不同的領域。

計算機視覺可以追溯到5.43億年前,當時地球上沒有什麼陸地,當時的物種都是在水裡生活,同時它們沒有眼睛。到了公元前5.40億年前,動物學家從化石的研究發現,物種出現了爆發性的增長的原因是由物種在進化的過程中出現了眼睛從而有了視覺功能,從此視覺成為了動物最重要的感知系統。

照相機最早要追溯到17世紀文藝復興時期的暗箱,這是一種通過小孔成像的相機,這和動物早期的眼睛非常相似,通過小孔接受光線。

生物學家也開始研究視覺的機理,其中最具影響力的並啟發了計算機視覺的一項研究是五六十年代Hubel和Wiesel使用電生理學的研究。他們想了解哺乳動物的視覺處理機制是怎麼樣的,他們使用和視覺處理與人類相似的貓來研究。他們把電極插入貓後腦的初級視覺皮層,想了解知道什麼樣刺激會使皮層神經的激烈反應。當細胞朝某個特定方向運動時,對面邊緣產生回應的細胞。雖然還有其他複雜的細胞,但是總的來說他們發現視覺處理是始於視覺世界的簡單結構,面向邊緣並沿著視覺處理的途徑移動,大腦建立了複雜的視覺信息直到它可以識別更為複雜的視覺世界。

計算機的視覺的歷史從60年代開始,Larry Roberts的被稱為第一篇計算機視覺的博士論文中,視覺世界被簡化為簡單的幾何形狀,目的是能夠識別它們並對其進行重建。

1966年MIT創建了一個關於計算機視覺的暑假夏令營,目標是構建視覺系統的重要組成,50年後雖然仍未能清楚人類的視力機制,但是計算機視覺已經成長為AI發展最快的領域。

另外一個MIT的視覺科學家David Marr,他在70年代撰寫了一本關於如何理解並如何開發使計算機可以識別世界的演算法的著作。

他在書中指出,為了拍攝一副圖像並獲得視覺世界的最終3D表現,需要以下過程:原始草圖,大部分邊緣、端點、虛擬線條、曲線和邊界等都被用其他元素表示。這是受到了神經科學家的啟發,Hubel和Wiesel指出視覺處理的早期階段有很多關於像邊緣的簡單結構,然後邊緣和曲線的下一步是所謂的「2.5D草圖」,即將表面深度信息層和視覺場景的不連續性拼湊在一起的,最後將上述的所有元素拼接在一起,並在表面和體積圖等分層組織一個3D模型。這種理想化的思維方式實際上在計算機視覺領域影響了幾十年,同時這也是一個非常直觀的方式來考慮如何解構視覺信息。

在70年有開創性的工作組提出了一個問題:如何越過簡單的塊狀世界,開始識別現實世界的對象,當時幾乎沒有任何數據可用,計算機的性能也遠不如現在。但是計算機科學家開始思考如何識別和表示對象。斯坦福大學的兩個科學家都提出了類似的想法,一個是廣義圓柱體,一個是圖形結構。它們的基本思想是每個對象都有簡單的幾何圖單位組成,例如一個人可以通過廣義圓柱的形狀拼接在一起或者有一些關鍵元素按照不同的間距組合在一起,兩個想法都是將複雜的結構簡化為更簡單的形狀和幾何結構。

到了80年代,David Lowe考慮重建或者識別由簡單的物體結構組成的視覺空間,他嘗試通過線和邊緣的組合來識別剃鬚刀(課件中展示的是識別硬幣)。

所以在60到80年代的科學家都努力試圖去思考計算機視覺的任務是什麼,要解決物體識別的問題非常難。Fei-Fei剛才介紹的都是非常有野心的嘗試,但是他們僅僅停留在簡單樣本的階段,這些想法沒有產生很大的進展。後來人們轉換思想,既然目標識別太難了,那不如先做目標分割,這個任務就是把一張圖片中的像素點歸類到有意義的區域,我們可能不知道這些像素點組合到一起是個人,但是可以將屬於人的像素點從背景中抽取出來,這個過程就是圖像分割。

另外有一個問題比其他計算機視覺問題有進展,就是面部檢測。在1999到2000期間,統計機器學習方法加速方法,出現例如SVM,boosting和圖模型方法。其中Paul Viola和Micheal Jones是用AdaBoost演算法進行實時面部檢測,雖然在當年計算機性能還是一般,但是仍然能夠實現准實時的面部檢測。在他們的論文發表後的第五年,富士公司推出第一個可以實現實時面部檢測的數碼相機。

關於如何才能做到更好的目標識別,在90年代末到2000年的前十年有一個非常有影響力的思想方法是基於特徵的目標識別。David Lowe完成了一個影響深遠的工作,叫做SIFT特徵。思路就是去匹配整個目標,例如用一個STOP標識去匹配另外一個STOP標識是非常困難的,因為有很多UR相機的角度、遮擋、視角、光線以及目標本身的內在變化等變化的因素。但是從中可以得到一些啟發,就是通過觀察目標的某些部分和特徵在變化中具有的表現性和不變性。所以目標識別的首要任務就是在目標上確認這些關鍵的特徵,然後把這些特徵與相似的目標進行匹配,這比匹配整個目標要容易很多。這裡有一張論文中圖,途中的一個STOP表示中有一些SIFT特徵能夠被識別。

使用相同的構成要素特徵,圖片中的表現特徵,這個領域的另一個進展是識別整幅圖的場景,這裡有個叫空間金字塔匹配的演算法例子,背後思想是圖片中有各種特徵,而這些特徵可以告訴我們這是風景還是廚房;這個演算法從圖片的各個部分各像素抽取特徵並把他們放在一起作為一個特徵描述,然後使用特徵描述跑SVM模型。

有個在人類認知方面很類似的工作,例如這些特徵放在一起以後,研究如何在實際圖片中比較合理地設計和辨別人體姿態,下圖是被稱為方向梯度直方圖的工作。

從60年代一步步走到現在,圖片的質量變得越來越高,隨著互聯網和數碼相機的發展,計算機視覺的研究也有了更好的數據。在本世紀初,計算機視覺提出了一個重要的基本問題,這個問題不僅要解決目標識別。雖然目標識別一直在提,但是最近10幾年才有標註的數據集來衡量目標識別的成果,其中一個最有影響力的標註數據集是PASCAL Visual Object Challenge。這個數據集由20個類別組成,每個類別都有成千上萬張圖片組成。圖表列舉了從2007到2012年的目標檢測效果,這可以看到效果是在穩步提升,每年都有很大的進展。

另外一個就是普林斯頓和斯坦福提出了一個更加的困難的問題:是否具備了識別真是世界的每一個物體的能力。傳統的統計學習方法在訓練過程中會出現過擬合,部分原因是因為可視化的數據集過於複雜,而正因為特徵複雜,模型的維度往往會非常高,有很多參數需要調參;當訓練的數據量不夠的時候,很快就會產生過擬合,這樣模型就很難泛化。這就有了兩個動力,一是想要簡單地識別事物,二是要回歸到機器學習並解決機器學習中過擬合的問題。

然後有了IMAGENET這個項目,這個龐大的數據集由將近1500萬甚至4000萬多的圖片,分成22000類的物體或者場景,它將目標檢測的演算法的發展推到一個新的高度。尤其重要的是如何推動這個基準測試的進展,所以從2009年開始IMAGENET團隊組織了IMAGENET大規模視覺識別競賽,這個比賽中用到的是一個更加嚴格篩選的測試集,總共1000個類別140萬張圖片來測試計算機視覺演算法。

下面是示例圖片和演算法,如果一個演算法能識別出概率最大的5個類別,其中有正確的對象就認為是識別成功。

下面是挑戰賽從2010到2015年圖像分類結果的統計,橫軸是比賽年份,縱軸是錯誤率。2012年的AlexNet演算法極大地降低了錯誤率,而到了2015年ResNet演算法的出現,錯誤率為3.57,比人類的的水平5.1還低。

這個課程第一個關注的重點是圖像分類,可以應用到現實當中的各種物體的識別;對於目標檢測是在要畫出邊框說明框裡面有人或者鎚子,並標示出這些東西在圖像中的位置;Image Caption,就是根據圖片來生成圖片的文字描述。

圖像識別的步驟是首先計算一些特徵,然後計算局部不變特徵和一些池化操作,再經過多層處理後將結果傳遞給線性SVM,這裡仍然使用了層次結構和檢測邊界,仍然有不變特徵的概念,所有這些直覺信息也會在CNN中使用。到了2012年的AlexNet才是真正的突破,這個一個7層卷積的神經網路,之後CNN的發展就是變得越來越深,2014年的GoogleNet和VGG有19層網路,到了2015年的ResNet更是有152層。

雖然CNN在近年來取得了巨大的成功,但是Yann LeCun在1998年就已經使用CNN進行手寫數字識別,將其應用於自動識別手寫支票以及郵局地址,當時使用CNN網路結構和AlexNet非常相似。既然當時的演算法已經那麼成功,那為什麼直到近幾年才流行起來。一個重要的因素是計算能力的大幅提升,現在更是有了GPU這種圖像處理單元,GPU具有超高的並行計算能力,正式因為如此現在人們才能夠去研究更大的模型和架構。另外一個因素是互聯網時代產生的了大量數據,深度學習需要大量的標註數據,ImageNet這樣的龐大的優秀的標註數據是促成計算機視覺演算法快速發展的原因。

現在不只是解決圖像分類和目標檢測問題,還有更多的挑戰性問題,例如語義分割和知覺分組,這沒有對圖片打上標籤,實際上是要理解圖中的每個像素是什麼和代表了什麼。還有很多的為解決的任務,又例如動作識別,例如給出了人物的視頻,什麼才是識別當中人物動作的最佳方式。然後隨著繼續發展,像增強現實和虛擬現實這些隨著新技術和新型感測器的出現,這些非常具有挑戰性的問題也能得到解決。

接下來Justin介紹了他在實驗室的工作,這個數據集叫視覺基因組,他們嘗試在現實世界中捕獲這些錯綜複雜的東西,而不是僅僅框定出物體。我們應該描述出圖像作為整個大圖形語義相關的概念,而不僅包括對象的身份,還要包括對象關係、對象屬性以及場景中發生的動作。這種表達可能允許我們使用簡單的分類去捕獲一些豐富的視覺世界中的簡單的東西。Justin表示這不是一種標準的方法,只是讓大家體會視覺系統可以做很多的事情。

另外一個是FeiFei在研究生時候的研究,他們找了一些人並向其他人展示了這個圖片30秒,雖然這個時間很多,但是人們依然能夠寫出關於這張圖片的長長的描述段落。如果給這些人更多的時間去看這張圖片,老師表示根據每個的儲備知識和過往經驗,寫出更加豐富的描述。這在某種程度上式計算機視覺領域聖杯,以一種非常深刻的方式去理解一張圖片的故事。所以儘管在過去幾年中已經取得了巨大的進步,但是距離這個聖杯還是有很長的路要走。

再一個例子是Karpathy的博客中的一張圖片,這是一張挺有喜感的照片,在照片中有一個人站在體重秤上,然後奧馬巴在他後面用腳去壓體重秤,這會讓體重秤的讀數變大。這張圖片中蘊含了太多的信息,計算機視覺如果要有如此深刻圖像理解仍然有很長的路要走。


推薦閱讀:

深入理解GoogLeNet結構(原創)
Caffe2 教程--5. A Toy Regression
圖解Faster R-CNN簡單流程
腦洞大開的機器視覺多領域學習模型結構 | CVPR 2018論文解讀
寫給那些準備入坑機器學習、計算機視覺、深度學習等相關領域的人,包括:讀研、轉行等不同人群,同行勿噴

TAG:深度學習DeepLearning | 計算機視覺 |