丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給大牛講堂
發(fā)送

0

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

本文作者: 大牛講堂 2017-08-11 17:19
導(dǎo)語(yǔ):本期地平線資深算法工程師黃李超將帶你走近“物體檢測(cè)”的世界,分享內(nèi)容包括物體檢測(cè)的概念,方法的評(píng)估,圖像識(shí)別與檢測(cè)領(lǐng)域近五十年來(lái)的發(fā)展等。

雷鋒網(wǎng)按:地平線大牛講堂算法工程師入門(mén)第三期重磅來(lái)襲!本期地平線深度學(xué)習(xí)算法工程師黃李超將為大家?guī)?lái)物體檢測(cè)相關(guān)內(nèi)容的分享,全文約8000字,建議閱讀時(shí)間20分鐘,歡迎轉(zhuǎn)發(fā)或收藏。

前期傳送門(mén):

干貨 | 算法工程師入門(mén)第一期——羅恒講深度學(xué)習(xí)

干貨 | 算法工程師入門(mén)第二期——穆黎森講增強(qiáng)學(xué)習(xí)(一)

干貨 | 算法工程師入門(mén)第二期——穆黎森講增強(qiáng)學(xué)習(xí)(二)

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)


本次分享主要針對(duì)一些對(duì)深度學(xué)習(xí)和物體檢測(cè)感興趣的同學(xué)。內(nèi)容主要包括:

第一,什么是物體檢測(cè),如何去評(píng)價(jià)一個(gè)物體里系統(tǒng)的好壞。

第二,物體檢測(cè)整個(gè)的框架是怎么樣的?它一般包含了圖像的分類(lèi)和物體檢測(cè)的定位。

第三,介紹物體檢測(cè)的歷史發(fā)展,從傳統(tǒng)的人工設(shè)計(jì)的一些圖像特征加上分類(lèi)器到現(xiàn)在的深度學(xué)習(xí)。

What’s Computer Vision

介紹物體檢測(cè)之前,我們首先要知道什么是計(jì)算機(jī)視覺(jué)。計(jì)算機(jī)視覺(jué)是計(jì)算機(jī)科學(xué)的一個(gè)分支領(lǐng)域,旨在構(gòu)造智能算法和程序,來(lái)“觀察”這個(gè)世界。比如說(shuō),一個(gè)機(jī)器人手里拿著一個(gè)東西,它可以知道這個(gè)手上拿著的是一個(gè)魔方。這個(gè)問(wèn)題對(duì)人而言十分簡(jiǎn)單,但是對(duì)于計(jì)算機(jī)卻不是那么容易的。因?yàn)橛?jì)算機(jī)拿到的信息,是一系列的二進(jìn)制數(shù)據(jù),它描述了每個(gè)像素點(diǎn)的顏色強(qiáng)度,而計(jì)算機(jī)本身是比較困難將這些信息抽象成為一種比較高層語(yǔ)意的表達(dá),去對(duì)應(yīng)現(xiàn)實(shí)生活中的名詞概念。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

所以,我們通常所說(shuō)的“觀察”(see),實(shí)際上是已經(jīng)包含了對(duì)視覺(jué)信息的加工,以及和真實(shí)世界的關(guān)系映射。那么在計(jì)算機(jī)視覺(jué)領(lǐng)域,我們?cè)鯓尤ザx“觀察”(see)這個(gè)概念,和我們?nèi)祟?lèi)的理解一致呢?這里我們把它分成三個(gè)層次:

第一個(gè)層次,也是最經(jīng)典的解釋?zhuān)?982年David Marr(著名的生物神經(jīng)學(xué)家,計(jì)算機(jī)視覺(jué)理論的鼻祖),他總結(jié)的“To know what is where by looking”。中文意思就是知道有什么東西,在哪里,這就是一個(gè)最基本的“see”這個(gè)概念。它對(duì)應(yīng)計(jì)算機(jī)視覺(jué)里面幾類(lèi)基本問(wèn)題:一個(gè)是做圖像識(shí)別,即解決是什么(what),另一個(gè)是物體定位,即在哪里(where)。這里還需要提一下“圖像語(yǔ)意分割”這個(gè)概念,它是一個(gè)像素級(jí)別的物體識(shí)別,即每個(gè)像素點(diǎn)都要判斷它的類(lèi)別。它和檢測(cè)的區(qū)別是,物體檢測(cè)是一個(gè)物體級(jí)別的,他只需要一個(gè)框,去框住物體的位置,而通常分割是比檢測(cè)要更難的問(wèn)題。

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

