乾貨 | 算法工程師入門第三期——黃李超講物體檢測

 2017-08-11 17:19:00.0

地平線大牛講堂算法工程師入門第三期重磅來襲!本期地平線深度學習算法工程師黃李超將爲大家帶來物體檢測相關內容的分享,全文約8000字,建議閱讀時間20分鐘,歡迎轉發或收藏。

前期傳送門:

乾貨 | 算法工程師入門第一期——羅恆講深度學習

乾貨 | 算法工程師入門第二期——穆黎森講增強學習(一)

乾貨 | 算法工程師入門第二期——穆黎森講增強學習(二)

乾貨 | 算法工程師入門第三期——黃李超講物體檢測


本次分享主要針對一些對深度學習和物體檢測感興趣的同學。內容主要包括:

第一,什麼是物體檢測,如何去評價一個物體裏系統的好壞。

第二,物體檢測整個的框架是怎麼樣的?它一般包含了圖像的分類和物體檢測的定位。

第三,介紹物體檢測的歷史發展,從傳統的人工設計的一些圖像特徵加上分類器到現在的深度學習。

What’s Computer Vision

介紹物體檢測之前,我們首先要知道什麼是計算機視覺。計算機視覺是計算機科學的一個分支領域,旨在構造智能算法和程序,來「觀察」這個世界。比如說,一個機器人手裏拿着一個東西,它可以知道這個手上拿着的是一個魔方。這個問題對人而言十分簡單,但是對於計算機卻不是那麼容易的。因爲計算機拿到的信息,是一系列的二進制數據,它描述了每個像素點的顏色強度,而計算機本身是比較困難將這些信息抽象成爲一種比較高層語意的表達,去對應現實生活中的名詞概念。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

所以,我們通常所說的「觀察」(see),實際上是已經包含了對視覺信息的加工,以及和真實世界的關係映射。那麼在計算機視覺領域,我們怎樣去定義「觀察」(see)這個概念,和我們人類的理解一致呢?這裏我們把它分成三個層次:

第一個層次,也是最經典的解釋,1982年David Marr(著名的生物神經學家,計算機視覺理論的鼻祖),他總結的「To know what is where by looking」。中文意思就是知道有什麼東西,在哪裏,這就是一個最基本的「see」這個概念。它對應計算機視覺裏面幾類基本問題:一個是做圖像識別,即解決是什麼(what),另一個是物體定位,即在哪裏(where)。這裏還需要提一下「圖像語意分割」這個概念,它是一個像素級別的物體識別,即每個像素點都要判斷它的類別。它和檢測的區別是,物體檢測是一個物體級別的,他只需要一個框,去框住物體的位置,而通常分割是比檢測要更難的問題。

再進一個層次,除了要知道圖像像素/二維平面內每一個像素代表的信息以外,我們可能還需要知道這個物體在這個真實世界當中的3D信息。舉個例子,給定一張臥室的照片,以及一些相機參數和環境的一些假設,我們需要知道牀在這個三維空間的真實的位置,包括它的長寬高。在這個層次中,一個重要的課題就是我們經常提到的SLAM,即同時定位和建圖,這個方向在機器人領域有十分重要的作用。

第三個層次則是更高一層的視覺問題,比如說給定圖片或者視頻,我們需要去知曉這個場景正在發生什麼,如果是一個更高級的系統,我們甚至希望計算機能夠根據圖像或者視頻,我們回答一些問題。這就是前兩年非常火的視覺問答(Visual question answering)方向。

現在我們迴歸物體檢測。 物體檢測是視覺感知的第一步,也是計算機視覺的一個重要分支。物體檢測的目標,就是用框去標出物體的位置,並給出物體的類別。物體檢測和圖像分類不一樣,檢測側重於物體的搜索,而且物體檢測的目標必須要有固定的形狀和輪廓。圖像分類可以是任意的目標,這個目標可能是物體,也可能是一些屬性或者場景。

Object Detection Evaluation

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

如果給定一個物體檢測系統,我們要怎麼樣去評價它的好壞?物體檢測的輸出,就是一系列的框,加上其屬於某一類別的置信度得分。測評的時候我們需要把他們和標註的框(ground truth)進行比配。好的檢測框,應該和標註框有非常大的重疊率,同時又不能對同一個物體重複檢測。我們把那些和標註框重疊率很高的定義爲true positive, 把那些重疊率低(甚至沒有重疊)和重複檢測的框,定義爲false positive。

