1.幾個(gè)重要的概念:
參考R-CNN的幾個(gè)重要概念
什么是R-CNN
? ? ? ? ? Since we combine region proposals?with CNNs, we call our method R-CNN: Regions with CNN
features.
R-CNN中的boundingbox回歸
下面先介紹R-CNN和Fast R-CNN中所用到的邊框回歸方法。
什么是IOU
為什么要做Bounding-box regression?
如上圖所示,綠色的框?yàn)轱w機(jī)的Ground Truth,紅色的框是提取的Region Proposal。那么即便紅色的框被分類器識(shí)別為飛機(jī),但是由于紅色的框定位不準(zhǔn)(IoU<0.5),那么這張圖相當(dāng)于沒(méi)有正確的檢測(cè)出飛機(jī)。如果我們能對(duì)紅色的框進(jìn)行微調(diào),使得經(jīng)過(guò)微調(diào)后的窗口跟Ground Truth更接近,這樣豈不是定位會(huì)更準(zhǔn)確。確實(shí),Bounding-box regression 就是用來(lái)微調(diào)這個(gè)窗口的。
回歸/微調(diào)的對(duì)象是什么?
Bounding-box regression(邊框回歸)
那么經(jīng)過(guò)何種變換才能從圖11中的窗口P變?yōu)榇翱谀兀勘容^簡(jiǎn)單的思路就是:
注意:只有當(dāng)Proposal和Ground Truth比較接近時(shí)(線性問(wèn)題),我們才能將其作為訓(xùn)練樣本訓(xùn)練我們的線性回歸模型,否則會(huì)導(dǎo)致訓(xùn)練的回歸模型不work(當(dāng)Proposal跟GT離得較遠(yuǎn),就是復(fù)雜的非線性問(wèn)題了,此時(shí)用線性回歸建模顯然不合理)。這個(gè)也是G-CNN: an Iterative Grid Based Object Detector多次迭代實(shí)現(xiàn)目標(biāo)準(zhǔn)確定位的關(guān)鍵。
PASCAL VOC數(shù)據(jù)集
PASCAL VOC為圖像識(shí)別和分類提供了一整套標(biāo)準(zhǔn)化的優(yōu)秀的數(shù)據(jù)集,從2005年到2012年每年都會(huì)舉行一場(chǎng)圖像識(shí)別challenge。



2.R-CNN 模型
中心思想:
RCNN全程就是Regions with CNN features,從名字也可以看出,RCNN的檢測(cè)算法是基于傳統(tǒng)方法來(lái)找出一些可能是物體的區(qū)域,再把該區(qū)域的尺寸歸一化成卷積網(wǎng)絡(luò)輸入的尺寸,最后判斷該區(qū)域到底是不是物體,是哪個(gè)物體,以及對(duì)是物體的區(qū)域進(jìn)行進(jìn)一步回歸的微微調(diào)整(與深度學(xué)習(xí)里的finetune去分開(kāi),我想表達(dá)的就只是對(duì)框的位置進(jìn)行微微調(diào)整)學(xué)習(xí),使得框的更加準(zhǔn)確。
? ? ? ?正如上面所說(shuō)的,RCNN的核心思想就是把圖片區(qū)域內(nèi)容送給深度網(wǎng)絡(luò),然后提取出深度網(wǎng)絡(luò)某層的特征,并用這個(gè)特征來(lái)判斷是什么物體(文章把背景也當(dāng)成一種類別,故如果是判斷是不是20個(gè)物體時(shí),實(shí)際上在實(shí)現(xiàn)是判斷21個(gè)類。),最后再對(duì)是物體的區(qū)域進(jìn)行微微調(diào)整。實(shí)際上文章內(nèi)容也說(shuō)過(guò)用我之前所說(shuō)的方法(先學(xué)習(xí)分類器,然后sliding windows),不過(guò)論文用了更直觀的方式來(lái)說(shuō)明這樣的消耗非常大。它說(shuō)一個(gè)深度網(wǎng)絡(luò)(alexNet)在conv5上的感受野是195×195,按照我的理解,就是195×195的區(qū)域經(jīng)過(guò)五層卷積后,才變成一個(gè)點(diǎn),所以想在conv5上有一個(gè)區(qū)域性的大?。?×7)則需要原圖為227×227,這樣的滑窗每次都要對(duì)這么大尺度的內(nèi)容進(jìn)行計(jì)算,消耗可想而知,故論文得下結(jié)論,不能用sliding windows的方式去做檢測(cè)(消耗一次用的不恰當(dāng),望各位看官能說(shuō)個(gè)更加準(zhǔn)確的詞)。不過(guò)論文也沒(méi)有提為什么作者會(huì)使用先找可能區(qū)域,再進(jìn)行判斷這種方式,只是說(shuō)他們根據(jù)09年的另一篇論文[1],而做的。這也算是大神們與常人不同的積累量吧。中間的深度網(wǎng)絡(luò)通過(guò)ILSVRC分類問(wèn)題來(lái)進(jìn)行訓(xùn)練,即利用訓(xùn)練圖片和訓(xùn)練的分類監(jiān)督信號(hào),來(lái)學(xué)習(xí)出這個(gè)網(wǎng)絡(luò),再根據(jù)這個(gè)網(wǎng)絡(luò)提取的特征,來(lái)訓(xùn)練21個(gè)分類器和其相應(yīng)的回歸器,不過(guò)分類器和回歸器可以放在網(wǎng)絡(luò)中學(xué)習(xí),