第三個(gè)層次則是更高一層的視覺(jué)問(wèn)題,比如說(shuō)給定圖片或者視頻,我們需要去知曉這個(gè)場(chǎng)景正在發(fā)生什么,如果是一個(gè)更高級(jí)的系統(tǒng),我們甚至希望計(jì)算機(jī)能夠根據(jù)圖像或者視頻,我們回答一些問(wèn)題。這就是前兩年非?;鸬囊曈X(jué)問(wèn)答(Visual question answering)方向。

現(xiàn)在我們回歸物體檢測(cè)。 物體檢測(cè)是視覺(jué)感知的第一步,也是計(jì)算機(jī)視覺(jué)的一個(gè)重要分支。物體檢測(cè)的目標(biāo),就是用框去標(biāo)出物體的位置,并給出物體的類(lèi)別。物體檢測(cè)和圖像分類(lèi)不一樣,檢測(cè)側(cè)重于物體的搜索,而且物體檢測(cè)的目標(biāo)必須要有固定的形狀和輪廓。圖像分類(lèi)可以是任意的目標(biāo),這個(gè)目標(biāo)可能是物體,也可能是一些屬性或者場(chǎng)景。

Object Detection Evaluation

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

如果給定一個(gè)物體檢測(cè)系統(tǒng),我們要怎么樣去評(píng)價(jià)它的好壞?物體檢測(cè)的輸出,就是一系列的框,加上其屬于某一類(lèi)別的置信度得分。測(cè)評(píng)的時(shí)候我們需要把他們和標(biāo)注的框(ground truth)進(jìn)行比配。好的檢測(cè)框,應(yīng)該和標(biāo)注框有非常大的重疊率,同時(shí)又不能對(duì)同一個(gè)物體重復(fù)檢測(cè)。我們把那些和標(biāo)注框重疊率很高的定義為true positive, 把那些重疊率低(甚至沒(méi)有重疊)和重復(fù)檢測(cè)的框,定義為false positive。

我們還需要定義兩個(gè)描述指標(biāo):precision 和recall。Precision是true positive 數(shù)量除以 true positive和false positive的比值,即所有的檢測(cè)結(jié)果中,正確的比例。 Recall 則是所有truepositive的個(gè)數(shù)和標(biāo)注框個(gè)數(shù)的比值,即所有的目標(biāo)中,被系統(tǒng)檢測(cè)出來(lái)的比例。

接下來(lái),我們可以把檢測(cè)的結(jié)果根據(jù)置信度進(jìn)行排序, 設(shè)一個(gè)閾值,然后去計(jì)算這個(gè)情況下的precision和recall。我們?cè)O(shè)置不同的閾值,可以得到很多組precision 和recall。 如果我們把所有的precision 和recall 都畫(huà)到一張圖上,x軸代表recall, y軸代表precision,那么我們得到的圖,就叫做PR(precision-recall) 曲線。我們可以用這條曲線在x軸上的積分,去描述物體檢測(cè)的好壞,這個(gè)指標(biāo)叫做Average precision (AP)。 AP值高,就說(shuō)明系統(tǒng)在比較高recall的情況下,還能保持比較高的的precision. 現(xiàn)在一些成熟的人臉檢測(cè)系統(tǒng), AP都是在90%以上。如果我們直接拿標(biāo)注去算AP, 那么肯定就是100%了。

How to Detect an Object

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

我們?cè)僦v講如何去做物體檢測(cè)?其實(shí)很簡(jiǎn)單,典型的一個(gè)思路就是,我去搜索所有可能的位置。然后再去對(duì)這些所有可能的位置進(jìn)行分類(lèi),看看它是不是包含這個(gè)物體。所以,我們把這個(gè)問(wèn)題分解成兩個(gè)步驟,第一步是去找目標(biāo)的位置,第二步就是去做一個(gè)置信度分類(lèi)。

搜索目標(biāo)位置的方法,總體來(lái)講可以分成兩類(lèi)兩種:

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

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

遍歷所有可能的位置太耗時(shí),我們能不能比較高效地通過(guò)一些啟發(fā)式的方法,快速地得到一些可能會(huì)有物體的位置(region proposal)?這樣的方法通常都叫region proposal method。這類(lèi)方法可以是有監(jiān)督的方法,也可以是無(wú)監(jiān)督的方法。 Selective Search就是一個(gè)常用的無(wú)監(jiān)督的region proposal method。它的原理是根據(jù)像素點(diǎn)的相似度,逐層合并,當(dāng)他們合并之后,就可以得到區(qū)域的邊界,再把這些區(qū)域轉(zhuǎn)化成region proposal 的框。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

History of Recognition(Detection)

