天天看點

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

Region-based convolutionalnetworks for accurate object detection and segmentation(2016.PAMI)

Ross Girshick, Jeff Donahue, TrevorDarrell, Jitendra Malik

一、摘要

        目标檢測最近這幾年在PASCAL VOC挑戰賽上的表現達到相對穩定,表現最好的方法是那些将低層次的圖像特征和高層次是上下文資訊結合起來的複雜的內建系統。這篇論文提出了一種簡單可擴充的算法,相對于先前在VOC 2012上表現最好的算法mAP提高了超過50%——mAP達到了62.4%。本文的方法組合了兩個想法:(1)将高容量的CNN應用到為了定位和分割的自下而上的region proposals上;(2)當标記的資料不足時,用一個輔助的監督預訓練,加上一個特定區域的finetuning,能很好地改善效果。作者将這種方法稱為R-CNN。

二、論文的主要内容

1、Introduction

  本文通過對兩個問題的解決方法進行闡述,來表明CNN可以獲得比HOG之類特征更好的效果。

(1)怎樣用深度網絡定位目标?

  以前的方法中如果是單個目标,直接将檢測構造回歸問題;如果圖像中有多個目标,則使用滑動視窗的方法;在碰到長寬比不一緻的,可以通過像DPM這樣變換長寬比的混合模型的方法來解決。

本文解決定位問題方法是引入proposal。具體操作思路就是:首先系統對圖像産生大約2000個region proposals;然後用CNN給每個proposal提取一個固定長度的特征向量;最後再使用指定具體種類的SVM們(強調一下“們”,因為不是一個SVM,有多少個類就訓練多少個SVM)來對每個region進行分類。圖1就是R-CNN的網絡架構。

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

圖1.R-CNN網絡結構

(2)怎樣用隻有少量标記的檢測資料來訓練一個大容量的模型?即如何解決訓練過拟合的問題。

  傳統的方法是非監督的預訓練和監督的fine-tuning相結合的方法。

  本文方法是使用一個大的輔助的資料集進行監督預訓練,然後再用一個小的資料集進行具體範圍的fine-tuning。

2、相關工作:讨論了一些本文涉及到的一些要讨論的地方。

2.1 Deep CNNs for object detection.

2.2 可擴充性&速度. 可擴充性是指當分類的類目增加時,訓練的detector是否還适用。舉了一個基于DPM實作多分類的例子,但是檢測精度大打折扣。那本文進行多分類時,圖1中的前三部分都不需要變動,共享,隻需要多訓練一些SVM就行。

2.3 定位方法。上面說過。

2.4 Object proposal generation.

《What Makesfor Effective Detection Proposals》這篇論文主要探讨的就是這個問題。我之前有一篇關于這篇論文的閱讀筆記。網址:http://blog.csdn.net/mw_mustwin/article/details/52877922

2.5 Transfer learning. 就是怎麼樣預訓練怎麼樣fine-tuning的問題,論文要讨論的第二個問題,上面introduction裡也有簡單說明,後文中也會具體闡述。

2.6 R-CNN延伸。這個作者的R-CNN發了好幾篇論文,是以有幾個版本。14年就已經在CVPR上可以查到。是以這邊16年在PAMI上有交代了後來關于這篇論文的改進,其中包括作者自己的fast R-CNN。

3、R-CNN進行目标檢測

    這一節第一部分将模型設計,第二部分講detection的測試時間分析,第三部分講訓練過程,第四部分展示結果。

3.1 子產品設計

3.1.1 region proposals.

有很多種産生proposals的方法,具體見《WhatMakes for Effective Detection Proposals》,效果差别很大。本文使用的是selective search。

3.1.2 特征提取

使用CNN給每個proposal算法提取一個固定長度的特征向量。論文中大多數的實驗是使用的TorontoNet,後來也是用了16層的OxfordNet。

這兩種CNN的輸入都是經過mean-subtracted的S*S的RGB圖像(是以每個proposal要進行預處理,後面第七章有講到怎麼處理)。取softmax層前面輸出的經過前向傳播産生的4096維的特征向量。随後拿去訓練SVM。

3.2 運作時間分析

整個檢測過程:首先對測試的圖像用selective search産生大約2000個的proposal,然後轉化proposal的size輸入到CNN中,前向傳播後産生特征向量。每一個SVM對應一個class,将産生的特征向量再輸入到SVMs中,會産生每個class的得分。最後,對每一個class在圖像中的所有得分區域使用非極大值抑制,去除那些重合且得分低的視窗。

論文在檢測過程中兩個地方很高效,導緻其相對其他方法時間不會很長(但是還是挺長哈):(1)經過CNN的過程共享計算,即特征向量計算一遍就行。提取proposal和CNN提取特征在GPU上是10s每張圖,CPU每張圖53s。(2)提取的CNN特征向量是低維的,是以即使有很多個SVM,也不會産生太多的運作時間。

拿UVA系統進行對比分析,UVA運作時間是R-CNN的幾百倍(兩個量級),記憶體UVA要占據134GB,而R-CNN隻要1.5GB。

3.3 訓練過程

分為三塊,預訓練,fine-tuning以及SVM的訓練。

3.3.1 監督預訓練:使用一個大的輔助的資料集(ILSVRC2012)進行判别式地預訓練。

3.3.2 具體範圍的fine-tuning

為了适應新的任務和範圍,我們接着隻使用新的具體的資料集提取的proposal,以及随機低度下降方法來訓練CNN參數。CNN的網絡除了輸出的類别數目由原來ILSVRC2012的1000類變為現在的N+1類,1表示背景。

