天天看點

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

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

前期傳送門:

<a href="https://www.leiphone.com/news/201707/85u7vjg6f4avab8i.html">幹貨 | 算法工程師入門第一期——羅恒講深度學習</a>

<a href="https://www.leiphone.com/news/201707/kkcminb5hnacxwjw.html">幹貨 | 算法工程師入門第二期——穆黎森講增強學習(一)</a>

<a href="https://www.leiphone.com/news/201707/szfwtzg2uxf1wh4i.html">幹貨 | 算法工程師入門第二期——穆黎森講增強學習(二)</a>

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

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

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

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

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

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&amp;

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之前的平衡等等,我們就不在此做詳細讨論了。

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

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

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

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

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

本文作者:大牛講堂

繼續閱讀