【CV論文筆記】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

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

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

為更好的理解該論文莺治,建議先行閱讀R-CNN廓鞠,SPPNet帚稠,F(xiàn)ast R-CNN網(wǎng)絡(luò)的相關(guān)論文,這里也附上本菇之前寫的4篇論文筆記供大家參考~
R-CNN理解
SPPNet網(wǎng)絡(luò)理解
Fast R-CNN理解
全卷積網(wǎng)絡(luò)理解

基本目錄如下:

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

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

1.1 論文摘要

現(xiàn)今流行的目標(biāo)檢測(cè)網(wǎng)絡(luò)都依賴于“區(qū)域建議(region proposal)”算法來提前假設(shè)潛在的目標(biāo)區(qū)域床佳。像最新的SPPNet網(wǎng)絡(luò)滋早,F(xiàn)ast R-CNN網(wǎng)絡(luò)都已經(jīng)在檢測(cè)網(wǎng)絡(luò)上節(jié)省了大量的時(shí)間,唯一效率上的瓶頸就在于第一步砌们,候選框的提出杆麸。因此,在本論文中浪感,我們提出了一種“區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network昔头,RPN)”,該網(wǎng)絡(luò)與檢測(cè)網(wǎng)絡(luò)共享卷積層參數(shù)影兽,因此使得新增的該網(wǎng)絡(luò)層的時(shí)間開銷幾乎為0揭斧。RPN的本質(zhì)就是同時(shí)計(jì)算每一個(gè)位置的目標(biāo)邊界和目標(biāo)分?jǐn)?shù)的全卷積網(wǎng)絡(luò),該網(wǎng)絡(luò)生成的候選區(qū)域框峻堰,將會(huì)輸入到后續(xù)的Fast R-CNN架構(gòu)用于目標(biāo)檢測(cè)讹开。本論文還同時(shí),將RPN網(wǎng)絡(luò)和Fast R-CNN網(wǎng)絡(luò)合并進(jìn)一個(gè)網(wǎng)絡(luò)中捐名,因此能夠共享卷積層的參數(shù)旦万,且用于提取特征的網(wǎng)絡(luò)層用了最新流行的引入“注意力”機(jī)制的網(wǎng)絡(luò)。對(duì)于那種深度模型VGG16桐筏,我們新的架構(gòu)能夠達(dá)到單GPU纸型,5fps目標(biāo)檢測(cè)速度拇砰,并且還保證了準(zhǔn)確率梅忌。在2015年的ILSVRC和COCO的目標(biāo)檢測(cè)比賽中,第一名所用模型的架構(gòu)都有我們的影子除破。

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

2.1 Faster R-CNN的網(wǎng)絡(luò)架構(gòu)圖

Fast R-CNN的提出成功解決了目標(biāo)檢測(cè)的時(shí)效性問題牧氮,并且已經(jīng)能接近達(dá)到實(shí)時(shí)的效果。但是瑰枫,F(xiàn)ast R-CNN網(wǎng)絡(luò)運(yùn)行的前提就是準(zhǔn)備好一堆候選框踱葛,之前都是采用的傳統(tǒng)圖像算法,比如Selective Search光坝。但是隨著后半部分問題的解決尸诽,前面生成候選框的時(shí)效性(主要還是想把整一套流程都放到GPU上來搞)也變的引人注目了。盯另。性含。于是rbg大神們,也就索性放棄了傳統(tǒng)圖像算法鸳惯,提出了一個(gè)新的RPN網(wǎng)絡(luò)來生成候選框商蕴,再把RPN網(wǎng)絡(luò)嵌入到Fast R-CNN中叠萍,也就是當(dāng)紅炸子雞Faster R-CNN了,這里先直接上一張論文中的網(wǎng)絡(luò)架構(gòu)圖绪商,方便大家對(duì)其有一個(gè)基本的認(rèn)知苛谷,

Faster R-CNN網(wǎng)絡(luò)架構(gòu)圖.jpg

可以看到,紅色框的那部分(RPN)就是相比于Fast R-CNN新加的部分格郁,因此只要理解了RPN網(wǎng)絡(luò)腹殿,再加上Fast R-CNN的基礎(chǔ),那么對(duì)Faster R-CNN的整體把握就比較清晰了~所以理张,接下來我們就重點(diǎn)看一下RPN網(wǎng)絡(luò)的細(xì)節(jié)赫蛇。

2.2 理解RPN網(wǎng)絡(luò)