有了目標(biāo)的候選區(qū)域,我們?cè)鯓拥玫轿矬w的類(lèi)別分?jǐn)?shù)呢?這就是一個(gè)分類(lèi)問(wèn)題。其實(shí)圖像識(shí)別這個(gè)領(lǐng)域,已經(jīng)有大半個(gè)世紀(jì)的歷史了。圖像識(shí)別,或者說(shuō)模式識(shí)別,最早是在二十世紀(jì)60年代被提出來(lái)的。當(dāng)時(shí)MIT的計(jì)算機(jī)教授,組織了一個(gè)面向本科生的兩個(gè)月的Summer project。這個(gè)project 的目的是設(shè)計(jì)一個(gè)系統(tǒng),能夠智能識(shí)別場(chǎng)景里頭的物體,并區(qū)分出類(lèi)別。顯然當(dāng)時(shí)他們低估了這個(gè)問(wèn)題的難度,結(jié)果可想而知。

實(shí)際上,從1966年之后到現(xiàn)在,這個(gè)問(wèn)題還并不能算完全解決。但在一定程度上,在深度學(xué)習(xí)出來(lái)之后,這個(gè)問(wèn)題得到了很大程度上的解決。其實(shí)識(shí)別問(wèn)題本身就不是一個(gè)容易的事情。為什么呢?首先,我們看到的這個(gè)物體的樣子,只是它在某種背景下某一種光線條件下特定角度的投影的,換一個(gè)角度可能就是完全不同的樣子。即使是同一個(gè)物體,例如人,它具有多種不同的姿態(tài),所以外觀也會(huì)不一樣。例如他可能是躺著的,或者是站著的,形態(tài)都是不一樣的。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

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

但是這么做并不是很有效,為什么呢?首先很多物體很難用所謂的基本幾何形狀去描述它,特別是一些非剛體,比如動(dòng)物。其次對(duì)于一類(lèi)物體,它可能會(huì)有豐富的類(lèi)內(nèi)差異性,即使是同一個(gè)物體在不同的姿態(tài)下也不一樣,難道我們要為每一種姿態(tài)都預(yù)先創(chuàng)建一個(gè)三維模型模板?最后,即使解決了之前的問(wèn)題,如何才能準(zhǔn)確地從圖像中提取出這些幾何形狀呢?因此這個(gè)方法在當(dāng)時(shí)雖然理論挺優(yōu)美,但實(shí)施起來(lái)非常困難。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

到了九十年代之后,主流的方法是只從圖像本身考慮,而不去管物體原來(lái)的三維形狀。這類(lèi)方法統(tǒng)一叫做appearance based techniques.  所謂appearance, 從模式識(shí)別的角度去描述的話,就是圖像特征(feature),即對(duì)圖像的一種抽象描述。有了圖像特征,我們就可以在這個(gè)特征空間內(nèi)做匹配,或者分類(lèi)。一個(gè)最經(jīng)典的例子,就是”Eigen Faces”方法,這也是90年代做人臉識(shí)別最重要的方法之一。它的主要思想是用PCA(主成分分析)去分解人臉數(shù)據(jù)集,得到特征向量,然后把每一張人臉圖像表達(dá)為特征向量的組合。這些組合系數(shù),就構(gòu)成了對(duì)人臉圖像的抽象描述,即特征。最后我們就可以用特征空間內(nèi)樣本的距離,來(lái)判斷樣本是否是屬于同一個(gè)人臉:同一個(gè)人臉在樣本空間內(nèi)距離很小,不同臉之間距離比較大。

然而這個(gè)方法還是存在很多問(wèn)題,首先它需要我們對(duì)所有的圖片進(jìn)行對(duì)齊,像人臉圖像,就要求每一幅圖中五官基本在固定的位置。但是很多應(yīng)用場(chǎng)景下,目標(biāo)并不是像人臉那么規(guī)整,很難去做統(tǒng)一對(duì)齊,而且這種基于全局特征和簡(jiǎn)單歐式距離的檢索方法,對(duì)復(fù)雜背景,遮擋,和幾何變化等并不適用。

