從特徵描述符到深度學習:計算機視覺發展20年
從特徵描述符到深度學習:計算機視覺發展20年
轉載:http://cs2.swfc.edu.cn/~zyl/?p=2184
Author: Tomasz Malisiewicz
翻譯:趙毅力(panovr at gmail dot com)
我們都知道在過去兩年(2012-2014年)深度卷積神經網路在目標檢測與識別的基準測試中有過輝煌的成績,所以你可能會問:在此之前的物體識別技術是什麼樣子?早期識別系統的設計和現代以多層卷積為基礎的框架之間的關係是什麼?
讓我們先來回顧一下過去20年裡計算機視覺研究中的一些重要理論和方法。
1995年至2000年:區域性特徵描述符的崛起
1999年當英屬哥倫比亞大學教授大衛·羅伊(David Lowe)提出SIFT(尺度不變特徵變換的縮寫,Scale Invariant Feature Transform)演算法後,計算機視覺研究的世界幾乎在一夜之間發生了改變。SIFT是一種對影象塊進行比較和匹配的魯邦解決方案。在大衛·羅伊沒有提出SIFT演算法之前,人們通常只使用SSD(平方距離的總和)作為影象塊比較的距離度量標準,對此並沒有太多的考慮。
SIFT描述符計算方法:梯度方向和規範化技巧
SIFT又被稱為區域性特徵描述符 – 這是一個雄心勃勃的研究人員在影象方面超過十年研究的成果之一。 大衛·羅伊和英屬哥倫比亞大學為SIFT演算法申請了專利,並且大衛·羅伊還在自己的主頁上公佈了SIFT實現的一條經過編譯後的二進位制程式,供研究人員在他們的工作中使用。 SIFT允許一幅彩色影象中的點由一個低維向量進行魯棒表示。當你通過旋轉照相機對同一物理拍攝不同角度的多幅影象,這些對應點的SIFT描述符在其128維空間中非常相似。初看之下在進行影象匹配之前需要進行如SIFT這麼複雜的處理似乎有點愚蠢,但是請相信我:那是因為你,作為一個人類,可以用肉眼觀看兩個影象塊並迅速“理解”它們屬於同一個物體上的相同點,而這對於計算機來說是不同的。 SIFT對計算機視覺(包括立體視覺、從運動結恢復構等)的幾何方面的研究都有著重要的影響,後來還成為用於物件識別的流行的詞袋模型的基礎。
看到SIFT這樣的技術在影象塊匹配上大大超過像平方距離求和(SSD)方法在每一個有抱負的視覺科學家的職業生涯的重要一步。SIFT不只是濾波器響應的一個載體,其中的直方圖分級和規範化的步驟也是非常重要的。值得指出的是,雖然最初SIFT(在其論文中公佈的形式)主要作為興趣點檢測器的輸出,但是後來發現興趣點檢測步驟在物件分類問題中並不重要。對於分類問題,研究人員對影象應用的是SIFT描述符的向量量化。
我還要提到的是其它的描述符方法,如旋轉影象方法提出的時間早於SIFT,但由於旋轉影象方法只適用於2.5維的資料,所以這一方法的影響力沒有SIFT方法那樣大。
2000年至2005年:現代資料集(又名強化視覺科學)
單應估計、地平面估計、機器視覺,從運動恢復結構以及其它計算機視覺幾何問題極大地受益於魯邦的影象特徵,如SIFT。但對20世紀90年代末來說,很明顯,網際網路是下一件大事。線上影象,還有跟多正在建立的資料集。結構恢復(即幾何視覺)問題不再是這一代研究人員主要感興趣的主題。這是一個大資料集的時代,以此同時加州理工學院的Caltech-101資料集逐漸得到普及,分類研究在不斷上升。研究人員不再僅僅是對自己內部的資料集評估他們自己的演算法,現在大家都有一個更加客觀的標準方法來進行方法之間的比較。儘管用2015年的標準來看Caltech-101資料集被認為是過時的,但是可以把它認為是更現代的ImageNet資料集的鼻祖。
基於類別的資料集:著名的Caltech-101影象資料集
2000年至2005年:箱、網格和視覺單詞(即面向描述符的機器學習)
研究人員逐步從視覺幾何恢復問題轉向更為雄心勃勃的目標識別問題,湧現了詞袋(BoW,Bag of Words)、空間金字塔(Spatial Pyramids)、向量量化(Vector Quantization),以及在計算機視覺的各個階段使用的各種機器學習工具。原生的SIFT對於寬基線立體匹配來說很棒,但它不是強大到足以從相同的視覺物件類別提供兩種不同的物件例項之間的匹配。我們需要的是一種對以下思路進行編碼的方法:相對於彼此物件部件可以變形,一些影象塊可能會確實。總體而言,需要更多基於統計的方法來對物體進行表徵。
由Josef Sivic和Andrew Zisserman於2003年提出視覺單詞(Visual Words),這是一種從大規模的文字匹配中借鑑的方法。Josef和Andrew把它們應用到視訊內容中。視覺字典可以通過執行對SIFT描述符進行無監督學習(例如通過K-均值聚類),將128維的SIFT描述對映為整數獲得。可以使用這些視覺單詞的直方圖來表示影象,這種表示是一種相當可靠的方。至今詞袋模型的變種仍被大量使用在視覺研究中。
基於內容的視訊匹配與檢索
另一個關於物件識別的想法是使用某種形式的分級結構進行物件匹配的方法。Caltech-101影象資料主要包含物件,所以這些網格最初被放置在整個影象,後來他們被放置在物件包圍盒上。Kristen Grauman發表的著名的金字塔匹配核(Pyramid Match Kernel)論文介紹了一個用於在影象匹配過程中整合空間資訊的強大的和分層的方法。下圖是其中的一幅示意圖:
格勞曼提出的基於金字塔匹配核的改進影象匹配
在那個時候研究人員還不清楚是否應該專注於更好的特徵、更好的比較標準或更好的學習方法。在2000年中期對於年輕的博士生是否應該花更多的時間來設計新的描述符或新的支援向量機核函式也並不是十分清楚。
2005年至2010年:物件模板(即方向梯度直方圖和DPM)
在2005,一個名叫Navneet Dalal的年輕研究人員向世界展示了用他自己設計的HOG特徵描述符能夠完成的功能。
Navneet Dalal的HOG描述符
HOG描述符是當每個人通過使用多層學習對詞袋應用運用空間分級,使得他們的系統過於複雜的時候出現的。Dalal巧妙設計的描述符其實本質上是比較簡單的。HOG的論文是由Navneet和他的博士生導師Bill Triggs在2005年發表的。Bill Triggs因為早期在幾何視覺方面的研究而出名,Dalal博士則是由於他新發現的描述符而出名。HOG描述符最初應用於行人檢測問題,之所以HOG描述如此受歡迎的原因是用在HOG上層使用機器學習工具非常簡單和容易理解,這種機器學習工具正是線性支援向量機。
我要指出的是在2008年在一篇關於物件檢測的後續文章中介紹了一種技術叫做以變形部件為基礎的模型(做計算機視覺研究的人一般把這個方法稱為DPM),有助於加強HOG技術的普及和功能。在2008年我也開始使用HOG方法。作為一個研究生的最初幾年(2005-2008年)我一直使用自己設計的濾波器組,並且也積累了一些特徵描述符的經驗。最後,我意識到,我自己設計的特徵描述符方法只是“好”,因為我是把它們應用到的影象分割演算法的輸出,因此速度都非常緩慢。當我開始使用HOG方法時,沒有多久我就意識到我不會再走回頭路去使用那些自己定製的、速度慢的特徵描述符了。當我開始使用一個多尺度金字塔,再搭配上如Ramanan和Felzenszwalb改進的HOG方法,我就能夠以100倍的速度處理影象。
著名的可變性部件模型
DPM為什麼變得如此受歡迎的原因之一是它是PASCAL VOC挑戰賽的衛冕冠軍,以及Ramanan和Felzenszwalb公佈了優秀的MATLAB/ C++實現程式碼。我知道很多研究者從來沒有完全承認釋放如此巨大的程式碼真對剛入學的博士生的意義,但在某些時候,就好像每個人都在修改DPM的程式碼庫以便為自己嘗試CVPR的比賽。大部分的新生都缺乏堅實的軟體工程技能,給予他們DPM的程式碼來獲得一些一些實驗和執行結果是一個正確的方式。就我個人而言,我從來沒有去深入研究以DPM為基礎的方法,但我確實有幾次對DPM程式碼庫進行了拆分。
2010至2015年:大資料,卷積神經網路和深度學習
到2008年的某個時候,科學家們越來越適應大型資料集的處理。這是不是“雲端計算”和“大資料”的興起,這是資料科學家的興起。早晨設計一個公式,午飯期間開發一個原型,在晚上部署大規模的計算,在日落的時候並整合結果到生產系統。我花了兩個夏天在谷歌的做實習研究,我看到了很多以視覺黑客成名的研究人員和工程師。但在谷歌他們不只是寫“學院派”的論文,而是實實在地進行大資料的處理。將來的視覺研究者將會非常熟悉大型資料集的處理。不在需要一個人有數學學位的博士、一位軟體工程師、一位經理和一個測試人員。很多人都可以完成所有這些工作。
1980年至2015年:深度學習
2014年絕對是深度學習豐收的一年。關於深度學習有趣的是它是一種非常古老的技術。我們現在看到的深度學習本質上是神經網路2.0的版本。但這一次,我們的計算機和研究以及開發的速度要比原來快好幾個數量級。好笑的是現在倡導深度學習的人和90年代初倡導這種技術的同樣的一批研究人員。我猜他們真的笑到了最後,因為最終這些神經網路大師成為研究深度學習追隨的人。Geoffrey Hinton,Yann LeCun,Andrew Ng和Yeshua Bengio是深度學習的四位巨人。現在,幾乎每個做機器學習的人都在研究深度學習。
但隨著谷歌、Facebook、百度以及眾多小創業公司乘著深學習浪潮,誰將會上升到頂部成為人工智慧的主人?
那麼今天的深層學習系統和昔日的識別系統有什麼相似性?
和以往的基於特徵的系統相比,多尺度卷積神經網路並沒有太大的不同。在深度學習系統的第一級的神經元學習利用梯度的方式是類似於手工設計的特徵的,例如SIFT和HOG。在過去使用滑動視窗發現物件,但現在它更容易和更感性的認為這種操作可以作為影象與濾波器進行過濾。有些最佳監測系統習慣使用多元線性支援向量機,結合一些特設的方式,現在我們基本上更多在使用這種線性決策邊界。深度學習系統可以被認為是應用線性運算元的多階段過程,並通過非線性啟用函式放到一個管道中進行處理。和以核函式為基礎的學習系統相比,深度學習更類似於一種將多個線性支援向量機進行巧妙組合的系統。
現在不再手工設計特徵描述。然而,深度學習系統的架構仍然需要手工設計 – 看起來專家們最擅長此任務。在古典和現代的識別系統內部的操作仍然是大同小異。除了聰明以外,現在你還需要一個大型計算機。關於這方面的研究還有很大的提升空間,所以我鼓勵大家在自己的研究中要更具創新性。
作為一位明智的研究人員,瞭解研究領域以前的歷史可以使我們可以更好地規劃我們的未來。我希望你喜歡這個簡短的計算機視覺歷史介紹,下一次在你尋找研究靈感的時候,不要害怕回顧過去的研究歷史。
英文原文地址:From feature descriptors to deep learning: 20 years of computer vision
文章中提到的一些文章:
Deformable Part-based Model Homepage
Pyramid Match Kernel Homepage
"Video Google" Image Retrieval System
Some Computer Vision datasets:
Caltech-101 Dataset
ImageNet Dataset
Bill Triggs's (co-creator of HOG, Researcher at INRIA)
Navneet Dalal (co-creator of HOG, now at Google)
Andrew Ng (leading the Deep Learning effort at Baidu, Prof at Stanford)
Yoshua Bengio (one of the Titans of Deep Learning, Prof at U Montreal)
Pedro Felzenszwalb (one of the creators of DPM, Prof at Brown)
Fei-fei Li (Caltech101 and ImageNet, Prof at Stanford)
Josef Sivic (Video Google and Visual Words, Researcher at INRIA/ENS)
Andrew Zisserman (Geometry-based methods in vision, Prof at Oxford)
Andrew E. Johnson (SPIN Images creator, Researcher at JPL)
Martial Hebert (Geometry-based methods in vision, Prof at CMU)
相關文章
- 計算機視覺與深度學習公司計算機視覺深度學習
- 計算機視覺中的深度學習計算機視覺深度學習
- 史丹佛—深度學習和計算機視覺深度學習計算機視覺
- 計算機視覺與深度學習應用關係計算機視覺深度學習
- 8個計算機視覺深度學習中常見的Bug計算機視覺深度學習
- 計算機視覺應用:深度學習的力量和侷限性計算機視覺深度學習
- 【深度學習】:一門入門3D計算機視覺深度學習3D計算機視覺
- 計算機視覺與深度學習,看這本書就夠了計算機視覺深度學習
- [深度學習] 計算機視覺低程式碼工具Supervision庫使用指北深度學習計算機視覺
- 機器學習工作坊 - 計算機視覺機器學習計算機視覺
- 深度學習在計算機視覺各項任務中的應用深度學習計算機視覺
- 後深度學習時代,計算機視覺技術如何走向未來?深度學習計算機視覺
- 基於深度學習的計算機視覺應用之目標檢測深度學習計算機視覺
- 計算機視覺2-> 深度學習 | anaconda+cuda+pytorch環境配置計算機視覺深度學習PyTorch
- 「MoreThanJava」計算機發展史—從織布機到IBMJava計算機IBM
- [雪峰磁針石部落格]python計算機視覺深度學習1簡介Python計算機視覺深度學習
- 計算機視覺實戰的深度學習實戰二:影像預處理計算機視覺深度學習
- [雪峰磁針石部落格]python計算機視覺深度學習2影像基礎Python計算機視覺深度學習
- 淺談深度學習的技術原理及其在計算機視覺的應用深度學習計算機視覺
- 從試用到使用:計算機視覺產業新一輪發展的起步年計算機視覺產業
- 計算機視覺 | Matlab實現單目視覺里程計基於SURF特徵(程式碼類)計算機視覺Matlab特徵
- 深度學習計算機視覺極限將至,我們該如何找到突破口?深度學習計算機視覺
- 拜讀為什麼深度學習幾乎成了計算機視覺研究的標配深度學習計算機視覺
- 超全!深度學習在計算機視覺領域應用一覽(附連結)深度學習計算機視覺
- AI/機器學習(計算機視覺/NLP)方向面試複習1AI機器學習計算機視覺面試
- 未來5-10年計算機視覺發展趨勢計算機視覺
- OpenCV計算機視覺學習(13)——影像特徵點檢測(Harris角點檢測,sift演算法)OpenCV計算機視覺特徵演算法
- 計算機視覺崗實習面經計算機視覺
- 學習了哪些知識,計算機視覺才算入門?計算機視覺
- 深度學習/計算機視覺常見的8個錯誤總結及避坑指南深度學習計算機視覺
- 香港大學韓鍇課題組招募計算機視覺、深度學習方向博士及博士後計算機視覺深度學習
- 計算機視覺—人臉識別(Haar特徵+Adaboost分類器)(7)計算機視覺特徵
- 計算機視覺—人臉識別(Hog特徵+SVM分類器)(8)計算機視覺HOG特徵
- 計算機視覺 OpenCV Android | 基本特徵檢測之 霍夫圓檢計算機視覺OpenCVAndroid特徵
- 引領深度學習潮流,刷屏計算機視覺頂會,揭祕商湯研究夢之隊深度學習計算機視覺
- 計算機視覺學習之路------你想要的都在這裡了計算機視覺
- [計算機視覺]非監督學習、AutoEncoder、AI換臉demo計算機視覺AI
- 從智慧化“天眼”看計算機視覺未來計算機視覺
- 深度:如何從系統層面優化深度學習計算?優化深度學習