那些和groundtruth重合IoU大于等于0.5的記為正樣本,其餘記為負樣本。(這裡我原先以為隻要區分是目标還是背景就行了,一直很混淆,看了兩遍才明白不是,每個正樣本還要指定對應的是哪一類的正樣本,是以其實上面的+1好像沒啥意義,隻要所有類别都為0不就表示是背景了嗎?是以上面雖然說是N+1類,但是實際輸出N維就可以了吧?)梯度下降算法的學習速率為0.001,使用批訓練的方式,每批128個樣本(正樣本32,負樣本96)。因為OxfordNet需要更多的記憶體,是以每批24個。

3.3.3 SVM進行具體類别分類

這邊SVM訓練時也考慮到IoU臨界值設定問題,但是此時隻把所有的groundtruth box

視為正樣本,proposal與groundtruthbox的IoU小于等于0.3(0.3這個值是實驗得出來的)就判為負樣本。是以SVM訓練過程中的proposal其實隻是用來産生負樣本的。另外,每個正樣本還是要對應一個200維的标簽,當訓練A類時,把所有正樣本中A類對應标簽為1拿出來和負樣本組合訓練一個SVM,然後再訓練B類……以此類推。

特征向量和标簽設定好就開始訓練,考慮到占記憶體的問題使用Hard negative mining方法來訓練SVM。

3.3.4 這麼費勁訓練的原因

第一個問題,關于finetuning階段使用的正樣本和SVM階段不一樣的原因:如果fine-tuning使用和SVM階段一樣的正樣本,結果會變很差,分析原因應該是:樣本的數目會變少,訓練發生過拟合。

第二個問題,為什麼不直接用CNN的Softmax?因為相對于論文中的結果較差,3個percent的差距,分析原因可能是:fine-tuning使用的正樣本不夠精确定位,以及softmax使用的負樣本是随機的,而SVM使用的是難例的子集。

3.4 結果

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

圖2. VOC2010上各算法結果比較

并沒有給VOC2012具體比較,隻說了有相似的結果,兩種CNN的mAP分别是53.3%,62.4%。

4、分析

4.1 可視化學習的特征

就不具體寫了,附張圖,大意就是學習到的特征能很好地反映圖像内容。

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

圖3. 可視化特征

4.2  Ablationstudy(不知道怎麼翻譯,大意是分析每個細節對結果的影響)

4.2.1 沒有fine-tuning每一個全連接配接層的表現

Fc6的表現比fc7的表現好,是以沒有必要加fc7。甚至移除fc6,pool5的輸出效果相對fc6也沒差太多。是以可以省去很多參數的訓練。

4.2.2 帶fine-tuning的每一個全連接配接層表現

Fc6和fc7相對于pool5的輸出特征在最終的結果上有很大提高。

4.2.3 和最近的特征學習方法比較:R-CNN好太多。

附具體表現圖:

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

圖4. VOC2007具體表現比較

4.3 網絡結構

将TorontoNetand OxfordNet兩種網絡結構進行比較。OxfordNet的效果比TorontoNet好很多,但是前向傳播時間長7倍。具體結果附圖:

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

圖5. TorontoNet and OxfordNet兩種網絡結構結果比較。

4.4 檢測的誤差分析

4.5 Bounding-Box 回歸

用pool5層提取的特征訓練一個線性回歸模型預測新的檢測視窗來提高定位表現。

将那些和最近的groundtruthbox有至少0.6的IoU的proposal作為訓練樣本,其餘的proposal丢棄,形成N個訓練對

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

。這裡P指proposal對應的特征向量,G指ground-truth box。具體訓練過程沒細看。

5 ILSVRC2013 檢測資料集

5.1資料集介紹

包括訓練集(395918),驗證集(20121)以及測試集(40152)。應該是算法隻能想系統送出兩次。訓練集标記不充分,是以政策是依賴驗證集,輔助訓練集。将驗證集劃分為val1和val2。

5.2 region proposal

  和前面沒差,主要是ILSVRC資料集尺寸不一緻,是以在selective search之前對圖像尺寸作調整。

5.3 訓練資料

  訓練集包括:(1)val1中的groundtruth box;(2)selective search在val1上産生的proposal;(3)訓練集上最多N個ground-truth box。(N論文中有三個選擇:0,500,1000)。

訓練集用于CNNfine-tuning,SVM的訓練以及Bounding-Box回歸。具體怎麼用,見下圖。其中測試集是test的兩個是送出的。

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

圖6.ILSVRC2013不同訓練資料選擇以及結果

第6章 關于分割,目前暫時不關注。

7、實作和設計細節

7.1 proposal的轉換

  Selective search産生的proposal是任意的矩形,但CNN的輸入需要固定的size。兩個方法:

  (1)tightest square with/without context。意思就是proposal不變型,以長邊為基準,短的一邊要麼加原圖内容,要麼加白色邊來填充。

  (2)warp。就是變形拉伸,就類似于我們平常不固定長寬比調圖像大小圖像會扭曲類似。Warp好像就有扭曲的意思。效果見圖,一看就懂。

R-CNN:Region-based convolutional networks for accurate object detection and segmentation閱讀筆記一、摘要二、論文的主要内容

圖7. 處理proposal方式。A為原proposal;B為填充原圖内容;C填充灰邊;D扭曲。

7.2 Positive versus negative examples and softmacx

見3.3.4

7.3 boundingbox regression

見4.5

繼續閱讀