Two-stage:從R-CNN到Faster R-CNN

1. R-CNN

概覽

R-CNN

R-CNN訓(xùn)練的過程如上圖:

1 輸入圖片附迷,通過selective search獲取2000個可能包含目標的區(qū)域PR茴迁。
2 將PR變形縮放到227*227的大小輸入到CNN網(wǎng)絡(luò)中進行特征提取
3 將提取出的特征輸入到svm中進行分類

接下來我們對每一部分進行細致的分析。

1.1 Region Proposal

候選區(qū)域的提取使用的是傳統(tǒng)的selective search方法菇曲,其利用像素之間的關(guān)系來合并得到可能存在的區(qū)域嗡午,比滑窗法高效得多,但是計算量很大并且其候選框存在大量的冗余稠肘,后續(xù)的算法利用深度學(xué)習(xí)對RP進行了改進福铅。

2特征提取

2.1 圖片縮放

實際上,在第一步RP獲得的候選框的大小不可能完全一樣项阴,然后我們使用的CNN網(wǎng)絡(luò)由于最后連接了全連接層滑黔,那么我們輸入的圖片的大小必須是一致的(強行變形到一致會導(dǎo)致特征的損失,后續(xù)有網(wǎng)絡(luò)對此進行了優(yōu)化)环揽,那么輸入之前我們把這些區(qū)域縮放到227*227,縮放的方法如下:

  • B: 直接用原始圖片的像素擴充略荡,形成一個227*227的區(qū)域
  • C: 用灰色填補缺失的部分
  • D: 直接放縮


    Wrap.PNG
2.2特征提取CNN
Alexnet.png

特征提取網(wǎng)絡(luò)是基于Alex net的變形,AlexNet的結(jié)構(gòu)如圖薯演,首先這個Alexnet的權(quán)重是在ImageNet數(shù)據(jù)集上訓(xùn)練好的撞芍,我們只需要把softmax的1000個類別改為21 (數(shù)據(jù)集為Pascal Voc格式,其中有20個類別跨扮,背景也算一個負類序无,一共21)验毡,然后在poscal voc數(shù)據(jù)集上做fine-tuning,使得alexnet的權(quán)重你和當前數(shù)據(jù)集辩昆。

3 SVM分類

對每一個類別菱涤,訓(xùn)練一個SVM分類器,每個SVM的輸入為Alexnet中最后一個全連接層FC7的4096維向量华望,那么對于每個候選框來說哟玷,最終都會輸出一個4096維向量來送入到SVM進行分類狮辽,那么就會得到2000個分類,其中對于同一個目標可能會存在多個候選框巢寡,那么我們就要做一個NMS(non-maximun suppression),得到最佳的預(yù)測框喉脖。對于位置的預(yù)測,我們訓(xùn)練一個回歸器抑月,輸入的數(shù)據(jù)是Pool5的特征和每個樣本對的坐標和長寬树叽。后續(xù)深入探討下Bbox回歸

一些重要的細節(jié)

1.正負樣本
在fine-tuning 中,對于得到的2000個RP,如果某個RP與GT(ground truth)重疊的部分最大的那個其IOU大于0.5谦絮,那么RP可以作為這個GT的正樣本题诵,否則為負樣本,另外层皱,GT也作為正樣本性锭。
在訓(xùn)練SVM的過程中,IOU大于0.7的認定為正樣本叫胖,IOU小于0草冈,3的認定為負樣本。
在fine-tuning與SVM訓(xùn)練中之所以IOU不一樣是因為:

  • 正樣本相對負樣本很少臭家,IOU閾值低可以獲得多一點的數(shù)據(jù)疲陕,同時也為了防止過擬合
  • SVM是一個最終的分類器,且SVM適用于小樣本钉赁,IOU閾值高樣本會更為準確蹄殃,那SVM會更為精確。
  1. 回歸
    用Alexnet中pool5的6*6*256維特征和bounding box的GT來訓(xùn)練回歸你踩,每種類型的回歸也是單獨訓(xùn)練的诅岩。輸入的是pool5的特征和樣本對的坐標(x,y)和長寬w, h。另外只跟和GT的IOU超過某個閾值带膜,并且最大的RP進行回歸吩谦,其余的RP不參與回歸。
    假設(shè)我們現(xiàn)在有:候選框P膝藕,對應(yīng)的ground truth :G式廷,以及我們希望獲得的預(yù)測結(jié)果\hat G,那么我們希望\hat G盡可能接近G芭挽。通過pool5層的特征X做線性變換得到函數(shù)F(X),輸出平移量和縮放量滑废,從而得到\hat G.
    詳細的敘述下:
    ?????P = (P_x,P_y,P_w,P_h)
    ?????G = (G_x,G_y,G_w,G_h)
    ?????\hat G = ({\hat G}_x,{\hat G}_y,{\hat G}_w,{\hat G}_h)
    我們提出了一個候選框P時蝗肪,發(fā)現(xiàn)它與G IOU較低,那么可以把從候選框P到通過平移和縮放使得與G的IOU盡量大蠕趁,那么其實學(xué)習(xí)的是一個平移量(\Delta x,\Delta y),移動P_x,P_y薛闪,使得其盡量靠近G_x,G_y,還需要學(xué)習(xí)一個縮放量\Delta w, \Delta h,讓P_w,P_h按照一定比列縮放,使得最終的預(yù)測框\hat GG的IOU盡可能的大俺陋。

