【CV論文筆記】Fast R-CNN

本文主要用于介紹rbg大神于2015年提出的Fast R-CNN網(wǎng)絡(luò)扁誓,該網(wǎng)絡(luò)架構(gòu)是在其前作R-CNN上的升級(jí)改進(jìn)版邓梅。本筆記主要為方便初學(xué)者快速入門冶共,以及自我回顧乾蛤。

論文鏈接:https://arxiv.org/pdf/1504.08083.pdf
github主頁(yè):https://github.com/rbgirshick/fast-rcnn
rbg大神個(gè)人主頁(yè):http://www.rossgirshick.info/#girshick2014rcnn

為更好的理解該論文,建議先行閱讀R-CNN和SPPNet網(wǎng)絡(luò)的相關(guān)論文捅僵,這里也附上本菇之前寫的2篇論文筆記供大家參考~
R-CNN理解
SPPNet網(wǎng)絡(luò)理解

基本目錄如下:

  1. 摘要
  2. 核心思想
  3. 總結(jié)

------------------第一菇 - 摘要------------------

1.1 論文摘要

本論文提出了一種適用于目標(biāo)檢測(cè)的快速的基于區(qū)域候選的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)(Fast R-CNN)家卖。在之前R-CNN的架構(gòu)基礎(chǔ)上,F(xiàn)ast R-CNN引入了深度卷積神經(jīng)網(wǎng)絡(luò)快速對(duì)R-CNN第一階段產(chǎn)生的候補(bǔ)區(qū)域進(jìn)行分類庙楚,從而在訓(xùn)練和測(cè)試的時(shí)效性上取得了很大的突破上荡,同時(shí)還提升了檢測(cè)的準(zhǔn)確率。Fast R-CNN相比R-CNN在訓(xùn)練VGG16上快了9倍馒闷,測(cè)試的時(shí)候快了213倍酪捡,而且在同一個(gè)數(shù)據(jù)集PASCAL VOC上有更高的MAP。相比于SPPnet纳账,F(xiàn)AST R-CNN在訓(xùn)練VGG16上快了3倍逛薇,測(cè)試的時(shí)候快了10倍,并且準(zhǔn)確率更高疏虫。FAST R-CNN同時(shí)有Python和C++倆個(gè)版本永罚,開(kāi)源地址:https: //github.com/rbgirshick/fast-rcnn

------------------第二菇 - 核心思想------------------

2.1 Fast R-CNN的突破點(diǎn)

再理解本文提出的新架構(gòu)之前帅涂,我們先跟著論文思路來(lái)梳理一下在目標(biāo)檢測(cè)領(lǐng)域大放異彩的R-CNN網(wǎng)絡(luò)架構(gòu)的缺陷,

1)訓(xùn)練是多階段的(Training is a multi-stage pipeline):R-CNN首先要用卷積層來(lái)訓(xùn)練提取特征尤蛮,然后再用提取出的特征來(lái)訓(xùn)練一個(gè)分類器(SVM)媳友,最后還要來(lái)回歸目標(biāo)檢測(cè)框。仔細(xì)看來(lái)产捞,整個(gè)訓(xùn)練和預(yù)測(cè)過(guò)程是剝離開(kāi)來(lái)了3個(gè)階段醇锚,且不說(shuō)實(shí)現(xiàn)上有多麻煩,整個(gè)時(shí)效性也是扛不住的坯临。

2)訓(xùn)練耗費(fèi)大量空間和時(shí)間(Training is expensive in space and time):這個(gè)已經(jīng)是顯而易見(jiàn)的焊唬,就不多說(shuō)了,畢竟候選框也多達(dá)2000多個(gè)呢看靠。赶促。。

3)預(yù)測(cè)的時(shí)間太慢了(Object detection is slow):在GPU上挟炬,也要耗費(fèi)47秒來(lái)預(yù)測(cè)一張圖片鸥滨。。谤祖。簡(jiǎn)直了婿滓。。粥喜。

SPPNet通過(guò)設(shè)計(jì)加入空間金字塔池化層凸主,解決了R-CNN中重復(fù)提取圖片特征的問(wèn)題,在一定程度上加速了訓(xùn)練和預(yù)測(cè)的時(shí)效性额湘,但是SPPNet本身并沒(méi)有改動(dòng)R-CNN的網(wǎng)絡(luò)架構(gòu)卿吐,因此仍然是多階段的,并且因?yàn)橐肓丝臻g金字塔池化層锋华,導(dǎo)致了一些預(yù)訓(xùn)練的策略無(wú)法使用嗡官,從而影響最終的結(jié)果。