R-CNN 模型
如果要擬人化比喻,那 R-CNN 肯定是 Faster R-CNN 的祖父了。換句話說(shuō),R-CNN 是一切的開(kāi)端。
R-CNN,或稱 Region-based Convolutional Neural Network,其工作包含了三個(gè)步驟:
1.借助一個(gè)可以生成約 2000 個(gè) region proposal 的「選擇性搜索」(Selective Search)算法,R-CNN 可以對(duì)輸入圖像進(jìn)行掃描,來(lái)獲取可能出現(xiàn)的目標(biāo)。
2.在每個(gè) region proposal 上都運(yùn)行一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(CNN)。
3.將每個(gè) CNN 的輸出都輸入進(jìn):a)一個(gè)支持向量機(jī)(SVM),以對(duì)上述區(qū)域進(jìn)行分類。b)一個(gè)線性回歸器,以收縮目標(biāo)周圍的邊界框,前提是這樣的目標(biāo)存在。
下圖具體描繪了上述 3 個(gè)步驟:

3.論文通讀
Abstract:
? ? ? ? ? ? ? ? ?R-CNN的兩個(gè)貢獻(xiàn):1.cnn卷積層的能力很強(qiáng),可以遍歷候選區(qū)域達(dá)到精確的定位。2.當(dāng)有標(biāo)簽的數(shù)據(jù)很少的時(shí)候,我們可以事前進(jìn)行有標(biāo)簽(別的數(shù)據(jù)集上?)的預(yù)訓(xùn)練作為輔助任務(wù),然后對(duì)特定的區(qū)域進(jìn)行微調(diào)。
Introduction:
? ? ? ? ? ? ? ?這篇文章最開(kāi)始是在PASCAL VOC上在圖像分類和目標(biāo)檢測(cè)方面取得了很好的效果。
? ? ? ? ? ? ? ?為了達(dá)到很好的效果,文章主要關(guān)注了兩個(gè)問(wèn)題:1.用深層網(wǎng)絡(luò)進(jìn)行目標(biāo)的定位。2.如何用少量的帶標(biāo)簽的檢測(cè)數(shù)據(jù)來(lái)訓(xùn)練模型
? ? ? ? ? ? ? ? 對(duì)于對(duì)一個(gè)問(wèn)題目標(biāo)定位,通常有兩個(gè)思路可以走:
? ? ? ? ? ? ? ? ? ? ?1.把定位看成回歸問(wèn)題。效果不是很好。
? ? ? ? ? ? ? ? ? ? ?2.建立劃窗檢測(cè)器。
? ? ? ? ? ? ? ? CNN一直采用建立劃窗這個(gè)方式,但是也只是局限于人臉和行人的檢測(cè)問(wèn)題上。
? ? ? ? ? ? ? 本文使用了五個(gè)卷積層(感受野食195*195),在輸入時(shí)移動(dòng)步長(zhǎng)是32*32。
? ? ? ? ? ? ? 除此之外,對(duì)于定位問(wèn)題,我們采用區(qū)域識(shí)別的策略。

