目標(biāo)檢測:FasterRCNN

開篇

? ? ? ? fasterrcnn網(wǎng)絡(luò)是接觸到的第一類目標(biāo)檢測網(wǎng)絡(luò)丰歌,之前的RCNN-fastrcnn到現(xiàn)在的fasterrcnn。網(wǎng)絡(luò)上關(guān)于論文和網(wǎng)絡(luò)本身的代碼實現(xiàn)有非常多的介紹卸察。我接觸目標(biāo)檢測時間不長,后面將會在較長的時間里一直做目標(biāo)檢測推理優(yōu)化的事情,所以學(xué)習(xí)一下幾個典型的網(wǎng)絡(luò)迄损。本篇講述fasterrcnn,內(nèi)容大多都是網(wǎng)絡(luò)上的資源在此引用鏈接账磺,學(xué)習(xí)各位大神的高見芹敌。

參考博客

https://blog.csdn.net/Gentleman_Qin/article/details/84403147

https://cloud.tencent.com/developer/article/1436272

https://zhuanlan.zhihu.com/p/31426458

*******************************************************************

論文

論文名稱:《?Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 》

論文下載:https://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-networks.pdf

論文代碼:https://github.com/rbgirshick/py-faster-rcnn

卷積計算

********************************************************************

CNN普通卷積的輸出層大小計算公式:

假設(shè)

輸入數(shù)據(jù)維度為W*W

Filter大小?F×F

步長?S

padding的像素數(shù)?P

可以得出

N = (W ? F?+ 2P?)/S+1

輸出大小為?N×N

********************************************************************

網(wǎng)絡(luò)結(jié)構(gòu)


一、網(wǎng)絡(luò)結(jié)構(gòu)

對于提取候選框最常用的 SelectiveSearch 方法垮抗,提取一副圖像大概需要 2s 的時間氏捞,改進(jìn)的 EdgeBoxes 算法將效率提高到了 0.2s,但是這還不夠冒版。

本文發(fā)現(xiàn)候選框提取不一定要在原圖上做液茎,特征圖上同樣可以,低分辨率特征圖意味著更少的計算量辞嗡,基于這個假設(shè)提出的RPN(RegionProposal Network)捆等,完美解決了這個問題。

Faster R-CNN可以簡單地看做“區(qū)域生成網(wǎng)絡(luò)RPNs + Fast R-CNN”的系統(tǒng)续室,用區(qū)域生成網(wǎng)絡(luò)代替Fast R-CNN中的Selective Search方法栋烤。


通過添加額外的 RPN 分支網(wǎng)絡(luò),將候選框提取合并到深度網(wǎng)絡(luò)中挺狰,這正是 Faster-RCNN 里程碑式的貢獻(xiàn)明郭。


RPN 網(wǎng)絡(luò)的特點在于通過滑動窗口的方式實現(xiàn)候選框的提取,每個滑動窗口位置生成 9 個候選窗口(不同尺度丰泊、不同寬高)薯定,提取對應(yīng) 9 個候選窗口(anchor)的特征,用于目標(biāo)分類和邊框回歸趁耗,與 FastRCNN 類似沉唠。


目標(biāo)分類只需要區(qū)分候選框內(nèi)特征為前景或者背景。

邊框回歸確定更精確的目標(biāo)位置苛败,基本網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:


訓(xùn)練過程中满葛,涉及到的候選框選取,選取依據(jù):

1)丟棄跨越邊界的 anchor罢屈;

2)與樣本重疊區(qū)域大于 0.7 的 anchor 標(biāo)記為前景嘀韧,重疊區(qū)域小于 0.3 的標(biāo)定為背景;

??????對于每一個位置缠捌,通過兩個全連接層(目標(biāo)分類 + 邊框回歸)對每個候選框(anchor)進(jìn)行判斷锄贷,并且結(jié)合概率值進(jìn)行舍棄(僅保留約 300 個 anchor)译蒂,沒有顯式地提取任何候選窗口,完全使用網(wǎng)絡(luò)自身完成判斷和修正谊却。