因此供置,本文提出的Fast R-CNN網(wǎng)絡(luò)架構(gòu)谨湘,就是針對(duì)上面的缺陷做了重大的改進(jìn),主要的貢獻(xiàn)包括芥丧,

1)相比于R-CNN和SPPNet更好的目標(biāo)檢測(cè)質(zhì)量(map)

2)訓(xùn)練是單階段的紧阔,而不是多階段剝離開(kāi)的

3)訓(xùn)練的時(shí)候可以更新所有層的參數(shù)

4)提取出的特征無(wú)需額外的硬盤空間來(lái)存儲(chǔ)

對(duì)本文提出的Fast R-CNN了解到這一層面以后,我們?cè)俳又鴣?lái)細(xì)看其網(wǎng)絡(luò)架構(gòu)续担。

2.2 Fast R-CNN的網(wǎng)絡(luò)架構(gòu)

話不多說(shuō)擅耽,我們直接上一張?jiān)撐闹蠪ast R-CNN的網(wǎng)絡(luò)架構(gòu)圖,

Fast R-CNN架構(gòu)圖.png

首先整個(gè)網(wǎng)絡(luò)的輸入依然是整張圖片和多個(gè)候選區(qū)域框物遇,經(jīng)過(guò)一系列的卷積池化(跟之前保持一致)操作以后會(huì)生成特征圖乖仇。變化的部分是憾儒,對(duì)于每一個(gè)候選區(qū)域框,都會(huì)通過(guò)映射關(guān)系乃沙,在特征圖上找到對(duì)應(yīng)的位置起趾,并將其輸入到RoI池化層,從而生成固定維度大小的特征向量警儒。該特征向量隨后送入到連續(xù)的幾個(gè)全連接層后训裆,再接著送入到2個(gè)分支中,一個(gè)分支用于做分類蜀铲,一個(gè)分支用于做回歸边琉。至此,整一個(gè)訓(xùn)練過(guò)程就打通了记劝,而不是跟之前一樣剝離開(kāi)的3個(gè)階段变姨。

整體的架構(gòu)可以說(shuō)是非常的清晰易懂,但是其中的RoI池化層和多任務(wù)的Loss函數(shù)設(shè)計(jì)值得我們深入探討一下厌丑。

2.2.1 RoI池化層

首先明確一點(diǎn)定欧,RoI池化層的作用就是將形狀大小各異的特征圖上的候選區(qū)域,轉(zhuǎn)換為固定大小的特征向量(超參數(shù)蹄衷,H*W)忧额,因此可以簡(jiǎn)單理解為就是SPPNet最后接的空間金字塔池化層,但RoI池化層要更簡(jiǎn)潔一些愧口。

然后明確一個(gè)目標(biāo)候選區(qū)域在特征圖上的,RoI(Region Of Interest)由1個(gè)4元組表示类茂,(r,c,h,w)耍属,其中(r,c)確定了其左上角的點(diǎn)(在特征圖中),(h,w)確定了其大小巩检。

清晰上述定義后厚骗,RoI最大池化層的工作原理就是,將一個(gè)h*w的區(qū)域均分為H*W兢哭,然后對(duì)其每一個(gè)網(wǎng)格取最大值池化(如果有不理解的领舰,見(jiàn)下圖),從而對(duì)任意大小的區(qū)域迟螺,我們最終得到的特征向量緯度是固定的冲秽。

RoI示意圖.png

至此,大家應(yīng)該理解為啥比SPPNet的金字塔池化層要簡(jiǎn)化了吧~金字塔池化還涉及多個(gè)池化核組合矩父,這里就很簡(jiǎn)單的直接輸出一個(gè)固定大小的~

RoI池化層的結(jié)構(gòu)算是講明白了锉桑,不過(guò)文中還是多提了一句,如何對(duì)RoI池化層進(jìn)行求導(dǎo)(文中說(shuō)的比較晦澀窍株,但還是要理解那個(gè)累加求和公式的意義)民轴,這里我也說(shuō)一下攻柠,我對(duì)此的理解,也是參考了這篇博文的~從該博文中盜一張圖后裸,來(lái)加深理解瑰钮,

