基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法綜述

一强窖、R-CNN(2013)

Region CNN(簡(jiǎn)稱(chēng)R-CNN)由Ross Girshick在2013.11提出蜻韭,是利用深度學(xué)習(xí)進(jìn)行目標(biāo)檢測(cè)的里程碑之作白嘁,奠定了這個(gè)子領(lǐng)域的基礎(chǔ).

1.1 創(chuàng)新點(diǎn)

  1. 將大型卷積神經(jīng)網(wǎng)絡(luò)(CNNs)應(yīng)用于自下而上的候選區(qū)域以定位和分割物體但惶。
  2. 當(dāng)帶標(biāo)簽的訓(xùn)練數(shù)據(jù)不足時(shí)枷遂,先針對(duì)輔助任務(wù)進(jìn)行有監(jiān)督預(yù)訓(xùn)練,再進(jìn)行特定任務(wù)的調(diào)優(yōu)竞川,就可以產(chǎn)生明顯的性能提升店溢。

1.2 R-CNN檢測(cè)時(shí)的主要步驟為:

  1. 使用Selective Search算法從待檢測(cè)圖像中提取2000個(gè)左右的區(qū)域候選框,這些候選框可能包含要檢測(cè)的目標(biāo)委乌。
  2. 把所有侯選框縮放成固定大写材痢(原文采用227×227)。
  3. 先用ImageNet中的包含1000個(gè)分類(lèi)的數(shù)據(jù)初始化AlexNet網(wǎng)絡(luò)遭贸,得到較好的訓(xùn)練參數(shù)
  4. 將AlexNet最后一層換成21個(gè)節(jié)點(diǎn)戈咳,用VOC(20個(gè)分類(lèi))數(shù)據(jù)fine-tune
  5. 訓(xùn)練樣本輸入fine-tune后的網(wǎng)絡(luò),得到固定長(zhǎng)度的特征向量壕吹。
  6. 把特征向量送入SVM進(jìn)行分類(lèi)得到類(lèi)別信息著蛙,送入全連接網(wǎng)絡(luò)進(jìn)行回歸得到對(duì)應(yīng)位置坐標(biāo)信息。

1.3 缺點(diǎn)與不足

  1. 重復(fù)計(jì)算算利。R-CNN雖然不再是窮舉,但通過(guò)Proposal(Selective Search)的方案依然有兩千個(gè)左右的候選框泳姐,這些候選框都需要單獨(dú)經(jīng)過(guò)backbone網(wǎng)絡(luò)提取特征效拭,計(jì)算量依然很大,候選框之間會(huì)有重疊,因此有不少其實(shí)是重復(fù)計(jì)算缎患。
  2. 訓(xùn)練測(cè)試不簡(jiǎn)潔慕的。候選區(qū)域提取、特征提取挤渔、分類(lèi)肮街、回歸都是分開(kāi)操作,中間數(shù)據(jù)還需要單獨(dú)保存判导。
  3. 速度慢嫉父。前面的缺點(diǎn)最終導(dǎo)致R-CNN出奇的慢,GPU上處理一張圖片需要十幾秒眼刃,CPU上則需要更長(zhǎng)時(shí)間绕辖。
  4. 輸入的圖片Patch必須強(qiáng)制縮放成固定大小(原文采用227×227)擂红,會(huì)造成物體形變仪际,導(dǎo)致檢測(cè)性能下降。

二昵骤、SPP-NET(2014)

Kaiming He等人在R-CNN的基礎(chǔ)上提出了SPPNet树碱,該方法雖然還依賴候選框的生成,但將提取候選框特征向量的操作轉(zhuǎn)移到卷積后的特征圖上進(jìn)行变秦,將R-CNN中的多次卷積變?yōu)橐淮尉矸e成榜,大大降低了計(jì)算量。

2.1 創(chuàng)新點(diǎn)

  1. SPPNet引入了Spatial Pyramid pooling層
  2. 不用想R-CNN那樣對(duì)每一個(gè)候選區(qū)域(Proposal伴栓、ROI), 只需要對(duì)原始圖片做卷積伦连、池化操作。最后將ROI映射到最后的feature map

2.2 SPP-Net步驟

SPPNet 是R-CNN基礎(chǔ)上發(fā)展而來(lái)钳垮,所以基本思路惑淳、步驟是一樣的。不同之處就在上面提到的兩個(gè)創(chuàng)新點(diǎn)饺窿。對(duì)任意大小的圖片做卷積歧焦、池化操作得到最后的feature map。將ROI映射到feature map的區(qū)域肚医,那么就得到每一個(gè)ROI的feature map绢馍。用空間金字塔池化得到同樣大小的feature map。其他與R-CNN無(wú)異