二柔昼、亮點解析

1、RoI Pooling:

? ? ? ? ?在 Faster RCNN中使用 RoI Pooling炎辨,以便使生成的候選框region proposal映射產(chǎn)生固定大小的feature map捕透,進(jìn)行之后的分類和回歸。通過下圖解釋RoiPooling的工作原理:


(1)Conv layers使用的是VGG16碴萧,feat_stride=32(即表示乙嘀,經(jīng)過網(wǎng)絡(luò)層后圖片縮小為原圖的1/32),原圖800*800,最后一層特征圖feature map大小:25*25;

(2)假定原圖中有一region proposal破喻,大小為665*665虎谢,這樣,映射到特征圖中的大胁苤省:665/32=20.78,即20.78*20.78婴噩,如果你看過Caffe的Roi Pooling的C++源碼,在計算的時候會進(jìn)行取整操作羽德,于是讳推,進(jìn)行所謂的第一次量化,即映射的特征圖大小為20*20玩般;

(3)假定pooled_w=7,pooled_h=7,即pooling后固定成7*7大小的特征圖,所以礼饱,將上面在?feature map上映射的20*20的 region ?proposal劃分成49個同等大小的小區(qū)域坏为,每個小區(qū)域的大小20/7=2.86,即2.86*2.86,此時镊绪,進(jìn)行第二次量化匀伏,故小區(qū)域大小變成2*2;

(4)每個2*2的小區(qū)域里蝴韭,取出其中最大的像素值够颠,作為這一個區(qū)域的‘代表’,這樣榄鉴,49個小區(qū)域就輸出49個像素值履磨,組成7*7大小的feature map;

? ? ? 總結(jié)庆尘,通過上面可以看出剃诅,經(jīng)過兩次量化,即將浮點數(shù)取整驶忌,原本在特征圖上映射的20*20大小的region proposal矛辕,偏差成大小為14*14的,這樣的像素偏差勢必會對后層的回歸定位產(chǎn)生影響(?所以產(chǎn)生了替代方案,RoiAlign)聊品。

2飞蹂、RPN網(wǎng)絡(luò):


前面5層:

(1)首先,輸入圖片大小是 224*224*3(這個3是三個通道翻屈,也就是RGB三種)陈哑;

(2)然后 layer1 的卷積核維度是 7*7*3*96 (所以大家要認(rèn)識到卷積核都是4維的,在caffe的矩陣計算中都是這么實現(xiàn)的)妖胀;

(3)所以conv1得到的結(jié)果是110*110*96 (這個110來自于 (224-7+pad)/2 +1 芥颈,這個pad是補零填充,也就是在圖片的周圍補充像素赚抡,這樣做的目的是為了能夠整除爬坑,除以2是因為2是圖中的stride, 這個計算方法在上面建議的文檔中有說明與推導(dǎo)的)涂臣;

(4)然后做一次池化盾计,得到pool1, 池化的核的大小是3*3赁遗,所以池化后圖片的維度是55*55*96 ?( ?(110-3+pad)/2 +1 =55 )署辉;

(5)然后接著就是再一次 layer2 卷積,這次的卷積核的維度是5*5*96*256 岩四,得到conv2:26*26*256哭尝;

(6)后面就是類似的過程,有些地方除法除不盡剖煌,作者做了填充材鹦,在caffe的prototxt文件中,可以看到每一層的pad的大懈ⅰ桶唐;

(7)最后作者取的是conv5的輸出,也就是13*13*256送給RPN網(wǎng)絡(luò)的茉兰;


RPN的原理:

1尤泽、前面我們指出,這個conv feature map的維度是13*13*256的规脸;