到2000年之后,識(shí)別領(lǐng)域有了較大的發(fā)展。首先圖像特征層面,人們?cè)O(shè)計(jì)了各種各樣的圖像特征,像SIFT,HOG,LBP等等,比起圖像邊緣和角點(diǎn)等簡(jiǎn)單的特征更加魯棒。與此同時(shí),機(jī)器學(xué)習(xí)方法的發(fā)展也為模式識(shí)別提供了各種強(qiáng)大的分類(lèi)器,例如SVM,boosting等的方法。在此期間,出現(xiàn)了第一個(gè)真正具有實(shí)際應(yīng)用價(jià)值的人臉檢測(cè): Viola and Jones提出的實(shí)時(shí)人臉檢測(cè)。在它之前的一些方法要么效果不怎么好,速度比較快,或者是速度很慢,效果相當(dāng)或者更好。所以作者當(dāng)時(shí)在CVPR上拿著攝像頭展示算法的實(shí)時(shí)demo,驚艷了全場(chǎng)。這個(gè)方法能夠做到又快又好的關(guān)鍵,在于使用了簡(jiǎn)單的基于積分圖像(integral-image)的圖像特征,和級(jí)聯(lián)分類(lèi)器(cascaded classifier)。前者可以在常數(shù)的時(shí)間復(fù)雜度內(nèi)計(jì)算任意區(qū)域的特征,使得特征提取變得十分快速;后者可以在一些簡(jiǎn)單的背景樣本上做到提前終止(earlyrejection),極大降低了全圖中所有圖像塊分類(lèi)的計(jì)算量。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

另外一類(lèi)方法,通常是人工精心設(shè)計(jì)的圖像特征,配上很強(qiáng)的分類(lèi)器,典型例子就是Dalaland Triggs 在2005年做的行人檢測(cè)方面的工作。他們使用了HOG(一種基于圖像梯度直方圖的局部統(tǒng)計(jì)特征)作為圖像特征,使用支持向量機(jī)(SVM)作為分類(lèi)器,通過(guò)掃描窗口的形式去遍歷圖像所有的位置。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

后來(lái)人們還在對(duì)物體建模方面做了一些工作,旨在用更靈活的模型,而不是單一的模板去定義物體。其實(shí)這個(gè)思想也不是當(dāng)時(shí)提出來(lái)的,早在1973年的時(shí)候,F(xiàn)ischler& Elschlager 就提出了一種基于部件的模型,名叫Pictorial Structure。它的核心思想有兩點(diǎn): 

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

2.不同的物體實(shí)例中,部件的位置可以允許一定程度上的不同。我們通常又把這個(gè)模型叫做彈簧模型,因?yàn)椴考g的連接可以看作是用彈簧相連的,雖然大概位置是固定的,但是還是能夠允許一定的形變自由度。

如果我們把Pictorial Structure和上文提到的用作行人檢測(cè)的HOG detector結(jié)合起來(lái),是不是會(huì)更好?其實(shí)這個(gè)工作就是深度學(xué)習(xí)還沒(méi)火起來(lái)之前,在物體檢測(cè)領(lǐng)域鼎鼎大名的Deformable Part-based Model(DPM)。這個(gè)方法使用了整體模板加上多個(gè)部件的模板去描述一個(gè)物體,部件之間的位置可以發(fā)生變化。因此它對(duì)于復(fù)雜的物體都能夠有比較好的表現(xiàn)。這個(gè)方法在PASCAL VOC數(shù)據(jù)集上統(tǒng)治了數(shù)年時(shí)間,通過(guò)引入更多更復(fù)雜的圖像特征,把檢測(cè)平均準(zhǔn)確率從2007年的17%提升到2012年的41%。正是由于這個(gè)方法對(duì)這一數(shù)據(jù)集的貢獻(xiàn),他的作者之一Ross Girshick被PASCAL VOC數(shù)據(jù)集的組織授予了終生成就獎(jiǎng)。

 Object Detection via Deep Learning

我們開(kāi)始第二部分,這一部分主要講的是深度學(xué)習(xí)給物體檢測(cè)領(lǐng)域帶來(lái)的變化。

首先,關(guān)于深度學(xué)習(xí)的概念,大家只需要記住,深度學(xué)習(xí)其實(shí)就是神經(jīng)網(wǎng)絡(luò),是一種特征學(xué)習(xí)的方法。它能在圖像識(shí)別,語(yǔ)音識(shí)別,自然語(yǔ)言處理等領(lǐng)域有非常好的效果,是因?yàn)檫@些領(lǐng)域內(nèi)很多問(wèn)題都可以拆解為兩個(gè)步驟:特征提取加上模式分類(lèi)。那么為什么在很多領(lǐng)域,深度學(xué)習(xí)能夠大幅度超過(guò)傳統(tǒng)的方法呢?本質(zhì)還是“特征”二字。

我們以圖像分類(lèi)為例,傳統(tǒng)方法需要人為地根據(jù)場(chǎng)景和目標(biāo)去設(shè)計(jì)合適的圖像特征。例如當(dāng)你需要去對(duì)物體的外觀進(jìn)行建模,你可能需要基于梯度的特征去描述輪廓。你還需要想辦法對(duì)梯度信息進(jìn)行篩選,量化,得到相對(duì)穩(wěn)定的表達(dá)。而這些所有的工作,都需要有一定的領(lǐng)域知識(shí)去設(shè)計(jì)和調(diào)優(yōu)。從PASCAL VOC數(shù)據(jù)集物體檢測(cè)方法的發(fā)展來(lái)看,更好的特征對(duì)最終的效果起到?jīng)Q定性作用。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