我們還需要定義兩個描述指標:precision 和recall。Precision是true positive 數量除以 true positive和false positive的比值,即所有的檢測結果中,正確的比例。 Recall 則是所有truepositive的個數和標註框個數的比值,即所有的目標中,被系統檢測出來的比例。

接下來,我們可以把檢測的結果根據置信度進行排序, 設一個閾值,然後去計算這個情況下的precision和recall。我們設置不同的閾值,可以得到很多組precision 和recall。 如果我們把所有的precision 和recall 都畫到一張圖上,x軸代表recall, y軸代表precision,那麼我們得到的圖,就叫做PR(precision-recall) 曲線。我們可以用這條曲線在x軸上的積分,去描述物體檢測的好壞,這個指標叫做Average precision (AP)。 AP值高,就說明系統在比較高recall的情況下,還能保持比較高的的precision. 現在一些成熟的人臉檢測系統, AP都是在90%以上。如果我們直接拿標註去算AP, 那麼肯定就是100%了。

How to Detect an Object

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

我們再講講如何去做物體檢測?其實很簡單,典型的一個思路就是,我去搜索所有可能的位置。然後再去對這些所有可能的位置進行分類,看看它是不是包含這個物體。所以,我們把這個問題分解成兩個步驟,第一步是去找目標的位置,第二步就是去做一個置信度分類。

搜索目標位置的方法,總體來講可以分成兩類兩種:

第一種是我把所有可能的位置和大小都列舉一遍:我可以通過一個掃描窗口,從圖像左上角開始,從左到右,從上到下,一直掃到到右下角,然後我們改變圖像的大小,保持掃描窗口大小不變,繼續掃。每一個位置和大小,我們都可以後續通過處理得到一個置信度得分,這就是最典型的圖像模板匹配的例子。在經典的模板匹配的例子中,掃描窗口所用的模板就是一個圖像塊,置信度得分的計算方法是correlation。如果當前位置和模板越匹配,那麼得分就越大。因此我們能夠通過這種方式得到物體的位置。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

遍歷所有可能的位置太耗時,我們能不能比較高效地通過一些啓發式的方法,快速地得到一些可能會有物體的位置(region proposal)?這樣的方法通常都叫region proposal method。這類方法可以是有監督的方法,也可以是無監督的方法。 Selective Search就是一個常用的無監督的region proposal method。它的原理是根據像素點的相似度,逐層合併,當他們合併之後,就可以得到區域的邊界,再把這些區域轉化成region proposal 的框。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

History of Recognition(Detection)

有了目標的候選區域,我們怎樣得到物體的類別分數呢?這就是一個分類問題。其實圖像識別這個領域,已經有大半個世紀的歷史了。圖像識別,或者說模式識別,最早是在二十世紀60年代被提出來的。當時MIT的計算機教授,組織了一個面向本科生的兩個月的Summer project。這個project 的目的是設計一個系統,能夠智能識別場景裏頭的物體,並區分出類別。顯然當時他們低估了這個問題的難度,結果可想而知。

實際上,從1966年之後到現在,這個問題還並不能算完全解決。但在一定程度上,在深度學習出來之後,這個問題得到了很大程度上的解決。其實識別問題本身就不是一個容易的事情。爲什麼呢?首先,我們看到的這個物體的樣子,只是它在某種背景下某一種光線條件下特定角度的投影的,換一個角度可能就是完全不同的樣子。即使是同一個物體,例如人,它具有多種不同的姿態,所以外觀也會不一樣。例如他可能是躺着的,或者是站着的,形態都是不一樣的。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

假設,我們事先知道了物體的三維形狀,那麼物體識別的難度就會小一些。這時候識別問題變成了一個匹配問題。我們可以事先構造物體的形狀,然後去搜索可能的視角投影,跟待識別的圖像進行匹配。如果找到最合適的匹配,就認爲是識別成功了。在20世紀六十年代初到九十年代,大家都是嘗試用這種方法去做。例如我們可以定義一些基本的幾何形狀,然後把物體表示爲基本幾何形狀的組合,然後去匹配圖像。

