為什么深度學(xué)習(xí)不能取代傳統(tǒng)的計算機(jī)視覺技術(shù)?
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)

當(dāng)你輾轉(zhuǎn)于各種論壇時,相信會經(jīng)??吹竭@樣的問題:深度學(xué)習(xí)是否會取代傳統(tǒng)的計算機(jī)視覺?或者說,當(dāng)深度學(xué)習(xí)看起來如此有效時,是否還有必要研究傳統(tǒng)的計算機(jī)視覺技術(shù)?
這是一個非常好的問題。
深度學(xué)習(xí)已經(jīng)徹底改變了計算機(jī)視覺和人工智能這一領(lǐng)域,許多曾經(jīng)看起來不可能解決的問題,深度學(xué)習(xí)都能夠解決——尤其是在圖像識別和分類問題上,機(jī)器已經(jīng)超越人類(短鏈:http://t.cn/Rnzv2JX)。事實上,深度學(xué)習(xí)也強(qiáng)化了計算機(jī)視覺在行業(yè)中的重要地位。
但是,深度學(xué)習(xí)對計算機(jī)視覺來說僅僅是一種工具,它不可能成為解決所有問題的萬能藥。所以,在這篇文章中,我想闡述一下為什么傳統(tǒng)計算機(jī)視覺技術(shù)仍然很重要,并且值得我們?nèi)ド钊雽W(xué)習(xí)和研究。
本文將分為以下三個部分:
深度學(xué)習(xí)需要大數(shù)據(jù)
深度學(xué)習(xí)有時過于深度(殺雞焉用牛刀)
傳統(tǒng)的計算機(jī)視覺有助于更好的使用深度學(xué)習(xí)
首先我需要解釋下什么是傳統(tǒng)的計算機(jī)視覺技術(shù),什么是深度學(xué)習(xí),以及深度學(xué)習(xí)為什么如此具有革命性。
在深度學(xué)習(xí)出現(xiàn)之前,如果你想對圖像進(jìn)行分類,首先需要執(zhí)行一個特征提?。╳iki:http://t.cn/RnzvIJ8)的步驟。特征是圖像中比較小的“有趣的”、具有描述性的或包含信息的塊。在這篇文章中你將會了解到傳統(tǒng)的計算機(jī)視覺技術(shù),包括邊緣檢測(wiki:http://t.cn/RnzvqtE),角點檢測(wiki:http://t.cn/RnzvSVQ),對象檢測(wiki:http://t.cn/RnzvpqH)等等。
就特征提取和圖像分類而言,使用這些技術(shù)的思路是:從統(tǒng)一類別對象的圖像中(椅子、馬等)提取盡可能多的特征,并將這些特征視為對象的一個“定義”(眾所周知的詞袋模型),然后在其他圖像中搜索這些“定義”,如果詞袋模型中有相當(dāng)一部分的特征都可以在這幅圖像中找到,那么這幅圖像被分類為包含該特定對象的類別(椅子,馬等)。
這種特征提取方法的難點在于,在給定圖像中,必須選擇需要查找哪些特征。當(dāng)圖像中類別過多時(如10或20個類別),就會變得復(fù)雜而難以分類。角點?邊緣?還是紋理特征?只有使用不同的特征才可以更好地描述不同類別的對象。如果你在分類時使用很多特征,就必須對大量的參數(shù)進(jìn)行微調(diào)。
深度學(xué)習(xí)為我們展示了端到端學(xué)習(xí)( end-to-endlearning)這一概念,簡而言之,針對每個特定類別的對象,機(jī)器會自動學(xué)習(xí)需要查找什么特征。它為每個對象提供了最具描述性和顯著性的特征。換句話說,神經(jīng)網(wǎng)絡(luò)可以探索圖像類別中的底層模式。
因此,通過端到端的學(xué)習(xí),你不再需要自己動手來決定使用哪種傳統(tǒng)計算機(jī)視覺技術(shù)來描述這些特征,機(jī)器將會替你做這些工作?!哆B線》雜志這樣描述:
“舉個例子來說,如果你想訓(xùn)練一個[深度]神經(jīng)網(wǎng)絡(luò)來識別一只貓,你不需要告訴它要尋找圖像上的胡須、耳朵、毛發(fā)和眼睛。你需要做的就是向它展示成千上萬張貓的照片,這就能解決問題。如果它將狐貍誤認(rèn)為貓,你也不需要重寫代碼,只需要繼續(xù)訓(xùn)練即可?!?/span>
下圖展示了特征提取(使用傳統(tǒng)的計算機(jī)視覺技術(shù))和端到端學(xué)習(xí)二者之間的差異:

下面我們將繼續(xù)討論,傳統(tǒng)的計算機(jī)視覺為什么仍然有必要且值得我們?nèi)W(xué)習(xí)。
首先,深度學(xué)習(xí)需要數(shù)據(jù),并且是大量的數(shù)據(jù)!上面提到的那些經(jīng)典的圖像分類模型都是在大型數(shù)據(jù)集上進(jìn)行訓(xùn)練的。常用于訓(xùn)練的三種數(shù)據(jù)集分別是:
ImageNet數(shù)據(jù)集——包含150萬張圖像,有1000個類別。
MicrosoftCommon Objects in Context(COCO)數(shù)據(jù)集——包含250萬張圖像,有91個類別。
PASCAL VOC數(shù)據(jù)集——包含500萬張圖像,有20個類別。
比圖像分類簡單的任務(wù)或許并不需要如此多數(shù)據(jù),但也少不到哪里去。你必須在你所擁有的數(shù)據(jù)上進(jìn)行訓(xùn)練(有些技巧能夠增強(qiáng)訓(xùn)練數(shù)據(jù),但也都是人為處理的方法)。
在訓(xùn)練數(shù)據(jù)范圍之外的數(shù)據(jù)上,已訓(xùn)練模型的表現(xiàn)就會很差,這是因為機(jī)器并沒有理解這個問題,所以不能在沒有訓(xùn)練過的數(shù)據(jù)上進(jìn)行泛化。
我們很難看到訓(xùn)練過的模型的內(nèi)在機(jī)制,手動調(diào)參也相當(dāng)困難,因為深度學(xué)習(xí)模型里面有數(shù)百萬個參數(shù)——每個參數(shù)在訓(xùn)練過程中都需要調(diào)整。從某種意義上來說,深度學(xué)習(xí)模型就是一個黑匣子。
傳統(tǒng)的計算機(jī)視覺具有充分的透明度,這能夠使你對解決方案能否在訓(xùn)練環(huán)境之外運行做一個更好的評估和判斷。你可以更容易地了解算法中存在的問題,弄清楚什么地方需要調(diào)整。
這也許是我支持繼續(xù)研究傳統(tǒng)計算機(jī)視覺技術(shù)的最佳理由。
訓(xùn)練一個深度神經(jīng)網(wǎng)絡(luò)需要很長時間。如果使用專用硬件(例如高性能GPU)訓(xùn)練最先進(jìn)的圖像分類模型,也得需要將近一天的時間;如果使用標(biāo)準(zhǔn)筆記本電腦進(jìn)行訓(xùn)練,甚至需要一周或者更長的時間。
此外,如果你的訓(xùn)練模型表現(xiàn)不佳應(yīng)該怎么辦?你必須重來一遍,使用不同的訓(xùn)練參數(shù)重新進(jìn)行訓(xùn)練,而且這個過程有時候還得重復(fù)數(shù)百次。
并不是所有問題需要使用深度學(xué)習(xí)。在某些問題上,傳統(tǒng)的計算機(jī)視覺技術(shù)的表現(xiàn)比深度學(xué)習(xí)更好,而且需要的代碼更少。
例如,我曾經(jīng)參與過一個項目——檢測每個通過傳送帶的錫罐中是否有紅色的勺子。你可以訓(xùn)練一個深度神經(jīng)網(wǎng)絡(luò)來檢測勺子并完成上述過程,但這比較耗費時間;或者你也可以編寫一個簡單的關(guān)于紅色的顏色閾值算法(在紅色范圍內(nèi)的任何像素都標(biāo)記成白色,其他像素則都是黑色),然后計算有多少白色像素,這樣就可以快速檢測勺子。第二個方法很簡單,并且能在一個小時以內(nèi)完成!
了解傳統(tǒng)的計算機(jī)視覺技術(shù)會為你節(jié)省大量時間以及減少不必要的麻煩。
理解傳統(tǒng)的計算機(jī)視覺實際上真的有助于你更好的使用深度學(xué)習(xí)。例如,計算機(jī)視覺中最常見的神經(jīng)網(wǎng)絡(luò)是卷積神經(jīng)網(wǎng)絡(luò)。但是什么是卷積?它實際上是一種廣泛使用的圖像處理技術(shù)(例如Sobel邊緣檢測)。了解卷積有助于了解神經(jīng)網(wǎng)絡(luò)的內(nèi)在機(jī)制,在解決問題時,它可以幫助你設(shè)計和調(diào)整模型。
其次是預(yù)處理,這通常是針對訓(xùn)練數(shù)據(jù)而言。預(yù)處理這一步驟用到的主要是傳統(tǒng)的計算機(jī)視覺技術(shù)。例如,如果你沒有足夠多的訓(xùn)練數(shù)據(jù),則可以采用數(shù)據(jù)增強(qiáng)的方法來處理:通過對原來的圖像進(jìn)行隨機(jī)旋轉(zhuǎn)、移位、剪切的方式來創(chuàng)建“新”的圖像。這些操作可以大大增加訓(xùn)練數(shù)據(jù)的數(shù)量。
在這篇文章中,我解釋了為什么深度學(xué)習(xí)仍然沒有取代傳統(tǒng)的計算機(jī)視覺技術(shù),以及傳統(tǒng)的計算機(jī)視覺技術(shù)為何值得我們?nèi)W(xué)習(xí)和研究。
首先,深度學(xué)習(xí)通常需要大量的數(shù)據(jù)才能達(dá)到較好的性能,但是有時候這是不可能實現(xiàn)的。在這些情況下,傳統(tǒng)的計算機(jī)視覺技術(shù)就可以成為替代方案。
其次,對于某些特定的任務(wù)來說,有時候深度學(xué)習(xí)過于深度。在這種情況下,標(biāo)準(zhǔn)的計算機(jī)視覺技術(shù)可以更有效地解決問題,并且使用較少的代碼。
第三,了解傳統(tǒng)的計算機(jī)視覺技術(shù)實際上可以讓你更好地使用深度學(xué)習(xí)。這是因為通過傳統(tǒng)的計算機(jī)視覺,你可以更好地了解深度學(xué)習(xí)的內(nèi)在機(jī)制,并且可以執(zhí)行某些預(yù)處理步驟來提升深度學(xué)習(xí)的性能。
簡而言之,深度學(xué)習(xí)只是計算機(jī)視覺的一種工具,并不是萬能藥。不要因為深度學(xué)習(xí)現(xiàn)在較為流行就只使用深度學(xué)習(xí)。傳統(tǒng)的計算機(jī)視覺技術(shù)仍然非常重要,它可以為你節(jié)省很多時間,并減少許多不必要的麻煩。
對于這個觀點,你怎么看呢?歡迎后臺給小白留言
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