2.3 Spatial Pyramid pooling

金字塔池化的操作示意圖如下

spp 示意圖

說(shuō)明:任意大小的圖片經(jīng)過(guò)卷積操作得到feature map(全連接層之前)肠套,對(duì)feature map以44網(wǎng)格舰涌,22網(wǎng)格屹篓,11網(wǎng)格進(jìn)行切分驱富,那么久分別得到16灸异、4、1個(gè)特征篷角,加起來(lái)就是21維特征卑吭,實(shí)際是21N維特征(N為feature map的深度)

2.3 缺點(diǎn)與不足

  1. spp 層不可導(dǎo)僚焦,導(dǎo)致分類(lèi)和主干網(wǎng)的訓(xùn)練是分開(kāi)的
  2. proposal region 和 后面的訓(xùn)練還是分開(kāi)的

三逼侦、Fast-CNN(2015)

Ross Girshick 針對(duì)SPPNet做了進(jìn)一步改進(jìn)提出的FRCNN ,其主要?jiǎng)?chuàng)新是RoI Pooling 層鸡典,它將不同大小候選框的卷積特征圖統(tǒng)一采樣成固定大小的特征源请。ROI池化層的做法和SPP層類(lèi)似,但只使用一個(gè)尺度進(jìn)行網(wǎng)格劃分和池化彻况。該層可以直接求導(dǎo)谁尸,訓(xùn)練時(shí)直接將梯度傳導(dǎo)到backbone網(wǎng)絡(luò)進(jìn)行優(yōu)化。FRCNN針對(duì)R-CNN和SPPNet在訓(xùn)練時(shí)是多階段的和訓(xùn)練的過(guò)程中很耗費(fèi)時(shí)間空間的問(wèn)題進(jìn)行改進(jìn)疗垛。將深度網(wǎng)絡(luò)和后面的SVM分類(lèi)兩個(gè)階段整合到一起症汹,使用一個(gè)新的網(wǎng)絡(luò)直接做分類(lèi)和回歸。使得網(wǎng)絡(luò)在Pascal VOC上的訓(xùn)練時(shí)間從R-CNN的84小時(shí)縮短到9.5小時(shí)贷腕,檢測(cè)時(shí)間更是從45秒縮短到0.32秒

3.1 創(chuàng)新點(diǎn)

  1. 引入ROI池化(與SPP一個(gè)意思)背镇,該層可以求導(dǎo),那么分類(lèi)任務(wù)就可以和主干網(wǎng)一起訓(xùn)練泽裳,不用像Spp-Net和R-CNN那樣用svm用來(lái)分類(lèi)瞒斩,DCNN用到特征向量(兩步是分開(kāi)的)
  2. SVD代替全連接層, 提高速度

3.2 Fast-CNN 步驟

  1. Fast RCNN仍然使用selective search選取2000個(gè)建議框涮总,但是這里不是將這么多建議框都輸入卷積網(wǎng)絡(luò)中胸囱,而是將原始圖片輸入卷積網(wǎng)絡(luò)中得到特征圖,再使用建議框?qū)μ卣鲌D提取特征框瀑梗。這樣做的好處是烹笔,原來(lái)建議框重合部分非常多,卷積重復(fù)計(jì)算嚴(yán)重抛丽,而這里每個(gè)位置都只計(jì)算了一次卷積谤职,大大減少了計(jì)算量
  2. 由于建議框大小不一,得到的特征框需要轉(zhuǎn)化為相同大小亿鲜,這一步是通過(guò)ROI池化層來(lái)實(shí)現(xiàn)的(ROI表示region of interest即目標(biāo))
  3. Fast RCNN里沒(méi)有SVM分類(lèi)器和回歸器了允蜈,分類(lèi)和預(yù)測(cè)框的位置大小都是通過(guò)卷積神經(jīng)網(wǎng)絡(luò)輸出的
  4. 為了提高計(jì)算速度,網(wǎng)絡(luò)最后使用SVD代替全連接層

3.3 缺點(diǎn)與不足

proposal region 和 后面的訓(xùn)練還是分開(kāi)的

四蒿柳、Faster-CNN(2015)