首先明確RPN網(wǎng)絡(luò)的作用為:輸入任意大小的圖片,輸出一系列的方形目標(biāo)候選框雾叭,每一個(gè)目標(biāo)候選框都帶有objectness分?jǐn)?shù)悟耘。該網(wǎng)絡(luò)其實(shí)是可以作為一個(gè)單獨(dú)的目標(biāo)檢測(cè)網(wǎng)絡(luò)而存在的!只不過织狐,作者將其嵌入進(jìn)了Fast R-CNN架構(gòu)中暂幼,并將整個(gè)新的架構(gòu)命名為Faster R-CNN。

(注:這里必須強(qiáng)調(diào)一下移迫,objectness想表達(dá)的意思是該候選目標(biāo)框是否含有目標(biāo)檢測(cè)物體(并不需要明確是哪一類)旺嬉,因此僅僅是一個(gè)二分類問題,含有目標(biāo)或者是背景)

其次厨埋,必須明確Faster R-CNN架構(gòu)中的RPN網(wǎng)絡(luò)層為了共享卷積層參數(shù)邪媳,會(huì)直接用前置卷積池化操作產(chǎn)生的特征圖(feature map)。有了特征圖以后荡陷,會(huì)在特征圖上的指定地方(由Anchors決定雨效,不理解Anchors沒關(guān)系,后文會(huì)解釋废赞,在這簡單理解為特征圖上的一個(gè)固定點(diǎn))滑動(dòng)一個(gè)小的神經(jīng)網(wǎng)絡(luò)(我姑且稱之為“候選生成網(wǎng)絡(luò)”徽龟,真的很小,就是由1個(gè)nn的卷積層再跟2個(gè)11卷積層的分支唉地,分別對(duì)應(yīng)分類和回歸)据悔,這個(gè)小神經(jīng)網(wǎng)絡(luò)的輸入就是一個(gè)Anchor生成的候選框,然后輸出每個(gè)候選框的分?jǐn)?shù)和位置耘沼,如果有不清楚整體架構(gòu)的极颓,直接看論文中原圖如下,應(yīng)該也就能明白整體的架構(gòu)邏輯了~

RPN網(wǎng)絡(luò)架構(gòu)圖.jpg

(注:比較容易搞混的可能是“滑動(dòng)一個(gè)小的神經(jīng)網(wǎng)絡(luò)”~傳統(tǒng)操作一般不都是滑動(dòng)卷積核或池化核群嗤,其實(shí)操作的本質(zhì)類似菠隆,只不過這里滑動(dòng)的是一個(gè)小的神經(jīng)網(wǎng)絡(luò),從而達(dá)到輸出多個(gè)候選框的目的)

上圖應(yīng)該來說是比較清晰了,接下來我們就再深入一些細(xì)節(jié)浸赫,加深理解闰围。

2.2.1 Anchors的理解

Anchors中文翻譯就是“錨點(diǎn)”,每一個(gè)錨點(diǎn)既峡,我們都會(huì)生成大小各異的多個(gè)候選框羡榴,這里明確一個(gè)參數(shù)的意義,k运敢,就表示每一個(gè)錨點(diǎn)生成的候選框的個(gè)數(shù)校仑。

因此,上圖2k的意思就是传惠,每一個(gè)框都會(huì)有2個(gè)分?jǐn)?shù)(一個(gè)是:為目標(biāo)的概率迄沫;另一個(gè)是:為背景的概率),總共有k個(gè)卦方,那自然輸出是2k羊瘩。同理,4k就是每一個(gè)框都由4個(gè)參數(shù)來定位盼砍,總共就是4k個(gè)尘吗。

論文中,作者采用的參數(shù)是9個(gè)浇坐,運(yùn)行調(diào)用作者demo中的generate_anchors.py睬捶,可以得到9個(gè)矩形共有3種形狀(如下圖,來源【1】)近刘,長寬比大約控制在\{1:1, 2:1, 1:2\}擒贸,每1個(gè)ratio對(duì)應(yīng)3個(gè)scale,因此最終是9個(gè)觉渴,其本質(zhì)就是引入了檢測(cè)中常用的多尺度方法介劫。

Anchor示意圖.jpg

作者也在文中強(qiáng)調(diào),該種多尺度的實(shí)現(xiàn)方法是整套的核心疆拘,

The design of multi- scale anchors is a key component for sharing features without extra cost for addressing scales.

那么在論文的參數(shù)設(shè)置下蜕猫,最終的候選框個(gè)數(shù)是多少呢寂曹?假設(shè)原圖是800*600的哎迄,VGG下采樣16倍,每個(gè)錨點(diǎn)9個(gè)框隆圆,

ceil(800/16)*ceil(600/16)*9 = 17100