? ? ? ? ? ? ? ? 在測(cè)試階段,本文的方法產(chǎn)生了大約2000個(gè)類別獨(dú)立的候選區(qū)域作為cnn的輸入。然? ? ? ? ? ?后得到一個(gè)修正后的特征向量。然后對(duì)于特定的類別用線性SVM分類器分類。我們用簡(jiǎn)? ? ? ? ? ? ?單的方法(放射圖像變形)來(lái)將候選區(qū)域變成固定大小。
? ? ? ? ? ? ? ? ? 對(duì)于第二個(gè)缺少標(biāo)簽數(shù)據(jù)的問(wèn)題
? ? ? ? ? ? ? ? ? ?目前有一個(gè)思路就是無(wú)監(jiān)督的預(yù)訓(xùn)練,然后再加入有監(jiān)督的微調(diào)。
? ? ? ? ? ? ? ? ? ?作為本文最大的貢獻(xiàn)之二:在ILSVRC數(shù)據(jù)集上,我們先進(jìn)行有監(jiān)督的預(yù)訓(xùn)練。然? ? ? ? ? ? ? ? ? 后我們?cè)赑ASCAL這個(gè)小數(shù)據(jù)集上我們進(jìn)行特定區(qū)域的微調(diào)。在我們的實(shí)驗(yàn)中,微調(diào)? ? ? ? ? ? ? ? ? 可以提升8%的mAP。
? ? ? ? ? ? ? ? ? ? 本文的貢獻(xiàn);效率高
? ? ? ? ? ? ? ? ? ??僅僅是特別類別的計(jì)算是合乎情理的矩陣運(yùn)算,和非極大值抑制算法。他們共享權(quán)? ? ? ? ? ? ? ? 值,并且都是低維特征向量。相比于直接將區(qū)域向量作為輸入,維數(shù)更低。
? ? ? ? ? ? ? ?本文方法處理能實(shí)現(xiàn)目標(biāo)檢測(cè),還以為實(shí)現(xiàn)語(yǔ)義分割。
2.用R-CNN進(jìn)行目標(biāo)檢測(cè):
? ? ? ? ? ?有3個(gè)Model:
? ? ? ? ? ?(1)產(chǎn)生獨(dú)立的候選區(qū)域。
? ? ? ? ? ?(2)CNN產(chǎn)生固定長(zhǎng)度的特征向量。
? ? ? ? ? ? (3)針對(duì)特別類別的一群svm分類器。
2.1 模塊的設(shè)計(jì)
候選區(qū)域:
? ? ? ? ? ? ? ? ?之前有大量的文章都提過(guò)如果產(chǎn)生候選區(qū)域。本文采用SS(selective search )方法。參考文獻(xiàn)【34】+【36】
特征抽取:
? ? ? ? ? ? ? ? 對(duì)于每個(gè)候選區(qū)域,我們采用cnn之后得到4096維向量。


2.2 測(cè)試階段的檢測(cè)
? ? ? ? ? ? ? 在測(cè)試階段,我們用選擇性搜素的方式在測(cè)試圖片上選取了2000個(gè)候選區(qū)域,如上圖所示的步驟進(jìn)行。
運(yùn)行時(shí)間分析:總之當(dāng)時(shí)相比很快。
2.3訓(xùn)練模型
有監(jiān)督的預(yù)訓(xùn)練:我們使用了大量的ILSVRC的數(shù)據(jù)集來(lái)進(jìn)行預(yù)訓(xùn)練CNN,但是這個(gè)標(biāo)簽是圖片層的。換句話說(shuō)沒(méi)有帶邊界這樣的標(biāo)簽。
特定區(qū)域的微調(diào):我們調(diào)整VOC數(shù)據(jù)集的候選區(qū)域的大小,并且我們把ImageNet上午1000類,變成了21類(20個(gè)類別+1個(gè)背景)。我們把候選區(qū)域(和真實(shí)區(qū)域重疊的)大于0.5的標(biāo)記為正數(shù),其他的標(biāo)記為負(fù)數(shù)。然后用32個(gè)正窗口和96個(gè)負(fù)窗口組成128的mini-batch。
目標(biāo)類別分類器:
? ? ? ? 對(duì)于區(qū)域緊緊的包括著目標(biāo)的時(shí)候,這肯定就是正樣本。對(duì)于區(qū)域里面全部都是背景的,這也十分好區(qū)分就是負(fù)樣本。但是某個(gè)區(qū)域里面既有目標(biāo)也有背景的時(shí)候,我們不知道如歌標(biāo)記。本文為了解決這個(gè),提出了一個(gè)閾值:IoU覆蓋閾值,小于這個(gè)閾值,我們標(biāo)記為負(fù)樣本。大于這個(gè)閾值的我們標(biāo)記為正樣本。我們?cè)O(shè)置為0.3。這個(gè)是一個(gè)超參數(shù)優(yōu)化問(wèn)題。我們使用驗(yàn)證集的方法來(lái)優(yōu)化這個(gè)參數(shù)。然而這個(gè)參數(shù)對(duì)于我們的最后的性能有很大的幫助。
? ? ? ? 一旦,我們得到特征向量。因?yàn)橛?xùn)練數(shù)據(jù)太大了。我們采用standard hard negative mining method(標(biāo)準(zhǔn)難分樣本的挖掘)。這個(gè)策略也是的收斂更快。
2.4 Results on PASCAL VOC 201012