但是這麼做並不是很有效,爲什麼呢?首先很多物體很難用所謂的基本幾何形狀去描述它,特別是一些非剛體,比如動物。其次對於一類物體,它可能會有豐富的類內差異性,即使是同一個物體在不同的姿態下也不一樣,難道我們要爲每一種姿態都預先創建一個三維模型模板?最後,即使解決了之前的問題,如何才能準確地從圖像中提取出這些幾何形狀呢?因此這個方法在當時雖然理論挺優美,但實施起來非常困難。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

到了九十年代之後,主流的方法是隻從圖像本身考慮,而不去管物體原來的三維形狀。這類方法統一叫做appearance based techniques.  所謂appearance, 從模式識別的角度去描述的話,就是圖像特徵(feature),即對圖像的一種抽象描述。有了圖像特徵,我們就可以在這個特徵空間內做匹配,或者分類。一個最經典的例子,就是」Eigen Faces」方法,這也是90年代做人臉識別最重要的方法之一。它的主要思想是用PCA(主成分分析)去分解人臉數據集,得到特徵向量,然後把每一張人臉圖像表達爲特徵向量的組合。這些組合係數,就構成了對人臉圖像的抽象描述,即特徵。最後我們就可以用特徵空間內樣本的距離,來判斷樣本是否是屬於同一個人臉:同一個人臉在樣本空間內距離很小,不同臉之間距離比較大。

然而這個方法還是存在很多問題,首先它需要我們對所有的圖片進行對齊,像人臉圖像,就要求每一幅圖中五官基本在固定的位置。但是很多應用場景下,目標並不是像人臉那麼規整,很難去做統一對齊,而且這種基於全局特徵和簡單歐式距離的檢索方法,對複雜背景,遮擋,和幾何變化等並不適用。

到2000年之後,識別領域有了較大的發展。首先圖像特徵層面,人們設計了各種各樣的圖像特徵,像SIFT,HOG,LBP等等,比起圖像邊緣和角點等簡單的特徵更加魯棒。與此同時,機器學習方法的發展也爲模式識別提供了各種強大的分類器,例如SVM,boosting等的方法。在此期間,出現了第一個真正具有實際應用價值的人臉檢測: Viola and Jones提出的實時人臉檢測。在它之前的一些方法要麼效果不怎麼好,速度比較快,或者是速度很慢,效果相當或者更好。所以作者當時在CVPR上拿着攝像頭展示算法的實時demo,驚豔了全場。這個方法能夠做到又快又好的關鍵,在於使用了簡單的基於積分圖像(integral-image)的圖像特徵,和級聯分類器(cascaded classifier)。前者可以在常數的時間複雜度內計算任意區域的特徵,使得特徵提取變得十分快速;後者可以在一些簡單的背景樣本上做到提前終止(earlyrejection),極大降低了全圖中所有圖像塊分類的計算量。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

另外一類方法,通常是人工精心設計的圖像特徵,配上很強的分類器,典型例子就是Dalaland Triggs 在2005年做的行人檢測方面的工作。他們使用了HOG(一種基於圖像梯度直方圖的局部統計特徵)作爲圖像特徵,使用支持向量機(SVM)作爲分類器,通過掃描窗口的形式去遍歷圖像所有的位置。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

後來人們還在對物體建模方面做了一些工作,旨在用更靈活的模型,而不是單一的模板去定義物體。其實這個思想也不是當時提出來的,早在1973年的時候,Fischler& Elschlager 就提出了一種基於部件的模型,名叫Pictorial Structure。它的核心思想有兩點: 

1. 物體是由在特定相對位置的不同部件所組成。

2.不同的物體實例中,部件的位置可以允許一定程度上的不同。我們通常又把這個模型叫做彈簧模型,因爲部件之間的連接可以看作是用彈簧相連的,雖然大概位置是固定的,但是還是能夠允許一定的形變自由度。