再從網(wǎng)上盜一張圖漱挚,加深理解,

Anchors示意圖2.jpg

這里再貼一張?jiān)瓐D上的錨點(diǎn)示意圖【3】渺氧,助于理解(因?yàn)橄虏蓸恿?6倍旨涝,所以每個(gè)錨點(diǎn)在原圖上會(huì)有16個(gè)像素距離)

錨點(diǎn)示意圖3.jpg

這么多的候選框,自然是不可能全都送到后面的網(wǎng)絡(luò)中去的侣背,訓(xùn)練程序會(huì)在合適的anchors中隨機(jī)選擇128個(gè)positive anchors + 128個(gè)negative anchors進(jìn)行訓(xùn)練白华。因?yàn)榇蟛糠智闆r下都是背景居多(negative)慨默,如果positve少于128的話,那在當(dāng)前批次里弧腥,就選取其他的negative補(bǔ)上厦取。

2.2.2 損失函數(shù)

至此,大家對(duì)整一套R(shí)PN網(wǎng)絡(luò)應(yīng)該有比較好的理解了管搪,我們?cè)偕弦粡坧ython版本中的VGG16模型中的faster_rcnn_test.pt的網(wǎng)絡(luò)結(jié)構(gòu)【1】虾攻,

faster_rcnn_test.py網(wǎng)絡(luò)結(jié)構(gòu)圖.jpg

上圖的表示相比于原論文,會(huì)更加清晰易懂更鲁,因此霎箍,損失函數(shù)也有2部分組成,其中一部分是分類澡为,另一部分是回歸漂坏。整個(gè)網(wǎng)絡(luò)的損失函數(shù)可以表示為(其實(shí)與Fast R-CNN真的很像),

L(\{p_i\}, \{t_i\}) = \frac{1}{N_{cls}}\sum_{i}L_{cls}(p_i, p^*_i) + \frac{1}{N_{reg}}\sum_ip^*_iL_{reg}(t_i, t^*_i)

其中媒至,
i表示在一個(gè)批中的anchor的下標(biāo)
p_i為該錨點(diǎn)是目標(biāo)的概率
p^*_i為1如果是positive樊拓,為0如果是negetive
t_i就是預(yù)測(cè)的4個(gè)用于定位的坐標(biāo)點(diǎn)
t^*_i就是GT,當(dāng)然也只有是positive才會(huì)計(jì)入損失

當(dāng)然塘慕,實(shí)際的訓(xùn)練中會(huì)發(fā)現(xiàn)筋夏,N_{cls}N_{reg}值相差過大,通常會(huì)引入?yún)?shù)\lambda來平衡图呢,是總的Loss能均勻考慮2種Loss条篷。

(注:推薦學(xué)有余力的同學(xué)看該博文對(duì)于回歸問題的一個(gè)細(xì)節(jié)描述,看懂了以后蛤织,再來理解文中給出的公式就不難了赴叹,簡單講一句就是,回歸分支真正要學(xué)的參數(shù)不是具體的坐標(biāo)值指蚜,而是對(duì)于每一個(gè)Anchor的平移量和變化尺度)

至此乞巧,整一套R(shí)PN網(wǎng)絡(luò)就已經(jīng)講清楚了,至于RoI在Fast R-CNN中已經(jīng)講的很清楚了摊鸡,這里就不展開了绽媒。

2.2.3 訓(xùn)練過程

接下來,還有一個(gè)難點(diǎn)免猾,就是如果訓(xùn)練整一套Faster R-CNN網(wǎng)絡(luò)是辕。文中作者給出了幾種可能的訓(xùn)練方法,

1)分開單獨(dú)訓(xùn)練猎提,即先訓(xùn)練RPN網(wǎng)絡(luò)获三,再用RPN生成的候選區(qū)域來訓(xùn)練Fast R-CNN,再用Fast R-CNN訓(xùn)練微調(diào)完的網(wǎng)絡(luò)來訓(xùn)練RPN,迭代往復(fù)疙教,這也是本文作者在做實(shí)驗(yàn)中用的訓(xùn)練方法棺聊。

2)放在一起訓(xùn)練。贞谓。躺屁。說實(shí)話,有點(diǎn)懵经宏。犀暑。。主要是我也沒想明白這個(gè)梯度更新的過程烁兰。耐亏。。

(以下內(nèi)容來自【4】)
然而沪斟,作者在源碼中的訓(xùn)練細(xì)節(jié)一共分了4步广辰,
1)用ImageNet模型初始化,獨(dú)立訓(xùn)練一個(gè)RPN網(wǎng)絡(luò)