然而特征學(xué)習(xí)正是深度學(xué)習(xí)所擅長(zhǎng)的部分。它把相關(guān)場(chǎng)景和目標(biāo)的特征學(xué)習(xí),轉(zhuǎn)變?yōu)榫W(wǎng)絡(luò)結(jié)構(gòu)的定義和參數(shù)的學(xué)習(xí),從而免去領(lǐng)域?qū)<胰ピO(shè)計(jì)特征這一環(huán)節(jié)。我們不需要絞盡腦汁去為你的目標(biāo)去設(shè)計(jì)合適的特征,你只需要把原始圖片和標(biāo)注提供給網(wǎng)絡(luò),定義好網(wǎng)絡(luò)結(jié)構(gòu),他就可以從頭到尾自動(dòng)學(xué)習(xí)出多層次的特征表達(dá)和分類(lèi)器。深度學(xué)習(xí)還具有非常好的可擴(kuò)展性。

你可以去設(shè)計(jì)很大的模型,利用服務(wù)器GPU在1000類(lèi)的圖像分類(lèi)數(shù)據(jù)集上達(dá)到80%多的準(zhǔn)確率,亦或針對(duì)一類(lèi)數(shù)據(jù)例如人臉做檢測(cè),用很小的模型在手機(jī)上達(dá)到還不錯(cuò)的效果。得益于深度學(xué)習(xí)的可擴(kuò)展性,當(dāng)數(shù)據(jù)規(guī)模足夠大的時(shí)候,我們通過(guò)增加模型容量和復(fù)雜度,可以比較容易地達(dá)到更好的效果,而很多傳統(tǒng)的方法在大數(shù)據(jù)下的提升比較困難。

深度學(xué)習(xí)這么厲害,它是一個(gè)全新的概念么?它跟二三十年前的神經(jīng)網(wǎng)絡(luò)是一回事么?這個(gè)問(wèn)題我們需要辯證地區(qū)看待。首先,現(xiàn)在我們的深度學(xué)習(xí)實(shí)際上就是以前傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)的一個(gè)發(fā)展,它的一些基本元素并沒(méi)有變。例如現(xiàn)在深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方法仍然是反向傳播(back-propagation),它是在1986年被第一次提出來(lái)。像現(xiàn)在非常流行的卷積神經(jīng)網(wǎng)絡(luò)(ConvNet),其實(shí)1998年的時(shí)候就已經(jīng)被應(yīng)用到字符識(shí)別系統(tǒng)了。

現(xiàn)在得益于更快的計(jì)算能力,更多的數(shù)據(jù),神經(jīng)網(wǎng)絡(luò)以從前無(wú)法想象的模型規(guī)模的形態(tài),又重新火了起來(lái)。在二三十年前,神經(jīng)網(wǎng)絡(luò)一般就只有兩三層,每一層最多幾十到上百個(gè)神經(jīng)元。而現(xiàn)在比較主流的網(wǎng)絡(luò)結(jié)構(gòu),像GoogleNet,ResNet等,參數(shù)量在上百萬(wàn)個(gè)。能夠訓(xùn)練這么大的除了計(jì)算和數(shù)據(jù)之外,近些年提出的一些神經(jīng)網(wǎng)絡(luò)的優(yōu)化技巧也起到了決定性的作用。例如ReLU激活函數(shù)的應(yīng)用,使得神經(jīng)網(wǎng)絡(luò)比之前用tanh, sigmoid 等激活函數(shù)的網(wǎng)絡(luò)更容易訓(xùn)練,也更快收斂。另外,像一些更好的神經(jīng)網(wǎng)絡(luò)權(quán)重的初始化方法,以及一些其他的奇淫巧技(trick), 例如drop out等,和新的網(wǎng)絡(luò)結(jié)構(gòu)(ResNet等)也讓神經(jīng)網(wǎng)絡(luò)的實(shí)用性和之前相比大大提高。