如果我們把Pictorial Structure和上文提到的用作行人檢測的HOG detector結合起來,是不是會更好?其實這個工作就是深度學習還沒火起來之前,在物體檢測領域鼎鼎大名的Deformable Part-based Model(DPM)。這個方法使用了整體模板加上多個部件的模板去描述一個物體,部件之間的位置可以發生變化。因此它對於複雜的物體都能夠有比較好的表現。這個方法在PASCAL VOC數據集上統治了數年時間,通過引入更多更復雜的圖像特徵,把檢測平均準確率從2007年的17%提升到2012年的41%。正是由於這個方法對這一數據集的貢獻,他的作者之一Ross Girshick被PASCAL VOC數據集的組織授予了終生成就獎。

 Object Detection via Deep Learning

我們開始第二部分,這一部分主要講的是深度學習給物體檢測領域帶來的變化。

首先,關於深度學習的概念,大家只需要記住,深度學習其實就是神經網絡,是一種特徵學習的方法。它能在圖像識別,語音識別,自然語言處理等領域有非常好的效果,是因爲這些領域內很多問題都可以拆解爲兩個步驟:特徵提取加上模式分類。那麼爲什麼在很多領域,深度學習能夠大幅度超過傳統的方法呢?本質還是「特徵」二字。

我們以圖像分類爲例,傳統方法需要人爲地根據場景和目標去設計合適的圖像特徵。例如當你需要去對物體的外觀進行建模,你可能需要基於梯度的特徵去描述輪廓。你還需要想辦法對梯度信息進行篩選,量化,得到相對穩定的表達。而這些所有的工作,都需要有一定的領域知識去設計和調優。從PASCAL VOC數據集物體檢測方法的發展來看,更好的特徵對最終的效果起到決定性作用。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

然而特徵學習正是深度學習所擅長的部分。它把相關場景和目標的特徵學習,轉變爲網絡結構的定義和參數的學習,從而免去領域專家去設計特徵這一環節。我們不需要絞盡腦汁去爲你的目標去設計合適的特徵,你只需要把原始圖片和標註提供給網絡,定義好網絡結構,他就可以從頭到尾自動學習出多層次的特徵表達和分類器。深度學習還具有非常好的可擴展性。

你可以去設計很大的模型,利用服務器GPU在1000類的圖像分類數據集上達到80%多的準確率,亦或針對一類數據例如人臉做檢測,用很小的模型在手機上達到還不錯的效果。得益於深度學習的可擴展性,當數據規模足夠大的時候,我們通過增加模型容量和複雜度,可以比較容易地達到更好的效果,而很多傳統的方法在大數據下的提升比較困難。

深度學習這麼厲害,它是一個全新的概念麼?它跟二三十年前的神經網絡是一回事麼?這個問題我們需要辯證地區看待。首先,現在我們的深度學習實際上就是以前傳統的神經網絡的一個發展,它的一些基本元素並沒有變。例如現在深度神經網絡的學習方法仍然是反向傳播(back-propagation),它是在1986年被第一次提出來。像現在非常流行的卷積神經網絡(ConvNet),其實1998年的時候就已經被應用到字符識別系統了。

現在得益於更快的計算能力,更多的數據,神經網絡以從前無法想象的模型規模的形態,又重新火了起來。在二三十年前,神經網絡一般就只有兩三層,每一層最多幾十到上百個神經元。而現在比較主流的網絡結構,像GoogleNet,ResNet等,參數量在上百萬個。能夠訓練這麼大的除了計算和數據之外,近些年提出的一些神經網絡的優化技巧也起到了決定性的作用。例如ReLU激活函數的應用,使得神經網絡比之前用tanh, sigmoid 等激活函數的網絡更容易訓練,也更快收斂。另外,像一些更好的神經網絡權重的初始化方法,以及一些其他的奇淫巧技(trick), 例如drop out等,和新的網絡結構(ResNet等)也讓神經網絡的實用性和之前相比大大提高。

有關神經網絡的基礎內容,我們就不在這裏再細講了。除了經典的denseconnected network, 大家還需要了解Convolution,和Pooling兩個操作,這兩個是現在的主流的神經網絡中最常用也是做基本的單元。我們繼續回到物體檢測這個問題。大家都知道,如果是用神經網絡做圖像分類的話,我們就直接把圖像送進去,就可以直接輸出分類的結果了。那麼物體檢測要怎麼做呢?回顧之前提到的物體檢測的流程,物體檢測無非就是搜索加分類。那麼,我們能不能: 1. 用神經網絡去替代傳統的分類器?2. 能否把區域搜索也交給神經網絡去做?3. 甚至直接利用神經網絡通過輸入圖像去輸出物體檢測的結果?答案是肯定的。