3.3. Visualization, ablation, and modes of error
3.1. Visualizing learned features
? ? ? 提出了一個(gè)非參數(shù)的方法,直接展現(xiàn)出我們的網(wǎng)絡(luò)學(xué)習(xí)到了什么。這個(gè)想法是將一個(gè)特定的單元(特性)放在其中使用它,就好像它自己是一個(gè)對(duì)象檢測(cè)器正確的。具體方法就是:我們?cè)诖罅亢蜻x區(qū)域中,計(jì)算每個(gè)單元的激勵(lì)函數(shù)。按從最高到最低排序激活輸出,執(zhí)行非最大值抑制,然后顯示得分最高的區(qū)域。我們的方法讓選定的單元“為自己說(shuō)話”通過(guò)顯示它所觸發(fā)的輸入。我們避免平均為了看到不同的視覺(jué)模式和獲得洞察力為單位計(jì)算的不變性。我們可以看到來(lái)著第五個(gè)maxpooling返回的區(qū)域。第五層輸出的每一個(gè)單元的接受野對(duì)應(yīng)輸出227*227的其中的195*195的像素區(qū)域。所以中心那個(gè)點(diǎn)單元有全局的視覺(jué)。

3.2. Ablation studies
實(shí)際上ablation study就是為了研究模型中所提出的一些結(jié)構(gòu)是否有效而設(shè)計(jì)的實(shí)驗(yàn)。比如你提出了某某結(jié)構(gòu),但是要想確定這個(gè)結(jié)構(gòu)是否有利于最終的效果,那就要將去掉該結(jié)構(gòu)的網(wǎng)絡(luò)與加上該結(jié)構(gòu)的網(wǎng)絡(luò)所得到的結(jié)果進(jìn)行對(duì)比,這就是ablation study。
Performance layer-by-layer, without fine-tuning.
我們只觀察了最后三層

Performance layer-by-layer, with fine-tuning.
微調(diào)之后,fc6和fc7的性能要比pool5大得多。從ImageNet中學(xué)習(xí)的pool5特性是一般的,而且大部分的提升都是從在它們之上的特定領(lǐng)域的非線性分類器學(xué)習(xí)中獲得的。

Comparison to recent feature learning methods.
? ? ? ? ? ? ?見(jiàn)上圖
3.3. Detection error analysis
? ? ? ? ? CNN的特征比HOG更加有區(qū)分。

3.4. Bounding box regression
有了對(duì)錯(cuò)誤的分析,我們加入了一種方法來(lái)減少我們的定位錯(cuò)誤。我們訓(xùn)練了一個(gè)線性的回歸模型
4.相關(guān)文獻(xiàn)


HOG和SIFT很慢。但是我們可以由此得到啟發(fā),利用有順序等級(jí)和多階段的處理方式,來(lái)實(shí)現(xiàn)特征的計(jì)算。

生物啟發(fā)的等級(jí)和移不變性,本文采用。但是缺少有監(jiān)督學(xué)習(xí)的算法。

使得卷積訓(xùn)練變得有效率。



第一層的卷積層可以可視化。
【23】本文采用這個(gè)模型,來(lái)得到特征向量

? ImageNet Large Scale Visual Recognition Competition
用了非線性的激勵(lì)函數(shù),以及dropout的方法。





【34】直接將區(qū)域向量作為輸入,維數(shù)較高。IoU覆蓋閾值=0.5,而本文設(shè)置為0.3,能提高5個(gè)百分點(diǎn)。產(chǎn)生候選區(qū)域的方式:selective search 也是本文所采取的方式是結(jié)合【34】+【36】。


【5】產(chǎn)生候選區(qū)域的方式為:限制參數(shù)最小割


bounding box regression


HOG-based DPM文章3.2section中的對(duì)比試驗(yàn)。







縮略圖概率。


[18][26][28]文章3.2section中的對(duì)比試驗(yàn)。