2)仍然用ImageNet模型初始化主之,但是使用上一步RPN網(wǎng)絡(luò)產(chǎn)生的proposal作為輸入择吊,訓(xùn)練一個(gè)Fast-RCNN網(wǎng)絡(luò),至此槽奕,兩個(gè)網(wǎng)絡(luò)每一層的參數(shù)完全不共享几睛;

3)使用第二步的Fast-RCNN網(wǎng)絡(luò)參數(shù)初始化一個(gè)新的RPN網(wǎng)絡(luò),但是把RPN粤攒、Fast-RCNN共享的那些卷積層的learning rate設(shè)置為0所森,也就是不更新,僅僅更新RPN特有的那些網(wǎng)絡(luò)層夯接,重新訓(xùn)練焕济,此時(shí),兩個(gè)網(wǎng)絡(luò)已經(jīng)共享了所有公共的卷積層盔几;

4)仍然固定共享的那些網(wǎng)絡(luò)層晴弃,把Fast-RCNN特有的網(wǎng)絡(luò)層也加入進(jìn)來,形成一個(gè)unified network逊拍,繼續(xù)訓(xùn)練上鞠,fine tune Fast-RCNN特有的網(wǎng)絡(luò)層,此時(shí)顺献,該網(wǎng)絡(luò)已經(jīng)實(shí)現(xiàn)我們?cè)O(shè)想的目標(biāo)旗国,即網(wǎng)絡(luò)內(nèi)部預(yù)測(cè)proposal并實(shí)現(xiàn)檢測(cè)的功能枯怖。

訓(xùn)練過程.jpg

以上就是訓(xùn)練的細(xì)節(jié)步驟注整。

至此,整一套Faster R-CNN算是講明白了,其余的實(shí)驗(yàn)設(shè)置和結(jié)果這邊就不展開了肿轨,有興趣的同學(xué)自己看原文就行~

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

3.1 總結(jié)

到這里寿冕,整篇論文的核心思想已經(jīng)說清楚了。本論文主要是提出了一種新的RPN網(wǎng)絡(luò)用于生成候選區(qū)域框椒袍,并將其嵌入到Fast R-CNN中驼唱,將其命名為Faster R-CNN,進(jìn)一步提高了目標(biāo)檢測(cè)算法的時(shí)效性驹暑,并實(shí)驗(yàn)證明其可行性玫恳,為后續(xù)發(fā)展奠定了基礎(chǔ)。

簡單總結(jié)一下本文就是先羅列了一下該論文的摘要优俘,再具體介紹了一下本文作者的思路京办,也簡單表述了一下,自己對(duì)Faster R-CNN網(wǎng)絡(luò)帆焕,尤其是其中的RPN網(wǎng)絡(luò)的理解惭婿。希望大家讀完本文后能進(jìn)一步加深對(duì)該論文的理解。有說的不對(duì)的地方也請(qǐng)大家指出叶雹,多多交流财饥,大家一起進(jìn)步~??

參考文獻(xiàn):
【1】https://zhuanlan.zhihu.com/p/31426458
【2】https://blog.csdn.net/shenziheng1/article/details/82907663
【3】https://www.jiqizhixin.com/articles/2018-02-23-3
【4】https://zhuanlan.zhihu.com/p/24916624

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市折晦,隨后出現(xiàn)的幾起案子钥星,更是在濱河造成了極大的恐慌,老刑警劉巖满着,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件打颤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡漓滔,警方通過查閱死者的電腦和手機(jī)编饺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來响驴,“玉大人透且,你說我怎么就攤上這事』砝穑” “怎么了秽誊?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長琳骡。 經(jīng)常有香客問我锅论,道長,這世上最難降的妖魔是什么楣号? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任最易,我火速辦了婚禮怒坯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘藻懒。我一直安慰自己剔猿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布嬉荆。 她就那樣靜靜地躺著归敬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鄙早。 梳的紋絲不亂的頭發(fā)上汪茧,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音限番,去河邊找鬼陆爽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扳缕,可吹牛的內(nèi)容都是我干的慌闭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼躯舔,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼驴剔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粥庄,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤丧失,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后惜互,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體布讹,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年训堆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了描验。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坑鱼,死狀恐怖膘流,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲁沥,我是刑警寧澤呼股,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站画恰,受9級(jí)特大地震影響彭谁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜允扇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一缠局、第九天 我趴在偏房一處隱蔽的房頂上張望则奥。 院中可真熱鬧,春花似錦甩鳄、人聲如沸逞度。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至俊戳,卻和暖如春揖赴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抑胎。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工燥滑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阿逃。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓铭拧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親恃锉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搀菩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359