序
網(wǎng)上關(guān)于兩階段目標(biāo)檢測(cè)(two-stage object detection)的幾個(gè)經(jīng)典工作R-CNN,SPPNet,F(xiàn)ast R-CNN,F(xiàn)aster R-CNN的發(fā)展,各自的優(yōu)缺點(diǎn)缺乏一個(gè)比較清楚的描述,大部分文章講的比較細(xì)節(jié),雖然有助于更為詳細(xì)地了解文章,但是讓讀者在短時(shí)間內(nèi)對(duì)各個(gè)文章有一個(gè)詳細(xì)的理解。本文主要對(duì)網(wǎng)上的資料進(jìn)行整合,希望讓讀者能較快地理解幾篇文章的優(yōu)劣。
R-CNN
本節(jié)會(huì)介紹R-CNN基本流程以及文章的缺點(diǎn)。最后對(duì)其中幾個(gè)重要步驟進(jìn)行補(bǔ)充說明
基本流程
R-CNN的基本流程如下,主要的步驟如下:
-
提取區(qū)域候選(extract region proposals):使用selective search方法提取2000個(gè)候選目標(biāo)
-
對(duì)每個(gè)候選目標(biāo)warp到一個(gè)固定的大小(例如224x224),主要包括直接對(duì)圖像進(jìn)行resize,或者是進(jìn)行crop,然后對(duì)空白部分進(jìn)行填充。
CNN本身實(shí)際上是能適應(yīng)不同大小的圖片輸入,但是特征最后要過fc,因此需要固定的大小。這一點(diǎn)之后在SPPNet中進(jìn)行解決
- 計(jì)算CNN特征(compute CNN features):用神經(jīng)網(wǎng)絡(luò)計(jì)算經(jīng)過warp的區(qū)域候選的特征圖
- 分類(classify regions):對(duì)提取到的特征輸入到SVM中進(jìn)行分類
可能會(huì)產(chǎn)生疑問:直接在網(wǎng)絡(luò)最后接softmax輸出分類概率不行嗎?為什么需要重新訓(xùn)練一個(gè)SVM進(jìn)行分類呢?回答:論文中說加SVM效果好?。ǖ菍?shí)際上在Fast-RCNN之后都用不上嘞!啊哈哈)
-
非極大值抑制(NMS,non-maximum suppression):刪除重復(fù)的候選框
-
位置精修(bounding box regression):使用一個(gè)回歸器(幾層fc)來修正候選框的位置
為什么直接使用selective search得到的region proposals的結(jié)果作為最終的bounding box呢?當(dāng)然是因?yàn)榻Y(jié)果不準(zhǔn)確啦,拿個(gè)網(wǎng)絡(luò)來精細(xì)調(diào)整一下位置肯定不虧,嘿嘿
以上就講完了RCNN整體的流程,最后用一張更直觀的圖來展示:
補(bǔ)充內(nèi)容
選擇性搜索
這部分介紹第一個(gè)步驟中使用的提取region proposals的方法——selective search,其屬于傳統(tǒng)算法,速度很慢,這一個(gè)部分在Faster-RCNN中被替換成神經(jīng)網(wǎng)絡(luò)。下面是其具體步驟:
- 對(duì)圖像進(jìn)行oversegmented 的圖像分割
- 計(jì)算鄰近區(qū)域的相似性,包括顏色、紋理等等
- 合并相似性高的區(qū)域,得到更大的區(qū)域并假如到區(qū)域集合中
- 重復(fù)2、3過程直到圖片變成一個(gè)區(qū)域。至此得到的區(qū)域集合就是我們要的region proposals
詳細(xì)過程可以參考: https://www.jianshu.com/p/99e121c3beb8
非極大值抑制
這一部分介紹第五步用到的非極大值抑制方法。selective search之后得到的候選框有2000多個(gè)!可以上一張圖看出很多框圈著同一個(gè)物體,而NMS的思想就是想保留置信度最高的框,把周圍重疊度高(交并比IoU高)的其他框給刪除,從而大大減少候選數(shù)量
詳細(xì)過程參考:https://blog.csdn.net/zouxiaolv/article/details/107400193
缺點(diǎn)
觀察RCNN的整體流程我們可以看出其具有以下幾個(gè)缺點(diǎn):
- 提取proposals用的selective search,速度慢且很多無用的proposals
- 重復(fù)計(jì)算特征:每一個(gè)proposals都需要通過CNN提取特征,速度會(huì)大大減慢
- 需要resize操作:proposals在輸入的時(shí)候需要經(jīng)過warp操作,可能會(huì)丟失原有的結(jié)構(gòu)信息
- 串行結(jié)構(gòu):先對(duì)特征進(jìn)行分類,然后再對(duì)bounding box位置進(jìn)行回歸。這個(gè)問題本質(zhì)上是因?yàn)榉诸惖臅r(shí)候需要重新訓(xùn)練一個(gè)SVM,而回歸bounding box坐標(biāo)是使用fc,二者不能共用,導(dǎo)致速度比較慢
SPPNet(修改CNN特征提取過程)
RCNN最主要的時(shí)間開銷實(shí)際上都花在了對(duì)2000個(gè)proposals進(jìn)行特征提取的地方。而SPPNet主要解決這個(gè)問題。
主要流程
SPPNet的主要流程如下:
可以看到相較于RCNN,其主要的修改部分有兩個(gè):
- 從原來需要多次特征提取變成一次特征提取
- 為了解決上一點(diǎn)帶來的“不同感興趣區(qū)域(RoI,region of interest)對(duì)應(yīng)特征的維度不同,而不能使用同一個(gè)fc”的問題,提出了spatial pyramid pooling(SPP)
具體的流程從下圖中第二行(RCNN)變成了第三行(SPPNet),也就是從“warp→特征提取”變成了“特征提取→SPP”。
SPP
上述主要修改的兩點(diǎn)中,第一點(diǎn)將多次CNN提取特征變?yōu)橐淮芜@個(gè)過程比較直觀,不再詳述。因此主要對(duì)第二點(diǎn):SPP層進(jìn)行講解。SPP層的目標(biāo)是為了將不同分辨率的特征都能映射到相同的維度上以供后續(xù)fc進(jìn)行分類。它的思路如下圖:
提出了多個(gè)尺度的池化層,來提取不同粒度的特征。對(duì)于任意分辨率的特征,會(huì)將它們劃分成相同數(shù)目的小塊進(jìn)行max pooling。例如圖中所示,不管特征圖大小怎樣,都會(huì)劃分成16、4、1個(gè)小塊,于是輸出是恒定為(16+4+1)*256維的特征,并將其送到fc中進(jìn)行分類。
下圖展示了一個(gè)例子:
左圖是輸入圖片和對(duì)應(yīng)的經(jīng)過selective search選擇出來的一個(gè)region proposal,右圖是將這個(gè)proposal映射到特征圖上的位置。
上圖就是對(duì)其按照不同的區(qū)域劃分進(jìn)行spp的結(jié)果,得到特征之后會(huì)把這些特征concat之后送到最后的fc中(最后這一步圖中沒畫出來)。
優(yōu)點(diǎn)
SSPNet有以下兩個(gè)優(yōu)點(diǎn):
- 讓最后的分類器能適應(yīng)任何尺寸的proposals:避免裁剪導(dǎo)致的信息丟失,或者是變形導(dǎo)致的位置信息扭曲
- 只需要對(duì)圖像特征提取一次,大大加速
- 提出spp,將不同分辨率的特征都映射到相同維度上
缺點(diǎn)
缺點(diǎn)實(shí)際上就是針對(duì)RCNN未解決的部分:
- 提取proposals速度慢
- 串行結(jié)構(gòu):先對(duì)特征進(jìn)行分類,然后再對(duì)bounding box位置進(jìn)行回歸。
Fast-RCNN(改版spp+分類與回歸二合一)
Fast-RCNN主要整合了proposals的分類和bounding box的回歸這兩個(gè)過程,整體進(jìn)行了加速。
主要流程
論文中給出的圖如下:
這個(gè)圖其實(shí)把前面提取region proposals的過程給省略了。要主要的是Fast RCNN仍然使用的是selective search來生成proposals的。如果光看上面的圖可能不好看出來和之前工作的區(qū)別,可以將它展示成我們都比較熟悉的樣子:
在轉(zhuǎn)化之后,我們可以很明顯看出Fast-RCNN和SPPNet的區(qū)別。Fast_RCNN主要的修改有以下兩點(diǎn):
- 將SPP層變成了RoI pooling層
- 取消了SVM,這樣將分類和回歸兩個(gè)過程合并,只是最后的linear層有所區(qū)別
RoI pooling
我們主要介紹第一點(diǎn)修改,第二點(diǎn)修改比較直觀,不做詳述。RoI pooling聽著是新提出的網(wǎng)絡(luò)層,實(shí)際上就是spp的簡化版(經(jīng)典改一張就是原創(chuàng)卡組) !本質(zhì)上是取了一個(gè)尺度的spp,見下圖應(yīng)該就很清楚了
下面這個(gè)過程給出了一個(gè)具體計(jì)算的例子(其實(shí)這也是spp中其中一個(gè)尺度的計(jì)算過程):
優(yōu)點(diǎn)
Fast-RCNN有以下兩個(gè)優(yōu)點(diǎn):
- 最后分類和回歸兩個(gè)步驟變成multi-task
- 提出RoI pooling,解決proposals分辨率不同影響最后fc求解的問題(感覺SPPNet已經(jīng)解決過了捏?科研人的辛酸是這樣的)
缺點(diǎn)
缺點(diǎn)實(shí)際上就是針對(duì)RCNN未解決的部分(又能少一個(gè)了):
- 提取proposals速度慢
Faster-RCNN(修改提取區(qū)域候選的過程)
Faster-RCNN就是解決最后一個(gè)問題:提取proposals速度慢的問題了!前面的網(wǎng)絡(luò)使用的都是seletive search作為候選提取算法,而這個(gè)地方就是想采用神經(jīng)網(wǎng)絡(luò)來代替這個(gè)過程。
主要流程
Faster-RCNN和之前方法的對(duì)比如下圖:
因?yàn)橹暗姆椒ó媹D的時(shí)候?qū)嶋H上沒有把提取region proposals的過程畫出來,他們都是在使用selective search之后將proposals映射到特征圖上(也就是左圖的RoI區(qū)域),而右圖是Faster-RCNN完整的過程??梢钥吹胶椭胺椒ㄏ啾鹊母淖兊牡胤骄椭挥幸稽c(diǎn):
- 用RPN代替?zhèn)鹘y(tǒng)的selective search方法來進(jìn)行候選區(qū)域提取
RPN
RPN是為了從圖像中提取多個(gè)候選區(qū)域,其基本思想是模式匹配的方法。對(duì)每種模式去回歸這個(gè)模式下是否包含物體的概率以及對(duì)bounding box的修正。下圖是一個(gè)概覽圖。
下面來舉一個(gè)例子會(huì)更加清楚一點(diǎn):對(duì)每一個(gè)像素,以這個(gè)像素為中心,預(yù)先設(shè)定九種候選框(在這里叫anchor)。這樣在經(jīng)過特征提取之后,特征圖上的一個(gè)點(diǎn)可以理解成對(duì)應(yīng)原圖中一個(gè)像素位置的9種anchor
下面這個(gè)圖展示地更清楚一點(diǎn),上圖中灰色的特征圖上每一個(gè)點(diǎn)會(huì)對(duì)應(yīng)下圖上紅色點(diǎn)的位置(每個(gè)位置會(huì)有9個(gè)anchor)。
假設(shè)特征提取之后的特征圖維度為40x60x512,分成兩個(gè)分支,分別得到
- 分類分?jǐn)?shù),維度為40x60x9x2,代表原圖上40x60個(gè)點(diǎn)上,這9個(gè)anchor分類為前背景的概率(下分支)
- 對(duì)bounding box的坐標(biāo)進(jìn)行修正的參數(shù)。維度為,40x60x9x4,代表原圖上40x60個(gè)點(diǎn)上,這9個(gè)anchor的bounding box的偏移量(上分支)
之后用bounding box修正參數(shù)進(jìn)行修正就能得到region proposals啦!以上就是RPN的全過程
優(yōu)點(diǎn)
Faster-RCNN的優(yōu)點(diǎn)就主要體現(xiàn)在用RPN替代了傳統(tǒng)提取區(qū)域候選算法,大大加速!
缺點(diǎn)
雖然看來已經(jīng)解決了RCNN的四個(gè)缺點(diǎn)。但是這不代表Faster-RCNN就是完美的了,后續(xù)也有很多工作在這上面進(jìn)行改進(jìn),這些就超出本文的范圍啦!文章來源:http://www.zghlxwxcb.cn/news/detail-494156.html
最后感謝各位看到最后!文章來源地址http://www.zghlxwxcb.cn/news/detail-494156.html
參考資料
- https://jhui.github.io/2017/03/15/Fast-R-CNN-and-Faster-R-CNN/
- https://analyticsindiamag.com/r-cnn-vs-fast-r-cnn-vs-faster-r-cnn-a-comparative-guide/
- https://zhuanlan.zhihu.com/p/370407951
- https://blog.csdn.net/weixin_43624538/article/details/87966601
- https://blog.csdn.net/qq_35586657/article/details/97885290
- https://www.cnblogs.com/kk17/p/9748378.html#25-%E5%AF%B9%E6%96%87%E7%AB%A0%E7%9A%84%E4%B8%80%E4%BA%9B%E6%80%9D%E8%80%83
- https://blog.csdn.net/fenglepeng/article/details/117898968
到了這里,關(guān)于目標(biāo)檢測(cè)經(jīng)典工作發(fā)展(超詳細(xì)對(duì)比):R-CNN vs SPPNet vs Fast R-CNN vs Faster R-CNN的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!