輸入:
樣本值:輸入的是P區(qū)域經(jīng)過Alexnet網(wǎng)絡(luò)在pool5的特征向量
標簽值:GT: G_* = ({G_x,G_y,G_w,G_h})
輸出:平移以及縮放尺度 \Delta x, \Delta y, \Delta w,\Delta h

訓(xùn)練過程:

2. SppNet

R-CNN缺陷與SppNet的改進

  • R-CNN缺陷
    R-CNN提高了目標檢測的mAP豁延,但是即使在GPU上處理,其fps也很低腊状,其中主要原因:
    • 在region proposal階段提取了2k個RP,并且需要把每個RP都送入到Alexnet中進行特征提取诱咏,大大增加了計算量,導(dǎo)致處理時間較長.
    • 由于Alexnet輸入的是一個固定尺寸的圖片寿酌,而我們在將RP送入時是對其進行了放縮胰苏,一定程度上減少了物體的特征,例如下圖中的燈塔醇疼。這樣會導(dǎo)致識別率的降低。
  • SppNet改進
    • 在提取特征的時候法焰,我們可以直接把圖片輸入到Alexnet中秧荆,得到一個完整的feature map,然后對應(yīng)每個RP埃仪,直接在feature map上找到其相應(yīng)位置的feature 即可乙濒,只需要進行一次特征提取,大大減少了運算量
    • 對于輸入圖片需要固定大小的問題卵蛉,SppNet提出了一個叫做spatial pyramid pooling的結(jié)構(gòu)來提取特征颁股,并且保證提取的特征維數(shù),長度等完全一致傻丝,然后輸入到FCN中甘有,接下來再詳述這個結(jié)構(gòu)。
pipeline

上圖是R-CNN和SppNet的pipeline,我們只討論SppNet葡缰。輸入一張圖片Image到CNN中亏掀,得到全圖的feature map,讓2000個候選框RP與feature map直接映射泛释,可以直接得到RP的特征(這里通過映射得到feature滤愕,不用經(jīng)過CNN了,因為是直接從計算好的全局的feature map中得到的)怜校,然后將這個RP對應(yīng)的feature map輸入到空間金字塔變換層间影,輸出一個固定大小的向量給到fc6,fc7中,進行分類茄茁。實際上魂贬,我們只需要著重關(guān)注兩個點:RP到全局feature map的映射蔓搞,空間金字塔變換層的結(jié)構(gòu)。

RP->feature map

原始圖片到feature map的映射要從感受野(receptive field)說起随橘,感受野即特征圖上一點在原始圖像上對應(yīng)的面積喂分,之前我們找到一個圖片,給定一層CNN的filter机蔗,stride蒲祈,經(jīng)過運算后可以得到其運算結(jié)果feature map的大小,實際上萝嘁,它們的坐標之間是有關(guān)聯(lián)的梆掸,我們以下圖為例:


ec.jpg

在這個圖中,假定Conv1為feature map1,Conv2為feature map2,原始圖像大小為7*7牙言,假定從在原圖上那四個框框起來的面積為RP酸钦,我們用兩個坐標來確定他的位置:(x_{min},y_{min}),(x_{max},y_{max}) = (0,0), (5,5)第一次的運算filter1 = 3,stride1=2,那么RP在Conv1上其坐標為( \hat x_{min\_conv1},\hat y_{min\_conv1}),(\hat x_{max\_conv1},\hat y_{max\_conv1}) = (0,0), (2,2)
第二次的運算filter1 = 2,stride1=1,那么RP在Conv2上其坐標為( \hat x_{min\_conv2},\hat y_{min\_conv2}),(\hat x_{max\_conv2},\hat y_{max\_conv2}) = (0,0), (0,0)
由這個例子可知,給定原圖上的一個位置RP其坐標咱枉,可以計算出其在feature map上的坐標卑硫。

Spatial Pyramid Pooling

如下圖,假設(shè)RP在feature map上得到的特征向量為N*N*256蚕断,那么先對N*N的面積做一個maxpooling,得到一個1*256向量欢伏,再把N*N分成四塊,每塊做maxpooling,得到一個4*256維向量亿乳,然后把N*N分成16塊硝拧,每塊做maxpooling,得到一個16*16的向量葛假,然后把這三個向量合并起來得到一個21*256維向量輸入到FCN中障陶,可以看到,得到這個21*256維向量和尺寸N*N沒有關(guān)系聊训,輸出的都是固定的大小抱究,劃分為4塊或者是16塊有時候并不一定可以均分,有固定的公式魔眨,這里就不展開媳维。