Detection as Region Proposal + Classification

其實這三個問題就代表了現在用神經網絡去做物體檢測的三個基本的思路。假設我們直接把傳統的基於人工設計的特種加上分類器的步驟,用卷積神經網絡(CNN)去替代,其實就是大名鼎鼎的R-CNN。這個方法思路很簡單,首先需要產生物體可能的位置的候選區域,然後把這個區域送給CNN去做分類和檢測框迴歸。候選區域的產生可以使用任意方法,並不是這個方法所討論的重點。R-CNN這個工作的貢獻是用CNN去取代原來的特徵提取和分類器。雖然R-CNN的方法很簡單,而且它也不是2013年深度學習火了之後第一個嘗試用CNN去解決物體檢測的方法,但是它在當時是性能最好的方法:在PASCAL VOC檢測數據集上,比傳統最好的方法要好一大截。

這個方法簡單有效,原因在於:1. 把檢測問題分解爲候選區域搜索和分類兩個子任務,可以分別去優化求解,簡化了檢測任務的學習難度。2.後面的分類可以使用在ImageNet等更大數據集上預訓練的模型,提供非常豐富的圖像特徵和強大的分類器。之前也討論過,圖像特徵對物體識別和檢測起非常重要的作用。一般來說,特徵越強大,那麼分類的效果就越好。所以ImageNet訓練的高精確度的分類模型,在R-CNN這個方法中,就是「巨人的肩膀」。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

R-CNN雖然很簡單,但是速度太慢的問題嚴重製約了它的實用性。在論文的實驗中,檢測一張圖像需要40多秒。這個時間還是使用當時最好的GPU的速度,如果使用CPU的話,速度還會慢上幾十倍。這個時間開銷主要還是消耗在用CNN作圖像分類上。爲了達到一個好的效果,一張圖像所產生的候選區域可能有上千個。分類器則需要把這近千個候選區域都裁剪出來,統一縮放到224*224的大小再分別過一遍CNN。所以在這個方法中,每個區域的分類器的計算都是獨立的。

而實際上,同一張圖片裏頭的檢測候選區域可能是高度相關的,特別是當候選區域很多的時候,它們重疊的概率會非常大,所以很多計算應該是可以共享的。之前在給定檢測候選區域之後,我們在原始圖像上裁剪並縮放得到固定大小的輸入圖像送到分類器,我們能否直接在特徵圖上這麼做呢?這樣的話,特徵計算可以被不同的候選區域共享,從而避免了對相同區域的特徵重複提取。這個改進方法就叫做Fast R-CNN。

我們可以通過簡單的計算去分析改進之後的理想的加速比:假設兩種方法使用的是同一個網絡結構,原始圖像的大小是600*1000,如果我們用R-CNN 的話, 2000個候選區域累計起來,輸入像素個數是224*224*2000;如果改用Fast R-CNN,輸入像素個數只有600*1000,相比之前大約能加速100倍!

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

現在我們再看看實際運行中, Fast R-CNN的速度。同樣是一張PASCAL VOC數據集的圖片,檢測網絡只需要0.2秒,而之前R-CNN 要達到類似的準確率,需要40多秒!而現在候選區域提取反而成了瓶頸,通常要幾百毫秒到數秒的時間,而且這一步的計算也是獨立的。後來進一步改進的FasterR-CNN方法引入了一個叫Region Proposal Network(RPN)的結構,解決了這個問題。所謂RPN就是一個CNN,用來預測哪些地方可能有物體,並回歸出物體的位置。而且RPN和分類網絡共享了圖像特徵,進一步避免了重複計算。所以FasterR-CNN其實就是RPN加上Fast R-CNN,一整套系統可以端到端進行訓練。FasterR-CNN相比於之前的FastR-CNN,檢測時間由原來的2秒縮短到0.2秒,使得實時的檢測系統成爲可能。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

One-Shot Detection