2坯约、作者在文章中指出,以3*3的正方形anchor為例莫鸭,它作為sliding window的大小是3*3的鬼店,那么如何得到這個1*256的向量呢? 這個很簡單了黔龟,我們只需要一個3*3*256*256這樣的一個4維的卷積核妇智,就可以將每一個3*3的sliding window 卷積成一個1*256的向量滥玷;

作者這里畫的示意圖 僅僅是 針對一個sliding window的;在實際實現(xiàn)中巍棱,我們有很多個sliding window惑畴,且大小不一, 即9中anchor航徙,所以得到的并不是一維的256-d向量如贷,實際上還是一個3維的矩陣數(shù)據(jù)結(jié)構(gòu);可能寫成for循環(huán)做sliding window大家會比較清楚到踏,當(dāng)用矩陣運算的時候杠袱,會稍微繞些;

3窝稿、然后就是k=9楣富,所以cls layer就是18個輸出節(jié)點了,每個anchor生成一個2*1的向量伴榔,9個就是18*1纹蝴。那么在256-d和cls layer之間使用一個1*1*256*2的卷積核,就可以得到一個anchor在一個位置上的對應(yīng)的cls layer踪少,當(dāng)然這個1*1*256*2的卷積核就是大家平常理解的全連接塘安;所以全連接只是卷積操作的一種特殊情況(當(dāng)卷積核的大小與圖片大小相同的時候,其實所謂的卷積就是全連接了援奢,因為卷積核沒有做移動兼犯,所以其不包含圖像中個像素的相互之間的位置關(guān)系,這一點和FC層是一致的)集漾;

4免都、reg layer也是一樣了,reg layer的輸出是36個帆竹,所以對應(yīng)的卷積核是1*1*256*(36/9),這樣就可以得到reg layer的輸出了脓规;

5栽连、然后cls layer 和reg layer后面都會接到自己的損失函數(shù)上,給出損失函數(shù)的值侨舆,同時會根據(jù)求導(dǎo)的結(jié)果秒紧,給出反向傳播的數(shù)據(jù),這個過程讀者還是參考上面給的文檔挨下,寫的挺清楚的熔恢;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市臭笆,隨后出現(xiàn)的幾起案子叙淌,更是在濱河造成了極大的恐慌秤掌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹰霍,死亡現(xiàn)場離奇詭異闻鉴,居然都是意外死亡,警方通過查閱死者的電腦和手機茂洒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門孟岛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人督勺,你說我怎么就攤上這事渠羞。” “怎么了智哀?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵次询,是天一觀的道長。 經(jīng)常有香客問我盏触,道長渗蟹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任赞辩,我火速辦了婚禮雌芽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辨嗽。我一直安慰自己世落,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布糟需。 她就那樣靜靜地躺著屉佳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洲押。 梳的紋絲不亂的頭發(fā)上武花,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音杈帐,去河邊找鬼体箕。 笑死,一個胖子當(dāng)著我的面吹牛挑童,可吹牛的內(nèi)容都是我干的累铅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼站叼,長吁一口氣:“原來是場噩夢啊……” “哼娃兽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尽楔,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤投储,失蹤者是張志新(化名)和其女友劉穎第练,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轻要,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡复旬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了冲泥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驹碍。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凡恍,靈堂內(nèi)的尸體忽然破棺而出志秃,到底是詐尸還是另有隱情,我是刑警寧澤嚼酝,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布浮还,位于F島的核電站,受9級特大地震影響闽巩,放射性物質(zhì)發(fā)生泄漏钧舌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一涎跨、第九天 我趴在偏房一處隱蔽的房頂上張望洼冻。 院中可真熱鬧,春花似錦隅很、人聲如沸撞牢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屋彪。三九已至,卻和暖如春绒尊,著一層夾襖步出監(jiān)牢的瞬間畜挥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工婴谱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蟹但,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓勘究,卻偏偏與公主長得像,于是被迫代替她去往敵國和親斟冕。 傳聞我的和親對象是個殘疾皇子口糕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355