RoI層求導(dǎo)示意圖.png

如上圖,有2個(gè)候選區(qū)域(藍(lán)色微驶,橘色)飞涂,其中,7這個(gè)點(diǎn)祈搜,同時(shí)被2個(gè)區(qū)域所覆蓋较店,而我們知道,最大池化求導(dǎo)的時(shí)候容燕,只有那個(gè)最大值(響應(yīng)結(jié)點(diǎn))的倒數(shù)是有值的梁呈,其他的結(jié)點(diǎn)都是0,因此蘸秘,值為7的這個(gè)結(jié)點(diǎn)官卡,在倆個(gè)候選區(qū)域中都有了響應(yīng),因此醋虏,傳到該結(jié)點(diǎn)的梯度值就是2個(gè)候選區(qū)域反向傳播回來(lái)的梯度值的和寻咒,因此,文中給出的求梯度公式是求和的形式~

RoI梯度求和公式.png

至此颈嚼,有關(guān)RoI池化層的內(nèi)容應(yīng)該算是講明白了毛秘,有細(xì)節(jié)不清楚的桩盲,還是應(yīng)該再翻看原論文加深理解叙量。

2.2.2 微調(diào)策略

Fast R-CNN還有一個(gè)巨大的優(yōu)勢(shì)就是能通過(guò)反向傳播算法同時(shí)更新所有層的參數(shù)冷离,而這是SPPNet所不具備的恼布。文中給出的依據(jù)是搬设,SPPNet中的空間金字塔池化層撮抓,如果訓(xùn)練樣本來(lái)源于不同的圖片教届,其訓(xùn)練是十分低效的橙困。之所以低效是每一個(gè)RoI都可能會(huì)有很大的感受野(receptive field)署驻,經(jīng)常會(huì)覆蓋到全圖奋献。因此,前向傳播就必須要處理很大的感受野旺上,從而導(dǎo)致訓(xùn)練的輸入就很大(經(jīng)常是全圖)瓶蚂。而Fast R-CNN在訓(xùn)練方法上做了一點(diǎn)改進(jìn),從而解決了這個(gè)問(wèn)題抚官。

哎扬跋,其實(shí)就是在樣本采樣上做的一點(diǎn)處理。簡(jiǎn)單講就是作者采用了分層采樣的手段凌节,確保了每一個(gè)mini-batch里面輸入的RoI都是來(lái)自于同一張圖片的钦听。洒试。。那自然朴上,每一個(gè)RoI都能共享計(jì)算的參數(shù)和存儲(chǔ)內(nèi)存了垒棋。。痪宰。雖然有違第一直覺(jué)(畢竟樣本不是要盡量打散么叼架。。衣撬。)但人家實(shí)驗(yàn)做出來(lái)乖订,效果沒(méi)毛病,那既然訓(xùn)練的速度更快了具练,何樂(lè)而不為呢~

2.2.3 多任務(wù)損失函數(shù)設(shè)計(jì)

不同前作乍构,提取出固定特征以后,就分別扔到分類器和回歸器里面去訓(xùn)練扛点,F(xiàn)ast R-CNN在后面開(kāi)了2分支哥遮,一起訓(xùn)練,因此陵究,只要定義好損失函數(shù)眠饮,那自然就行得通了。

首先铜邮,明確一下仪召,F(xiàn)ast R-CNN的輸出,因?yàn)橛?個(gè)分支牲距,所以有2個(gè)輸出返咱,

對(duì)于每一個(gè)RoI,首先有一個(gè)分類的輸出(softmax)牍鞠,假設(shè)有k類,加上背景一共有k+1個(gè)值评姨,

(p_0, p_1, ..., p_K)

其次是有一個(gè)位置框信息难述,

t^k = (t^k_{x}, t^k_{y}, t^k_{w}, t^k_{h})

因此,我們也有2個(gè)損失要去求吐句,第一個(gè)是分類的損失胁后,即對(duì)真實(shí)的類別的概率取對(duì)數(shù)值。

L_{cls}(p, u) = -\log p_u

而對(duì)于回歸的損失嗦枢,注意攀芯,只有分類對(duì)了的,才會(huì)去計(jì)算回歸的損失文虏,因此侣诺,其損失表示為(v表示gt)殖演,