有關(guān)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)內(nèi)容,我們就不在這里再細(xì)講了。除了經(jīng)典的denseconnected network, 大家還需要了解Convolution,和Pooling兩個(gè)操作,這兩個(gè)是現(xiàn)在的主流的神經(jīng)網(wǎng)絡(luò)中最常用也是做基本的單元。我們繼續(xù)回到物體檢測(cè)這個(gè)問(wèn)題。大家都知道,如果是用神經(jīng)網(wǎng)絡(luò)做圖像分類(lèi)的話,我們就直接把圖像送進(jìn)去,就可以直接輸出分類(lèi)的結(jié)果了。那么物體檢測(cè)要怎么做呢?回顧之前提到的物體檢測(cè)的流程,物體檢測(cè)無(wú)非就是搜索加分類(lèi)。那么,我們能不能: 1. 用神經(jīng)網(wǎng)絡(luò)去替代傳統(tǒng)的分類(lèi)器?2. 能否把區(qū)域搜索也交給神經(jīng)網(wǎng)絡(luò)去做?3. 甚至直接利用神經(jīng)網(wǎng)絡(luò)通過(guò)輸入圖像去輸出物體檢測(cè)的結(jié)果?答案是肯定的。

Detection as Region Proposal + Classification

其實(shí)這三個(gè)問(wèn)題就代表了現(xiàn)在用神經(jīng)網(wǎng)絡(luò)去做物體檢測(cè)的三個(gè)基本的思路。假設(shè)我們直接把傳統(tǒng)的基于人工設(shè)計(jì)的特種加上分類(lèi)器的步驟,用卷積神經(jīng)網(wǎng)絡(luò)(CNN)去替代,其實(shí)就是大名鼎鼎的R-CNN。這個(gè)方法思路很簡(jiǎn)單,首先需要產(chǎn)生物體可能的位置的候選區(qū)域,然后把這個(gè)區(qū)域送給CNN去做分類(lèi)和檢測(cè)框回歸。候選區(qū)域的產(chǎn)生可以使用任意方法,并不是這個(gè)方法所討論的重點(diǎn)。R-CNN這個(gè)工作的貢獻(xiàn)是用CNN去取代原來(lái)的特征提取和分類(lèi)器。雖然R-CNN的方法很簡(jiǎn)單,而且它也不是2013年深度學(xué)習(xí)火了之后第一個(gè)嘗試用CNN去解決物體檢測(cè)的方法,但是它在當(dāng)時(shí)是性能最好的方法:在PASCAL VOC檢測(cè)數(shù)據(jù)集上,比傳統(tǒng)最好的方法要好一大截。

這個(gè)方法簡(jiǎn)單有效,原因在于:1. 把檢測(cè)問(wèn)題分解為候選區(qū)域搜索和分類(lèi)兩個(gè)子任務(wù),可以分別去優(yōu)化求解,簡(jiǎn)化了檢測(cè)任務(wù)的學(xué)習(xí)難度。2.后面的分類(lèi)可以使用在ImageNet等更大數(shù)據(jù)集上預(yù)訓(xùn)練的模型,提供非常豐富的圖像特征和強(qiáng)大的分類(lèi)器。之前也討論過(guò),圖像特征對(duì)物體識(shí)別和檢測(cè)起非常重要的作用。一般來(lái)說(shuō),特征越強(qiáng)大,那么分類(lèi)的效果就越好。所以ImageNet訓(xùn)練的高精確度的分類(lèi)模型,在R-CNN這個(gè)方法中,就是“巨人的肩膀”。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

R-CNN雖然很簡(jiǎn)單,但是速度太慢的問(wèn)題嚴(yán)重制約了它的實(shí)用性。在論文的實(shí)驗(yàn)中,檢測(cè)一張圖像需要40多秒。這個(gè)時(shí)間還是使用當(dāng)時(shí)最好的GPU的速度,如果使用CPU的話,速度還會(huì)慢上幾十倍。這個(gè)時(shí)間開(kāi)銷(xiāo)主要還是消耗在用CNN作圖像分類(lèi)上。為了達(dá)到一個(gè)好的效果,一張圖像所產(chǎn)生的候選區(qū)域可能有上千個(gè)。分類(lèi)器則需要把這近千個(gè)候選區(qū)域都裁剪出來(lái),統(tǒng)一縮放到224*224的大小再分別過(guò)一遍CNN。所以在這個(gè)方法中,每個(gè)區(qū)域的分類(lèi)器的計(jì)算都是獨(dú)立的。

而實(shí)際上,同一張圖片里頭的檢測(cè)候選區(qū)域可能是高度相關(guān)的,特別是當(dāng)候選區(qū)域很多的時(shí)候,它們重疊的概率會(huì)非常大,所以很多計(jì)算應(yīng)該是可以共享的。之前在給定檢測(cè)候選區(qū)域之后,我們?cè)谠紙D像上裁剪并縮放得到固定大小的輸入圖像送到分類(lèi)器,我們能否直接在特征圖上這么做呢?這樣的話,特征計(jì)算可以被不同的候選區(qū)域共享,從而避免了對(duì)相同區(qū)域的特征重復(fù)提取。這個(gè)改進(jìn)方法就叫做Fast R-CNN。