SPPNet和Faster RCNN都需要獨(dú)立的候選區(qū)域生成模塊饶套,這個(gè)模塊計(jì)算量很大,而且不易用GPU加速垒探。針對(duì)這個(gè)問(wèn)題妓蛮,Shaoqin Ren 等人在Faster RCNN基礎(chǔ)上提出Faster R-CNN ,在主干網(wǎng)絡(luò)中增加了RPN (Region Proposal Network)網(wǎng)絡(luò)圾叼,通過(guò)一定規(guī)則設(shè)置不同尺度的錨點(diǎn)(Anchor)在RPN的卷積特征層提取候選框來(lái)代替Selective Search等傳統(tǒng)的候選框生成方法蛤克,實(shí)現(xiàn)了網(wǎng)絡(luò)的端到端訓(xùn)練扔仓。候選區(qū)域生成、候選區(qū)域特征提取咖耘、框回歸和分類(lèi)全過(guò)程一氣呵成,在訓(xùn)練過(guò)程中模型各部分不僅學(xué)習(xí)如何完成自己的任務(wù)撬码,還自主學(xué)習(xí)如何相互配合儿倒。這也是第一個(gè)真正意義上的深度學(xué)習(xí)目標(biāo)檢測(cè)算法

4.1 創(chuàng)新點(diǎn)

  1. 主干網(wǎng)絡(luò)中增加了RPN (Region Proposal Network)網(wǎng)絡(luò),通過(guò)一定規(guī)則設(shè)置不同尺度的錨點(diǎn)(Anchor)在RPN的卷積特征層提取候選框來(lái)代替Selective Search等傳統(tǒng)的候選框生成方法
  2. 正正的實(shí)現(xiàn)了網(wǎng)絡(luò)的端到端訓(xùn)練

五呜笑、原始圖片中的ROI如何映射到到feature map

SPP-Net和Fast-RCNN中都需要將ROI(Region of interest)區(qū)域映射到feature map區(qū)域夫否,這樣就不需要對(duì)每一個(gè)候選框都做很多層的卷積運(yùn)算,特別的候選框中很多都是重疊的叫胁,導(dǎo)致了很多的運(yùn)算都是重復(fù)運(yùn)算凰慈。所以能不能只對(duì)原始圖片做一個(gè)周期的卷積運(yùn)算,然后直接將ROI映射到feature map呢?Kaiming He大神團(tuán)隊(duì)給出了答案驼鹅,是可以的微谓。那么如何映射呢?請(qǐng)看下面分解输钩。

5.1 感受野(receptive field)

在卷積神經(jīng)網(wǎng)絡(luò)中豺型,感受野的定義是 卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖(feature map)上的像素點(diǎn)在原始圖像上映射的區(qū)域大小。下圖是Kaiming He在iccv分享上的一張圖片买乃。


image.png

5.1.1 感受野大小計(jì)算

卷積核一般都是正方形的姻氨,所以我們以一個(gè)維度為例。

image.png

以上圖為例剪验,在第4層的一個(gè)feature 在第一層的感受野的大小是多少肴焊?先給出公式

  • 對(duì)于Convolution/Pooling layer:


    image.png

    image.png
  • 對(duì)于Neuron layer(ReLU/Sigmoid/…)
    image.png

    我們用上面公式計(jì)算一下:
    r4 = 1 (自已只能感受到自已)
    r3 = s3(r4-1)+k3 = 1 * (1 - 1) + 2 = 2
    r2 = s2(r3-1)+k2 = 2 * (2 - 1) + 3 = 5
    r1 = s1(r2-1)+k1 = 2 * (5 - 1) + 3 = 11
    所以對(duì)于第4層的一個(gè)像素點(diǎn),在第一層的感受的大小為11(實(shí)際為11 * 11)
    上面的方法是從下往上計(jì)算的功戚,這篇blog中還提供了一種從上往下的計(jì)算方式娶眷,作者列子寫(xiě)的很詳細(xì),大家也可以看下疫铜,只能給出作者提供的公式如下:
    image.png

    兩個(gè)方式我覺(jué)得大家都應(yīng)該好好理解一下茂浮,對(duì)感受野的理解甚至對(duì)神經(jīng)網(wǎng)絡(luò)的理解都會(huì)很有幫助

5.1.2 感受野坐標(biāo)計(jì)算

