RCNN (Regions with CNN) 目标物检测 Fast RCNN的基础
RCNN (Regions with CNN) 目標(biāo)物檢測 Fast RCNN的基礎(chǔ)
Abstract:
貢獻(xiàn)主要有兩點1:可以將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用region proposal的策略,自底下上訓(xùn)練可以用來定位目標(biāo)物和圖像分割 2:當(dāng)標(biāo)注數(shù)據(jù)是比較稀疏的時候,在有監(jiān)督的數(shù)據(jù)集上訓(xùn)練之后到特定任務(wù)的數(shù)據(jù)集上fine-tuning可以得到較好的新能,也就是說用Imagenet上訓(xùn)練好的模型,然后到你自己需要訓(xùn)練的數(shù)據(jù)上fine-tuning一下,檢測效果很好?,F(xiàn)在達(dá)到的效果比目前最好的DPM方法 mAP還要高上20點,目前voc上性能最好。
著篇文章主要是介紹RCNN,跟后面的,Fast RCNN和Faster RCNN比較關(guān)聯(lián),這篇文章是后兩個的基礎(chǔ)
1.介紹
在開始他說到LeCun對卷積神經(jīng)網(wǎng)絡(luò)中采用的SGD(通過反向傳播的隨機(jī)梯度下降算法)對網(wǎng)絡(luò)訓(xùn)練很有效,也直接促進(jìn)了利用CNN來做檢測。
其實CNN的算法在90年代就已經(jīng)出現(xiàn)了,可惜當(dāng)時被SVM取代了,主要原因就是當(dāng)時訓(xùn)練不動。2012年的時候Krizhevsky復(fù)燃了CNN,其在Imagenet的數(shù)據(jù)集上訓(xùn)練達(dá)到了非常好的效果,主要是用了LeCun中的一些技巧如(rectifying non-linearities and “dropout” regularization)
后來就有了討論說把CNN方到目標(biāo)檢測上能達(dá)到什么樣的效果。因此RossGirshick把問題主要聚集在了2個點上:
1一個是用深度網(wǎng)絡(luò)來做一個檢測,并且在整個high-capacity model中用較少的標(biāo)注數(shù)據(jù)來training,比如幾萬張圖像,(畢竟Imagenet上有上千萬的圖像數(shù)據(jù))。不像圖像分類任務(wù),檢測是需要定位的。因此RCNN里把這個定位轉(zhuǎn)換成一個regression problem(即回歸問題)。當(dāng)然他們在當(dāng)時也想采用最經(jīng)典的也就是sliding window,在卷積層增加了較大的感受野。但是他們最后沒有采用,因為之前的DPM中也已經(jīng)不采用這種方法了,無效的操作太多(PS.這里是我個人感覺,而且會增加復(fù)雜度)。他們最后采用的是Recognition using region的策略(這種paradigm已經(jīng)在目標(biāo)識別和semantic segmention中取得了較好的成功)。在測試階段,他們提取約2000K預(yù)選框,從預(yù)選框中通過CNN提取出fixed-length的特征,最后通過特定類別的SVM來分類。對于不同大小的ROI采用了(affine image warping)來調(diào)整到固定的size,這種方法是不考慮region的形狀的。整個系統(tǒng)的overview
2.在實際檢測中,訓(xùn)練的樣本肯定是scarce,不足以訓(xùn)練一個大型的CNN網(wǎng)絡(luò)。解決這個問題的方法是,首先通過無監(jiān)督的預(yù)訓(xùn)練unsupervised pretraining,然后再進(jìn)行supervised training,在實驗中他們提到經(jīng)過fine-tuninig,檢測的mAP有8個點的提高。Ross提到Donahue的同時期的工作,其直接拿了krizhevsky的CNN網(wǎng)絡(luò)用來做一個blackbox feature的extractor,這也在識別任務(wù)中表現(xiàn)出了較好的性能,如場景識別,細(xì)粒度的子分類,領(lǐng)域適應(yīng)。分類計算中只有整個的分類工作只是一個矩陣相乘和非極大值抑制。
在錯誤分析中,可以發(fā)現(xiàn)bounding box的regression 可以明顯的減少mislocalization。同理,作者說因為RCNN是工作在Region上的,因此其也可以較好的應(yīng)用到semantic segmentation,最后也在voc2011上取得了較好的效果,比最好的高出1個點,(PS.我認(rèn)為應(yīng)該會有更好的性能,應(yīng)該還沒有做透,原來的那些分割仍然依賴淺層的特征)
特征提取:在網(wǎng)絡(luò)之前,ROI不管大小形狀都被縮放到一個固定的尺寸以適應(yīng)網(wǎng)絡(luò)。
2.2
測試時檢測
在RCNN中,為每一類都訓(xùn)練了一個SVM,最后根據(jù)輸出的特征類判斷,每一個區(qū)域都有一個得分,最后通過greedy non-maximun supperssinon(for each class independently)來接受或者拒絕一個region,主要是看他這個有IoU的region是否比學(xué)習(xí)到的閾值有更高的得分。
對于運行分析
1.所有的CNN參數(shù)都在各個類別分享參數(shù)
2.CNN計算出來的參數(shù)是low dimensional 低維的,與其他方法比起來如空間金字塔,以及視覺詞帶模型
4.RCNN可以應(yīng)付類別很多情況并且不需要借助一些額外的近似手段,比如哈希什么的,別的方法在類別增長時,整個復(fù)雜度會上升很多,比之前的DPM的方法也要好很多
2.3 訓(xùn)練過程
supervised-pretraining ----> domain-specifi fine-tuning ---->object categroy classier
1.supervised-pretraining是在imagenet上訓(xùn)練好的模型
2.domian-specific fine-tuning 首先需要修改類別數(shù)目,并且在文中,Ross將IoU和GT大于0.5的看成是正樣本,在SGD中 lr為pre-training rate的十分之一為0.001,這樣不會影響預(yù)訓(xùn)練。在SGD中,每一次迭代,mini-batch大小是128,總共有32個postive window,96個negtive window.`
3可視化學(xué)習(xí)的特征
在可視化學(xué)習(xí)特征中中,采用了一個很大的局部感受野的數(shù)據(jù)集。這了主要對卷基層進(jìn)行可視化,輸入region圖像,根據(jù)unit激活之的大小排序,來看他對什么樣的輸入敏感。下圖可以看到有一些Unit對人臉敏感如1,有一些對點陣,狗敏感如2行,第三行,對紅色敏感,對第四行對文字敏感,也能將一些特征融合到一起入顏色、紋理、形狀,如5行的屋子。。等等
這里很關(guān)鍵!5層之后為全連接層,全連接層可以將這些豐富的特征進(jìn)行組合建模!
3.2 關(guān)于參數(shù)消除的研究
1.performace沒有fine-tuning
從表中可以看到fc7產(chǎn)生的特征比fc6澶色恒的特征要差,這也就是說29%差不多1.68million個數(shù)據(jù)是可以從CNN網(wǎng)絡(luò)中去掉的,并且?guī)缀鯇AP沒什么影響。更加驚訝的是,如果把f6和f7都去掉的話,只用pool5層的參數(shù)也就是大于整個網(wǎng)絡(luò)6%的參數(shù)也可以取得不錯的結(jié)果如下圖所示:可以看到大部分representational的能力主要是來自于CNN的卷積層,而不是主要的全連接層。這個發(fā)現(xiàn)可以用在稠密的特征map中,比如說Hog。這種表現(xiàn)能力也就是說我們有可以將其應(yīng)用到一些滑動窗檢測子中如DPM,在pool5的特征基礎(chǔ)之上。作者原文(Much of the CNN’s representationalpower comes from its convolutional layers, rather than fromthe much larger densely connected layers. This finding suggests potential utility in computing a dense feature map, in the sense of HOG, of an arbitrary-sized image by using only the convolutional layers of the CNN. This representation would enable experimentation with sliding-window detectors, including DPM, on top of pool5 features)
2.經(jīng)過fine-tuning的性能
可以看到fine-tuning的效果還是很明顯的,幾乎提高了8個點,并且對于fc67的效果更明顯,這也就是說從imagenet中學(xué)習(xí)到的pool5的特征比較general,并且對于性能的提升主要是來自對于在他們基礎(chǔ)上的domain-specific具體應(yīng)用場景的non-linear分類器的訓(xùn)練。
3.4 關(guān)于BBOX
首先需要明確的是,RCNN并不是從預(yù)選框里選擇一個判斷一下那么簡單,在論文中的錯誤分析,大部分的檢測錯誤的主要成分都是localize error 也就是定位錯誤,IoU在0.1和0.5之間。與別的類別以及背景confusion比例非常小,在這里作者根據(jù)最后輸出的feature 進(jìn)一步做了regression, 采用的是之前在DPM檢測中的用的Linear regression model,這個讓mAP大概提高了4個點。
4 Semantic segmentation
文中也提到了將RCNN網(wǎng)絡(luò)用語分割,但是效果與目前較好的O2P的方法沒有本質(zhì)的提高約0.9。我認(rèn)為主要還是網(wǎng)絡(luò)學(xué)習(xí)過程并不足,其對于細(xì)粒度的特征沒有一個整體的學(xué)習(xí)過程,目前在semantic segmentation上性能最好的是《Learning Deconvolution Network for Semantic Segmentation》目前在pascal-voc數(shù)據(jù)集上是第一的性能,他的網(wǎng)絡(luò)中有一個對稱的deconvolutoin network。
結(jié)束語:最近這幾年確實,在目標(biāo)物檢測的性能上是停滯不前了,現(xiàn)在最好的DPM算法都是結(jié)合好多l(xiāng)ow-level的feature,并且這些feature都是手工設(shè)計的加上一些high-level context from detector和scene classifier。這篇文章給出了基于Region proposal和CNN網(wǎng)絡(luò)極大的提高了mAP。有監(jiān)督的預(yù)訓(xùn)練在特定場合的fine-tuning這一模式會針對很多數(shù)據(jù)系稀疏的是視覺問題有效。作者這里的意思是說拿Imagenet上訓(xùn)練好的那個模型,然后根據(jù)自己的特定應(yīng)用場景,把模型用自己的數(shù)據(jù)fine-tuning一下,這樣的做法是挺有效的。
#1樓?2016-01-27 16:02?kltsyn? 您好樓主看了您的分析明白了不少
一直不明白最后的SVM是根據(jù)什么做的分類,每個proposal提完特征以后,svm是怎么知道把這些特征分為哪一類的呢 支持(0)反對(0) #2樓[樓主]?2016-02-19 13:07?樓燚航的blog? @?kltsyn
首先訓(xùn)練的時候是有GroundTruth的,跟這個GroundTruth重合的比例在文中默認(rèn)是50%就歸為這個GT對應(yīng)的類別,否則小于50%就算作Background了
總結(jié)
以上是生活随笔為你收集整理的RCNN (Regions with CNN) 目标物检测 Fast RCNN的基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fast RCNN 训练自己的数据集(3
- 下一篇: 楼燚(yì)航的blog URL