我們可以通過(guò)簡(jiǎn)單的計(jì)算去分析改進(jìn)之后的理想的加速比:假設(shè)兩種方法使用的是同一個(gè)網(wǎng)絡(luò)結(jié)構(gòu),原始圖像的大小是600*1000,如果我們用R-CNN 的話, 2000個(gè)候選區(qū)域累計(jì)起來(lái),輸入像素個(gè)數(shù)是224*224*2000;如果改用Fast R-CNN,輸入像素個(gè)數(shù)只有600*1000,相比之前大約能加速100倍!

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

現(xiàn)在我們?cè)倏纯磳?shí)際運(yùn)行中, Fast R-CNN的速度。同樣是一張PASCAL VOC數(shù)據(jù)集的圖片,檢測(cè)網(wǎng)絡(luò)只需要0.2秒,而之前R-CNN 要達(dá)到類(lèi)似的準(zhǔn)確率,需要40多秒!而現(xiàn)在候選區(qū)域提取反而成了瓶頸,通常要幾百毫秒到數(shù)秒的時(shí)間,而且這一步的計(jì)算也是獨(dú)立的。后來(lái)進(jìn)一步改進(jìn)的FasterR-CNN方法引入了一個(gè)叫Region Proposal Network(RPN)的結(jié)構(gòu),解決了這個(gè)問(wèn)題。所謂RPN就是一個(gè)CNN,用來(lái)預(yù)測(cè)哪些地方可能有物體,并回歸出物體的位置。而且RPN和分類(lèi)網(wǎng)絡(luò)共享了圖像特征,進(jìn)一步避免了重復(fù)計(jì)算。所以FasterR-CNN其實(shí)就是RPN加上Fast R-CNN,一整套系統(tǒng)可以端到端進(jìn)行訓(xùn)練。FasterR-CNN相比于之前的FastR-CNN,檢測(cè)時(shí)間由原來(lái)的2秒縮短到0.2秒,使得實(shí)時(shí)的檢測(cè)系統(tǒng)成為可能。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

One-Shot Detection

剛剛所說(shuō)的這一系列方法,都是把檢測(cè)問(wèn)題分成了兩步:先產(chǎn)生regionproposal,然后再去分類(lèi)和回歸。另一類(lèi)方法則是希望神經(jīng)網(wǎng)絡(luò)能夠一步到位,直接去定位物體。在Faster R-CNN中,RPN是一個(gè)弱分類(lèi)器,它不需要定位和分類(lèi)十分準(zhǔn)確。如果我們要求RPN得到非常精確的結(jié)果,就可以去掉后續(xù)做分類(lèi)和定位這一步驟了,整體流程變得更加簡(jiǎn)單。其實(shí)這類(lèi)方法相比R-CNN系列的方法,更早的時(shí)候就有了。例如2013年的時(shí)候有一個(gè)叫OverFeat的方法就是這么做的,只不過(guò)因?yàn)樾阅懿粔蚝玫脑驔](méi)有火起來(lái)。更早之前,在二十世紀(jì)90年代的時(shí)候用CNN去做人臉識(shí)別的一些工作,其實(shí)也是類(lèi)似的流程。這類(lèi)方法雖然流程上簡(jiǎn)單,但是模型的學(xué)習(xí)難度相比于兩個(gè)階段的方法要更難一些,要取得足夠好的效果,需要在網(wǎng)絡(luò)設(shè)計(jì)和學(xué)習(xí)目標(biāo)上下一些功夫。

一步到位的方法現(xiàn)在的一些代表工作有YOLO, SSD?,F(xiàn)在公司里用的DenseBox也是和SSD類(lèi)似的一個(gè)方法,是我在2014年末還在百度實(shí)習(xí)的時(shí)候做的工作。時(shí)間上應(yīng)該比SSD和YOLO都要早。這里我們就主要講一下SSD,它在PASCAL VOC數(shù)據(jù)集上能夠達(dá)到實(shí)時(shí)的檢測(cè)速度,效果也和Faster R-CNN差不多。SSD可以看作是一個(gè)強(qiáng)化版的RPN,輸出層的每一個(gè)像素都代表了一個(gè)檢測(cè)框。和RPN一個(gè)輸出層不同, SSD會(huì)有好幾個(gè)輸出層:比較淺的輸出層的分辨率比較高,用來(lái)檢測(cè)小一些的物體,比較深的層檢測(cè)大的物體。最后再把所有層的檢測(cè)結(jié)果合在一起作為最終的輸出。

