Faster-rcnn實現目標檢測
前言:本文淺談目標檢測的概念,發展過程以及RCNN系列的發展。為了實現基於Faster-RCNN算法的目標檢測,初步了解了RCNN和Fast-RCNN實現目標檢測的具體步驟及其優缺點。在深刻理解Faster-RCNN的基本原理、詳細分析其結構后,開始進行對Faster-RCNN的訓練。其訓練過程包含對RPN網絡的訓練得到proposals和訓練Faster-RCNN。整體過程思想是類似於迭代,但不需要迭代多次。最終得到了較好的實驗結果,經分析可知,Faster-RCNN算法與RCNN和Fast-RCNN相比,效率最高。
目標檢測是什么
目標檢測就是將對目標的分割和識別合二為一,是一種基於目標幾何和統計特征的圖像分割。當需要在一個復雜場景中對多個目標進行實時處理時,目標的自動提取和識別就尤其重要。簡而言之,目標檢測與識別就是指從一張圖片或一個場景中找出目標,而這其中包含檢測和識別兩個過程。
近幾年,隨着目標檢測的興起,越來越多的相關研究成果被發表在各大期刊,研究該領域的人逐漸增多,目標檢測也相應地不斷發展。由於傳統的目標檢測方法復雜度較高,窗口冗余,且手工設計的特征對於多樣性的變化沒有很好的魯棒性。正好,基於深度學習的目標檢測和識別能較好的解決這些問題,因此,該方法更受人推廣和應用,是目標檢測的主流方法。其中主要涉及到深度神經網絡模型以及卷積神經網絡CNN。目前大致可將現有的基於深度學習的目標檢測算法大致分為以下三類:
(1)基於候選區域的深度學習目標檢測算法,如RCNN、 Fast-RCNN、 Faster-RCNN;
(2)基於回歸的深度學習目標檢測算法,如YOLO、SSD;
(3)基於搜索的深度學習目標檢測算法,如基於視覺注意的AttentionNet,基於強化學習的算法。
由於深度學習的廣泛運用,目標檢測算法得到了較為快速的發展。當前,YOLO、SSD和RFPN屬於較新且效果較好的方法,RFCN的准確度最高,但是速度最快的還是YOLO和SSD一體化的方法。本文對目標檢測的研究主要采用基於候選區域建議的深度學習目標檢測算法,該類算法中較知名的為RCNN、 Fast-RCNN和 Faster-RCNN。從順序上,Fast-RCNN彌補了RCNN的一些不足之處,而Faster-RCNN則是基於Fast-RCNN進行了改進,三者在非實時水平上,精度和速度明顯得到了提高。Faster-RCNN和YOLO、SSD相比,魯棒性更強,但是速度會比較慢。Faster-RCNN是由RCNN不斷演化得來的,重點提升部分是對於RCNN的效率提升,占用空間的減小,本文首先將從RCNN系列來介紹最初目標檢測所用的方法。
一、 RCNN系列的發展
1.1 R-CNN
根據以往進行目標檢測的方法,在深度學習應用於目標檢測時,同樣首先嘗試使用滑動窗口的想法,先對圖片進行選取2000個候選區域,分別對這些區域進行提取特征以用來識別分割。
1.1.1 rcnn具體的步驟是:
步驟一:在imagenet分類比賽上尋找一個cnn模型,使用它用於分類的預訓練權重參數;對於這個模型修改最后的分類層,分為21類,去掉最后一個全連接層,因為所用的測試集為20類,且還有一類背景類。
步驟二:根據選擇性搜索來對輸入的圖像進行選取2000個候選區域框;
然后修改候選區域框的大小,以適應cnn的輸入,然后用cnn來提取出每個候選區域的feature map。
步驟三:訓練svm分類器,這個svm分類器是對於特定的某一類進行區分,是專門用來對特定敏感區域進行分類,每一個類別對應於一個SVM分類器
步驟四:使用回歸器精細修正每個候選框的位置,對於每一個類,需要訓練一個回歸模型去判定這個框框的是否完美。
對應步驟的圖片結構如下圖1:
這里有幾點需要補充的是:
1. 采用預訓練和fine-tune來解決了標簽數據不多的問題,在imagenet上訓練過大規模圖片集合的網絡已經對圖片的基本信息都有了很明確的收集,采用預訓練模型后再在voc訓練集上進行fine-tune會達到很好的效果。
2. 選擇候選區域的幾種方法:這里采用的是slective search
3. 訓練過程:
在得到候選區域后,首先將候選區域跟gt(真實標注的框)來進行比較,如果iou>0.5(iou是圖像分割里面對於判定兩個不同區域的相似度所采用的一個標准)把這個候選區域置為正樣本,否則就是負樣本。Iou的取值相當重要,會對結果影響較大。
訓練時候采用SGD方法來調整框的位置。
1.1.2 RCNN的缺點:
1. 訓練過程太慢,需要對每一個候選區域都輸入到cnn中再進行提取特征,極大的浪費了時間和精力。
2. 步驟相對較多,需要fine-tune預訓練模型、訓練SVM分類器、回歸器進行精細的調整。
3. 占用空間大,提取出的特征以及分類器都需要占用額外的空間
4. 沒有對資源進行重復利用,在使用SVM分類和對框進行回歸操作的時候cnn模型的參數並沒有同步修改。
1.2 Fast rcnn
針對RCNN的需要對每一個候選區域進行cnn操作這一繁瑣操作進行改進,從而的到了fast-rcnn算法,
1.2.1 fast-rcnn的步驟如下:
步驟一:同樣是尋找一個在imagenet上訓練過的預訓練cnn模型
步驟二:與rcnn一樣,通過selective search在圖片中提取2000個候選區域
步驟三:將一整個圖片都輸入cnn模型中,提取到圖片的整體特征(這是相對於rcnn最大的改進的地方)
步驟四:把候選區域映射到上一步cnn模型提取到的feature map里
步驟五:采用rol pooling層對每個候選區域的特征進行下采樣,從而得到固定大小的feature map,以便輸入模型中
步驟六:根據softmax loss和smooth l1 loss對候選區域的特征進行分類和回歸調整的過程,回歸操作是對於框調整所使用的bou b reg來訓練。
相比rcnn的不同處:
在得到每個候選區域的feature map后,通過rolpooling 層來進行上采樣操作對尺寸進行調整以便時輸入模型;
最后使用的loss函數為multi-task loss,然后是把回歸操作加入到cnn權重更新的過程中去。
1.2.2優點有以下幾點:
1. fast-rcnn在訓練的時候,把整張圖片送入cnn網絡進行提取特征,不需要像rcnn那樣對每一個候選區域進行輸入cnn,從而在cnn的利用上提高了很大的效率。
2. 訓練速度相應提升,不需要svm分類器對提取后的特征進行存儲數據,把圖片的特征和候選區域直接送入loss,不需要對硬盤進行讀寫的操作。
3. 對網絡的利用效率,用於分類和回歸調整的功能都用cnn網絡來實現,不需要額外的分類器和回歸器。
但是fast-rcnn仍然有其缺陷,對於生成候選區域仍然不夠快速,所以faster-rcnn針對這一點進行改進,提出使用rpn網絡來生成候選區域。同時提出的rpn網絡可以與目標檢測同時共享一個cnn的網絡參數,減少參數的數量。
二 Faster rcnn的基本原理
2.1 faster rcnn的原理及結構
前面介紹了rcnn以及fast-rcnn,基礎知識已經做好鋪墊,接下來將介紹rcnn系列的最后一種算法faster-rcnn的詳細內容。Faster-rcnn的主要原理如下:
Faster-rcnn是Ross B.Girshick在2016年在r-cnn和Fast-rcnn的基礎上提出來的,最大的亮點之處是faster-rcnn把獲取feature map,候選區域選取,回歸和分類等操作全部融合在一個深層網絡當中,效率較前兩種提升了很多。
Faster-rcnn的基本結構如下圖:
Faster-rcnn在結構上主要由一下幾部分構成:
1. 卷積層,這部分卷積層就是普通的由imagenet比賽上用於分類的預訓練模型所用的卷積層,它的主要功能是用來提取整張圖片的feature map,卷積層結構也是卷積+激活函數+池化操作組成的。
2. RPN網絡,這是整個faster-rcnn的核心部分,改善了前兩種方法用選擇搜索來獲取候選區域的方法,這種方法不僅快速而且更加高效地利用了cnn網絡。在生成候選區域的時候會生成anchors,然后內部通過判別函數判斷anchors屬於前景還是后景,然后通過邊框回歸來進行第一次調整anchors獲取准確的候選區域。
3. Roi pooling,這一層的添加主要是為了解決最后輸入全連接層的feature map的尺寸大小不同的問題,通過上采樣來獲取固定大小。
4. 分類和回歸,最后通過兩個分類層和回歸層來分別判斷物體屬於哪個類別以及精細調整候選區域的位置,以獲取最終目標檢測的結果。
2.2 faster rcnn各個結構的詳細介紹
針對這幾個部分詳細展開介紹faster-rcnn會更直觀的理清其結構是如何設計的。
下面對於一些術語采用英文來表達,中文翻譯有時不是特別准確,這里列出大致對照的部分,region proposal為候選區域,foreground,background為前景和后景,bounding box regression為邊框回歸,anchors為錨點,對於anchors有很多解釋,后面將會詳細解釋其含義。
首先列出論文中原作者所提出的faster-rcnn的結構,如下圖:
論文作者所采用的是vgg16模型,
不用比較新的cnn模型而采用vgg模型的原因:
若使用最新的resnet網絡會使效果下降,因為輸入的圖像尺寸比較小,針對vgg模型會有很好的結果,若將尺寸加大的話,使用resnet網絡會有更好的結果。因為resnet是非常深層的網絡,需要用較大的圖片來保證各種信息的完整性。
對於任何一種尺寸的圖片,首先變成m*n大小的尺寸,輸入進入vgg16的網絡中,卷積結構是由13個卷積層加上13個relu激活層加上4個pooling池化層,經過此卷積結構后得到圖片的feature map,然后下半部分是rpn網絡,rpn網絡分為兩個部分。Rpn網絡的上半部分為生成proposals的部分,下半部分為對於proposal進行第一次回歸調整的部分。然后接上roipooling層來獲取固定大小的尺寸,最后接入softmax網絡以及bbox_pred。
每個部分的原理介紹:
1. 卷積結構
傳統的conv+relu+pooling組成的卷積結構,所有的conv層都是kernelsize為3,padding為1,stride為1;所有的pooling層都是kernelsize為2,padding為0,stride為2,為何如此設計?因為再faster-rcnn中對所有的卷積都做了擴充處理,導致輸入圖片的尺寸變為(m+2)*(n+2),然后通過3*3的卷積核輸出得到尺寸為m*n,通過這種組合是的輸入和輸出矩陣的大小相同。如圖所示:
通過卷積層后,pooling層操作是使m*n的矩陣變為(m/2)*(n/2),所以再通過整個卷積結構之后原始圖片的尺寸為M*n,變成(m/16)*(n/16)。生成的feature map將與原圖對照。
2. RPN網絡
Faster-rcnn的重點就是在於提出了rpn網絡來生成proposals,這種方法既高效又實用。
Rpn網絡的上下兩層結構如圖所示:
1*1的卷積是為了確定輸出的num_output,上面是num_out=18(2*9),對應bg\fg每個anchor,這里輸出的圖像為(m/16)*(n/16)*18;下面是num_output=36(4*9),對應4個坐標每個anchor。
上半部分是通過sliding window來預測多個reference box,通過softmax分開正樣本和負樣本,然后通過下半部分的回歸操作得到更加精細的proposal,而結構中的proposal則通過進一步綜合操作獲取proposals。
下面說下rpn網絡的具體實現方式:
在由上一層得到的feature map上用一個3*3的滑動窗口(這個滑動窗口就是3*3卷積核)生成一個256維的特征,這樣同樣使每個點融合了周圍3*3的空間信息
在這個特征之后連接兩個用於分類和回歸的全連接層。其實現方式如圖所示:
分別介紹圖中的每個部分,sliding window為一個3*3的滑動窗口,其中心位置是一個錨點也就是anchor,intermediate layer為產生的256維特征,cls layer為區分正樣本和負樣本的分類器,reg layer為第一次獲取更加精細的proposal的bounding box regression,這里的分類和回歸不是最終確定某個類別以及檢測框的回歸,這里的回歸僅僅是為了產生更加精細的proposal為下一步操作做准備。
對參數的解釋:
1. 一個sliding window可以同時預測出9個proposal,對於每個proposal是根據一個scale,一個aspect_ratio和sliding window中的anchor唯一確定,這里可以預測9個的原因是由3個scale和3個aspect_ratio可以確定9個anchor,
2. 在feature map上進行卷積核的卷積操作,產生256維特征,然后采用輸出分別為2*9=18以及4*9=36,卷積核大小為1*1,步長為1的卷積層實現與cls layer和reg layer的連接。
3. 對於分類層,2*9的輸出,因為分類分為正負兩種樣本,而回歸是要預測4個值,中心位置的坐標,以及寬和高,所以是4*9的輸出。
2.3 Anchors的詳細解釋
1. anchor,譯為錨點,是sliding window的中心點的坐標,用於預測初步粗略的proposal,可以這樣說 ,一個anchor對應於一個proposal,論文中作者說一個sliding window預測9個proposal。
2. loss函數的計算,先確定參與訓練的樣本為正負樣本的組合,一個anchor與真實標注的ground truth的iou值>0.7,則認為是正樣本,而iou<0.3是負樣本,如果正樣本數不足,可以采用,iou值較大的作為正樣本參與訓練。
對於RPN網絡的Loss計算,是分為兩個部分的,即classification loss和regression loss,計算分類的Loss只需要anchors的預測結果和groundtruth真實值即可,另一個regression loss需要:reference box即初步預測的候選區域(中心點坐標xa,ya,寬wa,高ha),proposal即rpn預測得到的結果(中心點坐標x,y,寬w高h),ground truth框的真實值信息(中心點坐標x*,y*,寬w*,高h*)。計算總loss的公式如下:
2.4 Bounding box regression 原理
圖7 目標檢測飛機
邊框回歸的實質就是由預測框一直不斷的往真實標注的框微調,使得兩者更加接近。如圖7所示,紅色的是由RPN網絡得到的proposal,綠色的是真實標注的ground truth,由於誤差的存在,紅框檢測的范圍較小,並沒有真正標注出飛機的真實邊框位置,所以我們采用bounding box regression來對紅框進行調整,以達到更好的效果。
邊框的參數一般是由x,y,w,h來表示,x,y是邊框的中心點坐標,w是寬,h是高。我們進行bounding box regression是要通過調整proposal(A)產生一個與真實標注(G)接近的邊框G`,如圖8所示:
圖8 調整邊框
它們之間的關系是:由網絡預測出的proposal A=(Ax,Ay,Aw,Ah), G(Gx,Gy,Gw,Gh),根據bounding box regression得出一個變換的結果F(Ax,Ay,Aw,Ah)=(Gx`,Gy`,Gw`,Gh`)使得G`與G接近。
從A變為G`的方法為通過平移變換和縮放來達到。
平移是:
縮放是:
可以看出所需要的是dx(A),dy(A),dw(A),dh(A),若預測的Proposal與GT差異較小的時候,可以認為上述操作是一種線性變換,可以通過線性回歸來進行調整。
針對此問題,輸入的值是feature map,定義為Φ(A),還需要輸入A和GT的改變關系,(tx,ty,tw,th),線性回歸得到的結果是dx(A),dy(A),dw(A),dh(A).所以,目標函數是:
Φ(A)是feature map,w為更新的權重參數,d(A)是得到的結果。所以Loss function定義為:
,
最終優化結果是:
應用於Faster-RCNN中,proposal和ground truth之間的關系如下:
使用邊框回歸訓練時,輸入特征,優化目標是使得輸出與ground truth盡可能接近。
2.5 對proposals進行bounding box regression
前文已經大致理解了bounding box regression的原理,圖9為RPN網絡的第二條線路。
圖9 RPN網絡的bounding box regression
由圖10可知,WxHx36即為經過該卷積的輸出圖像,因此caffe blob中的存儲就是[1, 36, H, W]。相當於feature maps的每個點有9個anchors,其中每一個anchors又有4個用於回歸的[dx(A),dy(A),dw(A),dh(A)]變換量。從前文中的計算公式可以從foreground anchors回歸出proposals。
圖10 1x1卷積的caffe prototxt定義
2.6 Softmax判定foreground和background分類的原理
圖 11 RPN中判定fg/bg網絡結構
如圖11所示,把一個M*N大小的矩陣送入到Faster-RCNN網絡,由於它到RPN網絡時會變成(M/16)*&(N/16)。因此,假設W=M/16,H=N/16。再如圖12所示,完成1x1卷積后再進入reshape與softmax。
圖12 1x1卷積定義
從圖12可知,WxHx18是經過該卷積的輸出圖像大小。對應着feature maps中每一個點有9個anchors,而每一個anchors又有可能是foreground和background,而全部信息中都會保存WxHx(9x2)大小的矩陣。為了方便softmax分類,在它的前后接一個reshape layer,而它的具體原因則是是因為在caffe基本數據結構blob中,采用blob=[batch_size, channel,height,width]的形式保存數據。正好前面保存bg/fg anchors的矩陣,[1, 2*9, H, W]是caffe blob中的存儲形式。因為當softmax分類時要進行fg/bg二分類(單獨tent出一個唯獨來用於softmax分類,之后再回復原樣),所以reshape layer會把它變成[1, 2, 9*H, W]大小。
因此,anchors和softmax在RPN網絡中用於初步提取出foreground anchors作為候選區域。
2.7proposal生成過程
Proposal Layer負責綜合所有 變換量和foreground anchors,計算出精准的proposal,送入后續RoI Pooling Layer。
proposal層forward的過程:
1.生成anchors,做bbox_reg
2.排序,在softmax層得到的fg anchor分數進行排序之后提取前6000個anchors
3.映射回原圖,限定邊界
4.nms篩選,排序,二次提取得到proposal.
2.8 roi pooling層和分類與回歸
RPN網絡的訓練每個batch是由256個proposal組成的,正負樣本各占一半,模型的參數是前一部分為預訓練模型的參數,剩下的參數通過高斯分布初始化。
- roi pooling層
這一層的主要作用是為了修改圖片的尺寸大小,以輸入全連接層進行分類和回歸。
這個層的思想主要是根據spp-net網絡得到的,spp-net通過金字塔結構解決了圖片尺寸大小不同的問題,roi pooling通過下采樣把不同大小的proposal變為相同大小的輸出。
原理是:
RoI Pooling layer forward過程:在之前有明確提到: 是對應MxN尺度的,所以首先使用spatial_scale參數將其映射回(M/16)x(N/16)大小的feature maps尺度;之后將每個proposal水平和豎直分為pooled_w和pooled_h份,對每一份都進行max pooling處理。這樣處理后,即使大小不同的proposal,輸出結果都是 大小,實現了fixed-length output(固定長度輸出)。
- 分類與回歸
通過由roi pooling得到的proposal feature map連接到全連接層,由softmax分類得出這個目標屬於哪一個種類,然后再通過bounding box regression進行對proposal的第二次精細調整,最終得到更加准確的目標檢測框。
其結構如圖所示:
圖13 分類的網絡結構圖
- 全連接層加上softmax進行分類識別
- 對proposal通過邊框回歸,獲得更加准確的結果。
全連接層要求固定大小輸入,所以這就是roi pooling操作的原因。
三 Faster-RCNN訓練過程
由上述基本原理可知,Faster-RCNN的訓練是依靠預訓練模型來進行的,例如VGG模型,真實訓練過程大概分為六個步驟:
- 獲取預訓練模型,訓練RPN網絡
- 通過RPN網絡得到proposals
- 第一次訓練Faster-RCNN
- 再一次訓練RPN網絡
- 利用上一步得出的RPN網絡,再一次得出proposals
- 再一次訓練Faster-RCNN
整體過程思想是類似於迭代,但是只需要兩次即可,因為迭代多次並不會有更好的結果出現。
訓練步驟如圖14所示:
圖14 訓練步驟
3.1訓練RPN網絡
訓練RPN網絡的步驟,先讀取VGG預訓練模型,通過一系列卷積結構實現對圖片特征的提取。
圖15 網絡結構
Vgg模型的卷積結構是圖中的紅色框,網絡最終的Loss function如下:
在圖中的公式里,i是anchors,pi是前景的概率,pi*是GT Predit(如果第i個anchor和GT的iou值大於0.7,即確定為foreground,pi*=1,如果IOU值小於0.3,則判定為background,pi*=0);t是預測的回歸框,t*是真實標注框。
如上文所述,loss函數分為回歸Loss和分類loss兩部分
- 回歸loss,是rpn_cls_loss層作用的,結果用於分類RPN網絡得到的proposal是屬於前景還是背景。
- 回歸Loss, 是rpn_loss_bbox層作用的,結果用於邊框回歸的訓練過程。在訓練的過程中背景部分被忽略。
在實際計算過程中發現兩者loss函數相差太大,所以用一個平衡參數來均衡影響。計算公式如下:
再對照流程圖里解釋一下:
- RPN訓練過程,rpn_data產生anchors用於訓練
- rpn-loss_cls,輸入的rpn_cls_scores_reshape和rpn_labels對照公式中的p,p*,Ncls則在p,p*的caffe blob的大小中得出。
- Rpn_loss_bbox,輸入進去rpn_bbox_pred,rpn_bbox_targets對照公式中的t,t*,rpn_bbox_inside_weigths對照p*,Nreg可以由caffe blob中得到。
3.2 通過RPN網絡得出proposals
已經得到訓練好的rpn網絡,在這個步驟中可以得出預測的proposals,由網絡結構圖可以看出,foreground softmax probability同時也可以得出,如圖所示,得到的數據將保存在文件中。
圖16 網絡結構
3.3訓練Faster-RCNN網絡
讀取上一步得到的文件,得到此步輸入的proposals和foreground probability。
將得到的proposaals作為rois輸入網絡,下圖所示藍色框代表此步驟;
計算bbox_inside_weights+bbox_outside_weights,然后傳入soomth_l1_loss layer,下圖所示綠色框為此步驟;
最終得到的是分類的結果和邊框回歸的結果,在圖中可以看出。
圖17 訓練Faster-RCNN網絡結構
這是stage1的整體流程,下面的stage2過程相似,這里不重復說明。
四 實驗結果
4.1實驗環境
Tensorflow 1.2
Python 3.5 其余Python包(cython,opencv-python)
Cuda 8.0
沒有較好的GPU支持,所以對於測試faster rcnn只能采用demo的小測試集進行測試。
4.2實驗過程
1. 配置好基礎環境
2. 下載數據集
3. 下載預訓練模型
4. 修改測試數據集的路徑
5. 開始訓練
4.3實驗結果
下面列出測試小數據集得出的目標檢測結果:
原始數據集為四張圖片:
如圖所示:紅色框標注的即為目標檢測的結果。
第一幅圖像的檢測結果:
第二幅圖像檢測結果:
第三幅檢測結果:
第四幅檢測結果:
從這幾幅測試圖像中可以看出,多個目標都被准確的檢測了出來。
五 總結分析
對於研究Faster rcnn的最重要的意義在於RCNN系列算法的效率提升,所以研究結果的最大意義應該表明在幾種算法的效率對比上。結論參考論文結果。
可以明顯的看出來,faster rcnn的時間開銷遠遠小於前兩種,但是在voc2007測試集上的map與前兩種相差不多。
最后總結一下幾種算法的對比,優缺點,如下表格:
算法 |
特點 |
每張圖片所費時間 |
缺點 |
RCNN |
通過選擇性搜索獲取proposals,每張圖片提取2000個區域 |
40-50s |
計算量大 |
FAST RCNN |
每張圖片只需要通過一次cnn即可得出特征映射,通過選擇性搜索生成proposals |
2s |
選擇性搜索較慢,計算量大 |
FASTER RCNN |
通過rpn網絡產生proposals,網絡重復利用性高 |
0.2s |
Object proposal需要花費較多時間 |
Faster rcnn最大的亮點之處是faster-rcnn把獲取feature map,候選區域選取,回歸和分類等操作全部融合在一個深層網絡當中,效率較前兩種提升了很多,綜合性能有較大提高,在檢測速度方面尤為明顯。真正實現了end to end檢測的框架,生成proposal僅需10ms。
可以將faster rcnn簡單的當成由proposals生成網絡rpns加上fast rcnn組合而成的,用rpn網絡代替選擇性搜索是此算法最優越的地方,它所解決的核心問題有:怎樣設計生成proposals,怎樣訓練rpn網絡,怎樣讓rpn和rcnn網絡共享卷積層即特征提取網絡,而不是分別學習兩個網絡。在第一次迭代的時候,用預訓練模型的參數去初始化rpn網絡和fast rcnn的卷積層的參數,第二次迭代時候,用fast rcnn的共享卷積層參數初始化rpn網絡中的卷積層參數,微調不共享的卷積層參數,訓練fast rcnn時候,兩個網絡共享的參數不變,微調不共享的層參數來實現兩個網絡共享卷積層參數。
而faster rcnn又可以通過對某些步驟的改進升級到更加精確的目標檢測方法,
Faster rcnn需要對20個生成的Proposal進行判斷,然后再進行目標檢測,這是兩個不同的步驟,最近的YOLO算法結合faster rcnn,改進地方在於將proposal生成選擇以及識別進行結合,只需一步即可得出結果。而ssd算法在不同層的feature map上做檢測,相對來說有了更大的覆蓋面積,也有進一步的效果提升。
總體來說,Faster-RCNN創造性的提出了rpn網絡使得整體算法效率提高了很多,但仍存在缺點,接下來一定會產生結合Faster-RCNN而產生的更優秀的算法來進行目標檢測。