通常,我們需要知道網(wǎng)絡(luò)里面任意兩個(gè)feature map之間的坐標(biāo)映射關(guān)系(一般是中心點(diǎn)之間的映射)壳咕,如下圖席揽,我們想得到map 3上的點(diǎn)p3映射回map 2所在的位置p2(橙色框的中心點(diǎn))

image.png

先給出計(jì)算公式:


image.png

上面是計(jì)算任意一個(gè)layer輸入輸出的坐標(biāo)映射關(guān)系,如果是計(jì)算任意feature map之間的關(guān)系谓厘,只需要用簡(jiǎn)單的組合就可以得到幌羞,下圖是一個(gè)簡(jiǎn)單的例子:


image.png

上面的給出的公式是從feature map 計(jì)算感受野的,但是在Spp-Net 和 Fast-Rcnn中都需要將ROI映射到feature map竟稳。那我們把上面的公式反過(guò)來(lái)就可以属桦,已知p(i)坐標(biāo)(ROI四個(gè)角點(diǎn))求p(i+1)坐標(biāo)熊痴。
何凱明在SPP-net中采用的方法。其實(shí)就是巧妙的化簡(jiǎn)一下上面的公式 聂宾。做法如下:
image.png
5.1.2.1 SPP-net的ROI映射做法詳解原博客地址

SPP-net 是把原始ROI的左上角和右下角 映射到 feature map上的兩個(gè)對(duì)應(yīng)點(diǎn)果善。 有了feature map上的兩隊(duì)角點(diǎn)就確定了 對(duì)應(yīng)的 feature map 區(qū)域(下圖中橙色)。
SPP-net 是把原始ROI的左上角和右下角 映射到 feature map上的兩個(gè)對(duì)應(yīng)點(diǎn)系谐。 有了feature map上的兩隊(duì)角點(diǎn)就確定了 對(duì)應(yīng)的 feature map 區(qū)域(下圖中橙色)巾陕。


image.png
image.png

image.png

這篇文章參考了很多其他的博客,特別是一些圖和公式纪他,所參考的資料都在下面的參考文獻(xiàn)中一一列出鄙煤。很多博客寫(xiě)的真的很詳細(xì),所以大家對(duì)同一個(gè)問(wèn)題茶袒,不妨多參考一些文章梯刚。

參考文獻(xiàn)

基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法綜述
目標(biāo)檢測(cè)最新研究、論文匯總
目標(biāo)檢測(cè)綜述(持續(xù)更新中)
深度神經(jīng)網(wǎng)絡(luò)中感受野
Convolutional Feature Maps-Kaiming He
原始圖片中的ROI如何映射到到feature map
Concepts and Tricks In CNN(長(zhǎng)期更新)
深度神經(jīng)網(wǎng)絡(luò)中的感受野(Receptive Field)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末薪寓,一起剝皮案震驚了整個(gè)濱河市亡资,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌向叉,老刑警劉巖沟于,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異植康,居然都是意外死亡旷太,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)销睁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)供璧,“玉大人,你說(shuō)我怎么就攤上這事冻记∷荆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵冗栗,是天一觀的道長(zhǎng)演顾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)隅居,這世上最難降的妖魔是什么钠至? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮胎源,結(jié)果婚禮上棉钧,老公的妹妹穿的比我還像新娘。我一直安慰自己涕蚤,他們只是感情好宪卿,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布的诵。 她就那樣靜靜地躺著,像睡著了一般佑钾。 火紅的嫁衣襯著肌膚如雪西疤。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,785評(píng)論 1 314
  • 那天休溶,我揣著相機(jī)與錄音瘪阁,去河邊找鬼。 笑死邮偎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的义黎。 我是一名探鬼主播禾进,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼廉涕!你這毒婦竟也來(lái)了泻云?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狐蜕,失蹤者是張志新(化名)和其女友劉穎宠纯,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體层释,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婆瓜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贡羔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廉白。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乖寒,靈堂內(nèi)的尸體忽然破棺而出猴蹂,到底是詐尸還是另有隱情,我是刑警寧澤楣嘁,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布磅轻,位于F島的核電站,受9級(jí)特大地震影響逐虚,放射性物質(zhì)發(fā)生泄漏聋溜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一叭爱、第九天 我趴在偏房一處隱蔽的房頂上張望勤婚。 院中可真熱鬧,春花似錦涤伐、人聲如沸馒胆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)祝迂。三九已至睦尽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間型雳,已是汗流浹背当凡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纠俭,地道東北人沿量。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像冤荆,于是被迫代替她去往敵國(guó)和親朴则。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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