faster rcnn resnet_RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比
RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN檢測(cè)模型對(duì)比
一.RCNN
問(wèn)題一:速度
經(jīng)典的目標(biāo)檢測(cè)算法使用滑動(dòng)窗法依次判斷所有可能的區(qū)域。本文則預(yù)先提取一系列較可能是物體的候選區(qū)域,之后僅在這些候選區(qū)域上提取特征,進(jìn)行判斷。
問(wèn)題二:訓(xùn)練集
經(jīng)典的目標(biāo)檢測(cè)算法在區(qū)域中提取人工設(shè)定的特征(Haar,HOG)。本文則需要訓(xùn)練深度網(wǎng)絡(luò)進(jìn)行特征提取??晒┦褂玫挠袃蓚€(gè)數(shù)據(jù)庫(kù):
一個(gè)較大的識(shí)別庫(kù)(ImageNet ILSVC 2012):標(biāo)定每張圖片中物體的類別。一千萬(wàn)圖像,1000類。
一個(gè)較小的檢測(cè)庫(kù)(PASCAL VOC 2007):標(biāo)定每張圖片中,物體的類別和位置。一萬(wàn)圖像,20類。
保證合并后形狀規(guī)則。
網(wǎng)絡(luò)分為四個(gè)部分:區(qū)域劃分、特征提取、區(qū)域分類、邊框回歸
區(qū)域劃分:使用selective search算法畫(huà)出2k個(gè)左右候選框,送入CNN
特征提取:使用imagenet上訓(xùn)練好的模型,進(jìn)行finetune
區(qū)域分類:從頭訓(xùn)練一個(gè)SVM分類器,對(duì)CNN出來(lái)的特征向量進(jìn)行分類
邊框回歸:使用線性回歸,對(duì)邊框坐標(biāo)進(jìn)行精修
優(yōu)點(diǎn):
ss算法比滑窗得到候選框高效一些;使用了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),準(zhǔn)確率比傳統(tǒng)檢測(cè)提高了。
缺點(diǎn):
1、ss算法太耗時(shí),每張圖片都分成2k,并全部送入CNN,計(jì)算量很大,訓(xùn)練和inference時(shí)間長(zhǎng)。
2、四個(gè)模塊基本是單獨(dú)訓(xùn)練的,CNN使用預(yù)訓(xùn)練模型finetune、SVM重頭訓(xùn)練、邊框回歸重頭訓(xùn)練。微調(diào)困難,可能有些有利于邊框回歸的特征并沒(méi)有被CNN保留。
二.Fast-RCNN
Fast RCNN方法解決了RCNN方法三個(gè)問(wèn)題:
問(wèn)題一:測(cè)試時(shí)速度慢
RCNN一張圖像內(nèi)候選框之間大量重疊,提取特征操作冗余。
本文將整張圖像歸一化后直接送入深度網(wǎng)絡(luò)。在鄰接時(shí),才加入候選框信息,在末尾的少數(shù)幾層處理每個(gè)候選框。
問(wèn)題二:訓(xùn)練時(shí)速度慢
原因同上。
在訓(xùn)練時(shí),本文先將一張圖像送入網(wǎng)絡(luò),緊接著送入從這幅圖像上提取出的候選區(qū)域。這些候選區(qū)域的前幾層特征不需要再重復(fù)計(jì)算。
問(wèn)題三:訓(xùn)練所需空間大
RCNN中獨(dú)立的分類器和回歸器需要大量特征作為訓(xùn)練樣本。
本文把類別判斷和位置精調(diào)統(tǒng)一用深度網(wǎng)絡(luò)實(shí)現(xiàn),不再需要額外存儲(chǔ)。
相對(duì)RCNN,準(zhǔn)確率和速度都提高了,具體做了以下改進(jìn):
1、依舊使用了selective search算法對(duì)原始圖片進(jìn)行候選區(qū)域劃分,但送入CNN的是整張?jiān)紙D片,相當(dāng)于對(duì)一張圖片只做一次特征提取,計(jì)算量明顯降低
2、在原圖上selective search算法畫(huà)出的候選區(qū)域?qū)?yīng)到CNN后面輸出的feature map上,得到2k個(gè)左右的大小長(zhǎng)寬比不一的候選區(qū)域,然后使用RoI pooling將這些候選區(qū)域resize到統(tǒng)一尺寸,繼續(xù)后續(xù)的運(yùn)算
3、將邊框回歸融入到卷積網(wǎng)絡(luò)中,相當(dāng)于CNN網(wǎng)絡(luò)出來(lái)后,接上兩個(gè)并行的全連接網(wǎng)絡(luò),一個(gè)用于分類,一個(gè)用于邊框回歸,變成多任務(wù)卷積網(wǎng)絡(luò)訓(xùn)練。這一改進(jìn),相當(dāng)于除了selective search外,剩余的屬于端到端,網(wǎng)絡(luò)一起訓(xùn)練可以更好的使對(duì)于分類和回歸有利的特征被保留下來(lái)
4、分類器從SVM改為softmax,回歸使用平滑L1損失。
缺點(diǎn):因?yàn)橛衧elective search,所以還是太慢了,一張圖片inference需要3s左右,其中2s多耗費(fèi)在ss上,且整個(gè)網(wǎng)絡(luò)不是端到端。
三.Faster-RCNN
從RCNN到fast RCNN,再到本文的faster RCNN,目標(biāo)檢測(cè)的四個(gè)基本步驟(候選區(qū)域生成,特征提取,分類,位置精修)終于被統(tǒng)一到一個(gè)深度網(wǎng)絡(luò)框架之內(nèi)。所有計(jì)算沒(méi)有重復(fù),完全在GPU中完成,大大提高了運(yùn)行速度。
引入RPN,Faster-RCNN相當(dāng)于Fast-RCNN+RPN,準(zhǔn)確率和速度進(jìn)一步提高,主要做了以下改進(jìn):
1、移除selective search算法,還是整張?jiān)紙D片輸入CNN進(jìn)行特征提取,在CNN后面的卷積不再使用ss算法映射過(guò)來(lái)的候選區(qū)域,而是采用新的網(wǎng)絡(luò)RPN,使用神經(jīng)網(wǎng)絡(luò)自動(dòng)進(jìn)行候選區(qū)域劃分。
2、RPN通過(guò)生成錨點(diǎn),以每個(gè)錨點(diǎn)為中心,畫(huà)出9個(gè)不同長(zhǎng)寬比的框,作為候選區(qū)域,然后對(duì)這些候選區(qū)域進(jìn)行初步判斷和篩選,看里面是否包含物體(與groundtruth對(duì)比IoU,大于0.7的為前景,小于0.3的為背景,中間的丟棄),若沒(méi)有就刪除,減少了不必要的計(jì)算。
3、有效的候選區(qū)域(置信度排序后選取大概前300個(gè)左右)進(jìn)行RoI pooling后送入分類和邊框回歸網(wǎng)絡(luò)。
優(yōu)點(diǎn):端到端網(wǎng)絡(luò),整體進(jìn)行優(yōu)化訓(xùn)練;使用神經(jīng)網(wǎng)絡(luò)自動(dòng)生成的候選區(qū)域?qū)Y(jié)果更有利,比ss算法好;過(guò)濾了一些無(wú)效候選區(qū),較少了冗余計(jì)算,提升了速度。
RPN訓(xùn)練:
1、加載預(yù)訓(xùn)練模型,訓(xùn)練RPN。
2、訓(xùn)練fast-rcnn,使用的候選區(qū)域是RPN的輸出結(jié)果,然后進(jìn)行后續(xù)的bb的回歸和分類。
3、再訓(xùn)練RPN,但固定網(wǎng)絡(luò)公共的參數(shù),只更新RPN自己的參數(shù)。
4、根據(jù)RPN,對(duì)fast-rcnn進(jìn)行微調(diào)訓(xùn)練。
四.R-FCN
一個(gè)base的conv網(wǎng)絡(luò)如ResNet101, 一個(gè)RPN(Faster RCNN來(lái)的),一個(gè)position sensitive的prediction層,最后的ROI pooling+投票的決策層。
分類需要特征具有平移不變性,檢測(cè)則要求對(duì)目標(biāo)的平移做出準(zhǔn)確響應(yīng)?,F(xiàn)在的大部分CNN在分類上可以做的很好,但用在檢測(cè)上效果不佳。SPP,Faster R-CNN類的方法在ROI pooling前都是卷積,是具備平移不變性的,但一旦插入ROI pooling之后,后面的網(wǎng)絡(luò)結(jié)構(gòu)就不再具備平移不變性了。因此,本文想提出來(lái)的position sensitive score map這個(gè)概念是能把目標(biāo)的位置信息融合進(jìn)ROI pooling。
對(duì)于region-based的檢測(cè)方法,以Faster R-CNN為例,實(shí)際上是分成了幾個(gè)subnetwork,第一個(gè)用來(lái)在整張圖上做比較耗時(shí)的conv,這些操作與region無(wú)關(guān),是計(jì)算共享的。第二個(gè)subnetwork是用來(lái)產(chǎn)生候選的boundingbox(如RPN),第三個(gè)subnetwork用來(lái)分類或進(jìn)一步對(duì)box進(jìn)行regression(如Fast RCNN),這個(gè)subnetwork和region是有關(guān)系的,必須每個(gè)region單獨(dú)跑網(wǎng)絡(luò),銜接在這個(gè)subnetwork和前兩個(gè)subnetwork中間的就是ROI pooling。我們希望的是,耗時(shí)的卷積都盡量移到前面共享的subnetwork上。因此,和Faster RCNN中用的ResNet(前91層共享,插入ROI pooling,后10層不共享)策略不同,本文把所有的101層都放在了前面共享的subnetwork。最后用來(lái)prediction的卷積只有1層,大大減少了計(jì)算量。
在Faster-RCNN基礎(chǔ)上,進(jìn)一步提高了準(zhǔn)確率,主要以下改進(jìn):
1、使用全卷積層代替CNN basenet里面的全連接層。
2、CNN得到的feature map在RoI pooling之后變成3x3大小,把groundtruth也變成3x3大小,對(duì)9宮格每個(gè)區(qū)域分別比較和投票。
總結(jié)
以上是生活随笔為你收集整理的faster rcnn resnet_RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: project ‘org.springf
- 下一篇: 机器学习导论 与数学分析