SPPNET2.PNG

3. Fast R-CNN

SppNet缺點

  • 整體的結(jié)構(gòu)是分階段訓(xùn)練,不是一個end-to-end結(jié)構(gòu)遏暴,訓(xùn)練CNN侄刽,訓(xùn)練SVM,訓(xùn)練bbox回歸器沒有結(jié)合到一起
  • 訓(xùn)練SVM朋凉,Bbox回歸時算法不能更新卷積層的參數(shù)州丹,影響網(wǎng)絡(luò)的精度
    Fast R-CNN提出了ROI層,整合了整個結(jié)構(gòu),下圖是pipeline:


    ROI.PNG

    首先把圖片輸入到CNN中得到一個全圖的feature map墓毒,然后找到RP(候選框)在feature map對應(yīng)的區(qū)域S吓揪,把S輸入到ROI (region of interest ) pooling layer,輸出一個固定大小的特征向量所计,然后特征向量經(jīng)過FCN后柠辞,最后分為兩個分支:一個處理softmax概率,一個作bbox回歸主胧。然后聯(lián)合一起訓(xùn)練網(wǎng)絡(luò)叭首。

ROI layer

ROI層實際上就是單尺度的一個SppNet,就是把RP的feature map直接劃分為H*W大小的塊,然后直接去做maxpooling那么得到的一定是一個固定大小的向量踪栋。

4. Faster R-CNN

實際上焙格,F(xiàn)ast R-CNN最耗時間的地方是在Region proposal,通過selective search獲取2000個候選區(qū)RP夷都,F(xiàn)aster R-CNN提出了RPN網(wǎng)絡(luò)(region proposal network)來提取特征眷唉,使得R-CNN系列形成了一個完整的end-to-end的網(wǎng)絡(luò)結(jié)構(gòu)。Faster R-CNN = RPN +Fast R-CNN .

  • RPN
    基本思想:在提取好的feature map上囤官,通過一個滑動窗口獲取特征向量冬阳,然后輸出到兩個全連接層,一個是bbox回歸層治拿,一個是分類層cls∧幔現(xiàn)在我們實際上來看下。
    原文中中結(jié)果特征提取后得到了一個13*13*256的feature map劫谅,然后他經(jīng)過了一個3*3*256*256的卷積后得到了一個11*11*256的特征向量,就是圖中的那個sliding window嚷掠,對于這個11*11*256的feature map來說捏检,其上面的1*1*256的向量可能在原圖中代表的是一個很大的面積,而256-d則是這個面積的特征不皆,原圖的大小可能是440*440贯城,那么對于1*1來講,可能對應(yīng)的是一個20*20的面積霹娄,然后有k個可能的anchor在上面框能犯,框出物體,輸出即為2k個score犬耻,為包含某個物體的概率和4k個coordinate踩晶,為bbox坐標。



    RPN.jpg
  • pipeline
    理解了RPN枕磁,我們可以看下Faster R-CNN的pipeline:
    • 首先渡蜻,將圖片輸入到一個特征提取網(wǎng)絡(luò)獲得一個feature map
    • RPN作用在feature map后,給出RP的信息,然后和feature map一起輸入到ROI pooling(ROI pooling實際上是一個單尺度的SppNet),得到了一個固定長度的特征向量茸苇。
    • 將固定長度的特征向量輸入到FCN中排苍,最后進行softmax回歸分類和bbox regress進行定位。


      Pipeline

參考:
[1] RPN網(wǎng)絡(luò)通俗理解
[2] 目標檢測(一)——目標檢測綜述

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末学密,一起剝皮案震驚了整個濱河市淘衙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腻暮,老刑警劉巖彤守,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異西壮,居然都是意外死亡遗增,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門款青,熙熙樓的掌柜王于貴愁眉苦臉地迎上來做修,“玉大人,你說我怎么就攤上這事抡草∈渭埃” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵康震,是天一觀的道長燎含。 經(jīng)常有香客問我,道長腿短,這世上最難降的妖魔是什么屏箍? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮橘忱,結(jié)果婚禮上赴魁,老公的妹妹穿的比我還像新娘。我一直安慰自己钝诚,他們只是感情好颖御,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凝颇,像睡著了一般潘拱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拧略,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天芦岂,我揣著相機與錄音,去河邊找鬼辑鲤。 笑死盔腔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弛随,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瓢喉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了舀透?” 一聲冷哼從身側(cè)響起栓票,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愕够,沒想到半個月后走贪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡惑芭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年坠狡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遂跟。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡逃沿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幻锁,到底是詐尸還是另有隱情凯亮,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布哄尔,位于F島的核電站假消,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏岭接。R本人自食惡果不足惜富拗,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸣戴。 院中可真熱鬧媒峡,春花似錦、人聲如沸葵擎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酬滤。三九已至,卻和暖如春寓涨,著一層夾襖步出監(jiān)牢的瞬間盯串,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工戒良, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留体捏,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像几缭,于是被迫代替她去往敵國和親河泳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容