L_{loc}(t^u, v) = \sum_{i \in \{x,y,w,h\}}smooth_{L_1}(t^u_i - v_i)

其中,這里用了L1正則平滑年鸳,

平滑項(xiàng).jpg

因此趴久,最終的損失函數(shù)就可以表達(dá)為,

L(p,u,t^u, v) = L_{cls}(p,u) + \lambda[\mu >= 1]L_{loc}(t^u, v)

至此搔确,整一套Fast R-CNN相關(guān)的重點(diǎn)已經(jīng)講述清楚明白了~

2.3 論文小結(jié)

本文提出的Fast R-CNN毫無(wú)疑問(wèn)是R-CNN和SPPNet的簡(jiǎn)潔優(yōu)化版彼棍。作者通過(guò)大量詳細(xì)的對(duì)比實(shí)驗(yàn)發(fā)現(xiàn)了很多新的訓(xùn)練及優(yōu)化技巧,比如最后一層用softmax直接做分類效果優(yōu)于用svm的膳算,并不是越多的候選區(qū)域就越能提升最終的檢測(cè)效果座硕,更多的訓(xùn)練數(shù)據(jù)帶來(lái)更好的結(jié)果,單一尺度的輸入框經(jīng)常就能達(dá)到多尺度輸入框的效果等等(更多細(xì)節(jié)大家可以看原論文)涕蜂。其中华匾,作者也在小結(jié)中強(qiáng)調(diào)了最重要的一點(diǎn)發(fā)現(xiàn),即稀疏的候選區(qū)域?qū)ψ罱K檢測(cè)效果是有提升的宇葱,并且大大提高了時(shí)效性瘦真。當(dāng)然,日后必定還會(huì)發(fā)展出更多的小技巧來(lái)加速目標(biāo)檢測(cè)算法~

------------------第三菇 - 總結(jié)------------------

3.1 總結(jié)

到這里黍瞧,整篇論文的核心思想已經(jīng)說(shuō)清楚了诸尽。本論文主要是在R-CNN和SPPNet的基礎(chǔ)上提出了一種適用于目標(biāo)檢測(cè)的新的網(wǎng)絡(luò)架構(gòu)Fast R-CNN,并實(shí)驗(yàn)證明其可行性印颤,為后續(xù)發(fā)展奠定了基礎(chǔ)您机。

簡(jiǎn)單總結(jié)一下本文就是先羅列了一下該論文的摘要,再具體介紹了一下本文作者的思路年局,也簡(jiǎn)單表述了一下际看,自己對(duì)Fast R-CNN網(wǎng)絡(luò)的理解。希望大家讀完本文后能進(jìn)一步加深對(duì)該論文的理解矢否。有說(shuō)的不對(duì)的地方也請(qǐng)大家指出仲闽,多多交流,大家一起進(jìn)步~??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末僵朗,一起剝皮案震驚了整個(gè)濱河市赖欣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌验庙,老刑警劉巖顶吮,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異粪薛,居然都是意外死亡悴了,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)湃交,“玉大人熟空,你說(shuō)我怎么就攤上這事⊙沧幔” “怎么了痛阻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腮敌。 經(jīng)常有香客問(wèn)我阱当,道長(zhǎng),這世上最難降的妖魔是什么糜工? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任弊添,我火速辦了婚禮,結(jié)果婚禮上捌木,老公的妹妹穿的比我還像新娘油坝。我一直安慰自己,他們只是感情好刨裆,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布澈圈。 她就那樣靜靜地躺著,像睡著了一般帆啃。 火紅的嫁衣襯著肌膚如雪瞬女。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天努潘,我揣著相機(jī)與錄音诽偷,去河邊找鬼。 笑死疯坤,一個(gè)胖子當(dāng)著我的面吹牛报慕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播压怠,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼眠冈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了菌瘫?” 一聲冷哼從身側(cè)響起洋闽,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎突梦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體羽利,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宫患,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了这弧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娃闲。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虚汛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皇帮,到底是詐尸還是另有隱情卷哩,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布属拾,位于F島的核電站将谊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏渐白。R本人自食惡果不足惜尊浓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纯衍。 院中可真熱鬧栋齿,春花似錦、人聲如沸襟诸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)歌亲。三九已至菇用,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間应结,已是汗流浹背刨疼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹅龄,地道東北人揩慕。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扮休,于是被迫代替她去往敵國(guó)和親迎卤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359