剛剛所說的這一系列方法,都是把檢測問題分成了兩步:先產生regionproposal,然後再去分類和迴歸。另一類方法則是希望神經網絡能夠一步到位,直接去定位物體。在Faster R-CNN中,RPN是一個弱分類器,它不需要定位和分類十分準確。如果我們要求RPN得到非常精確的結果,就可以去掉後續做分類和定位這一步驟了,整體流程變得更加簡單。其實這類方法相比R-CNN系列的方法,更早的時候就有了。例如2013年的時候有一個叫OverFeat的方法就是這麼做的,只不過因爲性能不夠好的原因沒有火起來。更早之前,在二十世紀90年代的時候用CNN去做人臉識別的一些工作,其實也是類似的流程。這類方法雖然流程上簡單,但是模型的學習難度相比於兩個階段的方法要更難一些,要取得足夠好的效果,需要在網絡設計和學習目標上下一些功夫。

一步到位的方法現在的一些代表工作有YOLO, SSD。現在公司裏用的DenseBox也是和SSD類似的一個方法,是我在2014年末還在百度實習的時候做的工作。時間上應該比SSD和YOLO都要早。這裏我們就主要講一下SSD,它在PASCAL VOC數據集上能夠達到實時的檢測速度,效果也和Faster R-CNN差不多。SSD可以看作是一個強化版的RPN,輸出層的每一個像素都代表了一個檢測框。和RPN一個輸出層不同, SSD會有好幾個輸出層:比較淺的輸出層的分辨率比較高,用來檢測小一些的物體,比較深的層檢測大的物體。最後再把所有層的檢測結果合在一起作爲最終的輸出。

這麼做的也是有它的考慮:小物體在過深的層當中可能會因爲上下文信息過多而丟失掉有效的表達,同時高層的特徵的分辨率也比較低,不好處理一塊區域內多個物體的情況。物體檢測想要做得好的話,本質上還是需要去解決物體和模板的配準對齊(registration,alignment),包括位置上的和尺度上的對齊。R-CNN系列把配準對齊問題交給了regionproposal,而像SSD這種一步到位的檢測器,就只能指望模型本身的感受野去做配準對齊。因此從方法上討論的話,前者更容易學習,效果也會更好。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測


Summary

用CNN去解決檢測問題的思路,基本就是這幾個套路。其實還有一個方向我們並沒有討論,就是用神經網絡去學習怎麼做檢測的後處理,例如非極大抑制(Non-Maximum Suppression)等。這類工作關注的人相對比較少,所以相關的工作也不多。不過在上面介紹的幾個基本框架下,可以研究的細節還有很多,例如怎樣去處理好物體的尺度問題,物體的形變問題,怎樣用多任務學習來提高物體檢測的性能,怎樣去最好context和detail之前的平衡等等,我們就不在此做詳細討論了。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

總結一下,今天主要介紹了物體檢測的領域,包括物體檢測的概念,方法的評估。然後回顧了下圖像識別和檢測領域五十年來的發展。對於模式識別領域來說,深度學習是最好的提取圖像特徵的方式,除非硬件受限只能用傳統的方法,不然就可以直接用現在最好的深度學習模型去做實驗。這裏面我們並沒有討論太多具體實現的細節,其實在物體檢測領域,對細節的處理直接影響到模型最終的結果。如果你對有興趣的話,還是建議大家在具體的數據集上去嘗試,調參,慢慢地你就會有自己的理解。

乾貨 | 算法工程師入門第三期——黃李超講物體檢測

其實物體檢測的方法框架,近二十年來並沒有太大的變化。以前的方法爲什麼在當時沒有成功呢?因爲當時人們並沒有那麼多的數據和計算資源,所以像深度學習這種計算密集型的數據驅動的方法,在當時完全沒有用武之地。而且當數據很小的時候,很多根據數據集的特點專門調優的方法,比起數據驅動的方法更有效。另外,當時的機器學習的工具並不像現在這麼豐富和方便,即使有的話,很多做計算機視覺的人也還沒學會去用。

歷史總是會交替發展的,作爲一個好的研究人員,你需要去發現從前的一些好的工作。解決問題的具體辦法不一定相同,但是人們解決問題的大致思路總是相似的。我們需要去弄明白爲什麼某些方法當時並沒有起作用,哪些方法在現在還有應用的潛力,需要用現在的方法去重新審視它們。

-End-

文章來源:雷鋒網