這么做的也是有它的考慮:小物體在過(guò)深的層當(dāng)中可能會(huì)因?yàn)樯舷挛男畔⑦^(guò)多而丟失掉有效的表達(dá),同時(shí)高層的特征的分辨率也比較低,不好處理一塊區(qū)域內(nèi)多個(gè)物體的情況。物體檢測(cè)想要做得好的話,本質(zhì)上還是需要去解決物體和模板的配準(zhǔn)對(duì)齊(registration,alignment),包括位置上的和尺度上的對(duì)齊。R-CNN系列把配準(zhǔn)對(duì)齊問(wèn)題交給了regionproposal,而像SSD這種一步到位的檢測(cè)器,就只能指望模型本身的感受野去做配準(zhǔn)對(duì)齊。因此從方法上討論的話,前者更容易學(xué)習(xí),效果也會(huì)更好。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)


Summary

用CNN去解決檢測(cè)問(wèn)題的思路,基本就是這幾個(gè)套路。其實(shí)還有一個(gè)方向我們并沒(méi)有討論,就是用神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)怎么做檢測(cè)的后處理,例如非極大抑制(Non-Maximum Suppression)等。這類(lèi)工作關(guān)注的人相對(duì)比較少,所以相關(guān)的工作也不多。不過(guò)在上面介紹的幾個(gè)基本框架下,可以研究的細(xì)節(jié)還有很多,例如怎樣去處理好物體的尺度問(wèn)題,物體的形變問(wèn)題,怎樣用多任務(wù)學(xué)習(xí)來(lái)提高物體檢測(cè)的性能,怎樣去最好context和detail之前的平衡等等,我們就不在此做詳細(xì)討論了。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

總結(jié)一下,今天主要介紹了物體檢測(cè)的領(lǐng)域,包括物體檢測(cè)的概念,方法的評(píng)估。然后回顧了下圖像識(shí)別和檢測(cè)領(lǐng)域五十年來(lái)的發(fā)展。對(duì)于模式識(shí)別領(lǐng)域來(lái)說(shuō),深度學(xué)習(xí)是最好的提取圖像特征的方式,除非硬件受限只能用傳統(tǒng)的方法,不然就可以直接用現(xiàn)在最好的深度學(xué)習(xí)模型去做實(shí)驗(yàn)。這里面我們并沒(méi)有討論太多具體實(shí)現(xiàn)的細(xì)節(jié),其實(shí)在物體檢測(cè)領(lǐng)域,對(duì)細(xì)節(jié)的處理直接影響到模型最終的結(jié)果。如果你對(duì)有興趣的話,還是建議大家在具體的數(shù)據(jù)集上去嘗試,調(diào)參,慢慢地你就會(huì)有自己的理解。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

其實(shí)物體檢測(cè)的方法框架,近二十年來(lái)并沒(méi)有太大的變化。以前的方法為什么在當(dāng)時(shí)沒(méi)有成功呢?因?yàn)楫?dāng)時(shí)人們并沒(méi)有那么多的數(shù)據(jù)和計(jì)算資源,所以像深度學(xué)習(xí)這種計(jì)算密集型的數(shù)據(jù)驅(qū)動(dòng)的方法,在當(dāng)時(shí)完全沒(méi)有用武之地。而且當(dāng)數(shù)據(jù)很小的時(shí)候,很多根據(jù)數(shù)據(jù)集的特點(diǎn)專(zhuān)門(mén)調(diào)優(yōu)的方法,比起數(shù)據(jù)驅(qū)動(dòng)的方法更有效。另外,當(dāng)時(shí)的機(jī)器學(xué)習(xí)的工具并不像現(xiàn)在這么豐富和方便,即使有的話,很多做計(jì)算機(jī)視覺(jué)的人也還沒(méi)學(xué)會(huì)去用。

歷史總是會(huì)交替發(fā)展的,作為一個(gè)好的研究人員,你需要去發(fā)現(xiàn)從前的一些好的工作。解決問(wèn)題的具體辦法不一定相同,但是人們解決問(wèn)題的大致思路總是相似的。我們需要去弄明白為什么某些方法當(dāng)時(shí)并沒(méi)有起作用,哪些方法在現(xiàn)在還有應(yīng)用的潛力,需要用現(xiàn)在的方法去重新審視它們。

-End-

雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

干貨 | 算法工程師入門(mén)第三期——黃李超講物體檢測(cè)

分享:
相關(guān)文章

地平線機(jī)器人技術(shù)

嵌入式人工智能全球領(lǐng)導(dǎo)者
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)