日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

算法了解:RCNN、SPP-Net、Fast-RCNN、Faster-RCNN

發布時間:2023/11/27 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法了解:RCNN、SPP-Net、Fast-RCNN、Faster-RCNN 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

強烈推薦視頻:

非常嚴謹,非常美觀,非常清楚(重點和細節全講了,觀看人數多,有指正)。

RCNN理論合集:https://www.bilibili.com/video/BV1af4y1m7iL?from=search&seid=4520391483531272743

(包括RCNN系列、YOLO系列、以及源碼講解,非常精良成體系)

1 RCNN(2013年11月)

一句話介紹RCNN:將CNN方法引入目標檢測領域的開山之作!大大提高了檢測效果

1.1 發明背景

2012年AlexNet在ImageNet舉辦的ILSVRC中大放異彩,R-CNN作者受此啟發,嘗試將AlexNet在圖像分類上的能力遷移到PASCAL VOC(1萬圖像,20類,標定類別和位置)的目標檢測上。這就要解決兩個問題:

  • 如何利用卷積網絡去目標定位
  • 如何在小規模的數據集上訓練出較好的網絡模型。

1.2 解決思路

針對問題1,R-CNN利用候選區域的方法(Region Proposal),這也是該網絡被稱為R-CNN的原因:Regions with CNN features。

針對問題2,R-CNN使用了微調的方法,利用AlexNet在ImageNet上預訓練好的模型。

訓練總思路

  1. 生成候選區:一張圖片生成1000~2000個候選區域(Region Proposal)。
  2. CNN特征提取:對每個候選區域,輸入到預訓練好的AlexNet中,提取一個固定長度(4096)的特征向量。
  3. 分類器(類別):對每個目標(類別)訓練一SVM分類器,識別該區域是否包含目標。
  4. 回歸器(位置):訓練一個線性回歸模型判斷當前框是不是很完美,修正候選區域中目標的位置。

疑問:為什么用SVM分類而不使用CNN全連接之后的softmax直接把分類做了?

原因:主要是基于CNN階段和SVM階段對正樣本的IOU閾值標準需要不一樣,單獨再訓練SVM去分類,對正樣本IOU閾值可以定的更高,從而帶來分類精度提升。見知乎:https://www.zhihu.com/question/54117650?

R-CNN的目標檢測過程:

1)候選區域選擇

用什么方法提取框:Region Proposal是一類傳統的區域提取方法,可以看作不同寬高的滑動窗口,通過窗口滑動獲得潛在的目標圖像。

提取多少個框:具體是使用了Selective Search方法從一張圖像生成約2000-3000個候選區域。

提取框后干什么:根據Proposal提取的目標圖像進行歸一化,作為CNN的標準輸入。

2)CNN特征提取

對生成的2000個候選區域,使用預訓練好的AlexNet網絡進行特征提取。

  • 輸入:候選框輸入尺寸227×227,歸一化。
  • 網絡結構:改造預訓練好的AlexNet網絡(5個卷積層,2個全連接層),將其最后的全連接層去掉,并將類別設置為21(20個目標類別,另外一個類別代表背景).
  • 輸出:得到一個4096×21的特征。

3)SVM分類器

利用上面提取到的候選區域的特征向量,通過SVM分類器來判斷是哪個目標類別。而SVM是一種典型的兩類分類器,即它只回答屬于正類還是負類的問題。SVM多分類有兩種方式,這里作者使用的是:有多少個目標類,就單獨訓練多少個SVM分類器。

比如,下圖針對狗的SVM分類器:

狗的SVM分類器,就要能判斷出某個候選區域是不是包含狗,包含狗了那就是Positive;不包含就是Negative.

對于候選區域只是框出來了某個類的一部分圖像問題,在R-CNN中,設定一個0.3的IOU閾值,如果該區域與Ground truth的IOU低于該閾值,就將給區域設置為Negative。

4)邊界框回歸

主要參考:https://blog.csdn.net/zijin0802034/article/details/77685438

邊界框回歸怎么做的?

對于窗口一般使用四維向量(x,y,w,h)來表示, 分別表示窗口的中心點坐標和寬高。 對于下圖2,紅色的框 P 代表原始的Proposal, 綠色的框 G 代表目標的 Ground Truth, 我們的目標是尋找一種關系使得輸入原始的窗口 P 經過映射得到一個跟真實窗口 G 更接近的回歸窗口G^。

邊框回歸的目的既是:給定(Px,Py,Pw,Ph)尋找一種映射ff, 使得f(Px,Py,Pw,Ph) = (Gx^,Gy^,Gw^,Gh^) 并且(Gx^,Gy^,Gw^,Gh^) ≈ (Gx,Gy,Gw,Gh)。

具體算法見參考文獻,大概意思如下:

測試

從一張圖片中提取2000個候選區域,將每個區域按照訓練時候的方式進行處理,輸入到SVM中進行正負樣本的識別,并使用候選框回歸器,計算出每個候選區域的分數。針對每個類,通過計算IOU,采取非最大值抑制的方法,以最高分的區域為基礎,刪掉重疊的區域。

1.3 意義

RCNN作為第一篇目標檢測領域的深度學習文章,大幅提升了目標檢測的識別精度,在PASCAL VOC2012數據集上將mAP從35.1%提升至53.7%。使得CNN在目標檢測領域成為常態,也使得大家開始探索CNN在其他計算機視覺領域的巨大潛力。

1.4 不足

  • 對每個新圖像進行預測需要大約40-50秒。
  • 訓練分為多個步驟,比較繁瑣:①?需要微調CNN網絡提取特征,②需要訓練SVM進行正負樣本分類,③訓練邊框回歸器得到正確的預測位置。
  • 訓練耗時,中間要保持候選區域的特征,5000張的圖片會生成幾百G的特征文件。
  • 每一個ProposalRegion都需要進入CNN網絡計算,上千個Region存在大量的范圍重疊,重復的特征提取帶來巨大的計算浪費。

2 SPP-Net(ECCV 2014)

何凱明等發明。

智者善于提出疑問,既然CNN的特征提取過程如此耗時(大量的卷積計算),為什么要對每一個候選區域獨立計算,而不是先提取圖像的整體特征,然后僅在分類之前做一次Region截取呢?立即付諸實踐,于是SPP-Net誕生了。

SPP-Net整個過程:

  1. 首先通過選擇性搜索,對待檢測的圖片進行搜索出2000個候選窗口。這一步和R-CNN一樣。

  2. 特征提取階段。這一步就是和R-CNN最大的區別了,這一步驟的具體操作如下:把整張待檢測的圖片,輸入CNN中,進行一次性特征提取,得到feature maps,然后在feature maps中找到各個候選框的區域,再對各個候選框采用金字塔空間池化,提取出固定長度的特征向量。而R-CNN輸入的是每個候選框,然后在進入CNN,因為SPP-Net只需要一次對整張圖片進行特征提取,速度會大大提升

  3. 最后一步也是和R-CNN一樣,采用SVM算法進行特征向量分類識別。

2.1 SPP-Net網絡

RCNN過程:

SPP-Net過程:

SPP-net與R-CNN的對比:RCNN輸入原圖像的proposal,SPP-Net輸入特征的proposal.

2.2 SPP-Net 主要改進點

SPP-Net在RCNN的基礎上做了實質性的改進:

  • 1)取消了crop/warp圖像歸一化過程,解決圖像變形導致的信息丟失以及存儲問題;
  • 2)采用空間金字塔池化(SpatialPyramid Pooling?)替換了 全連接層之前的最后一個池化層。

為了適應不同分辨率的特征圖,定義一種可伸縮的池化層,不管輸入分辨率是多大,都可以劃分成m*n個部分。這是SPP-net的第一個顯著特征,它的輸入是conv5特征圖?以及特征圖候選框(原圖候選框 通過stride映射得到),輸出是固定尺寸(m*n)特征;

還有金字塔呢?通過多尺度增加所提取特征的魯棒性,這并不關鍵,在后面的Fast-RCNN改進中該特征已經被舍棄;

最關鍵的是SPP的位置,它放在所有的卷積層之后,有效解決了卷積層的重復計算問題(測試速度提高了24~102倍),這是論文的核心貢獻。

2.3?SPP-Net不足

  • 1)和RCNN一樣,訓練過程仍然是隔離的,提取候選框 | 計算CNN特征| SVM分類 | Bounding Box回歸獨立訓練,大量的中間結果需要轉存,無法整體訓練參數;
  • 2)SPP-Net在無法同時Tuning在SPP-Layer兩邊的卷積層和全連接層,很大程度上限制了深度CNN的效果;
  • 3)在整個過程中,Proposal Region仍然很耗時。

3?Fast-RCNN(2015)

RCNN原作者Ross Girshick2015年推出。

Fast-RCNN主要貢獻在于對RCNN進行加速:訓練時間從84小時減少為9.5小時,測試時間從47秒減少為0.32秒。

創新點:

  1. 借鑒SPP思路,提出簡化版的ROI池化層(注意,沒用金字塔),同時加入了候選框映射功能,使得網絡能夠反向傳播,解決了SPP的整體網絡訓練問題,模型訓練時可對所有層進行更新;
  2. 多任務Loss層
    1. SoftmaxLoss代替了SVM,證明了softmax比SVM更好的效果;(為什么不使用SVM了:訓練使用難樣本挖掘以使網絡獲得高判別力,從而精準定位目標)
    2. SmoothL1Loss取代Bouding box回歸

將分類和邊框回歸進行合并(又一個開創性的思路),通過多任務Loss層進一步整合深度網絡,統一了訓練過程,從而提高了算法準確度。

網絡結構

4?Faster R-CNN(2015)

作者:任少卿、何凱明、Ross Girshick, 孫劍

在Fast R-CNN中使用的目標檢測識別網絡,在速度和精度上都有了不錯的結果。不足的是,其候選區域提取方法耗時較長,而且和目標檢測網絡是分離的,并不是end-to-end的。在Faster R-CNN中提出了區域檢測網絡(Region Proposal Network,RPN),將候選區域的提取和Fast R-CNN中的目標檢測網絡融合到一起,這樣可以在同一個網絡中實現目標檢測。

Faster R-CNN的網絡有4部分組成:

  1. Conv Layers 一組基礎的CNN層,由Conv + Relu + Pooling組成,用于提取輸入圖像的Feature Map。通常可以選擇有5個卷積層的ZF網絡或者有13個卷積層的VGG16。Conv Layers提取的Feature Map用于RNP網絡生成候選區域以及用于分類和邊框回歸的全連接層。
  2. RPN,區域檢測網絡 輸入的是前面卷積層提取的Feature Map,輸出為一系列的候選區域。
  3. RoI池化層 輸入的是卷積層提取的Feature Map 和 RPN生成的候選區域RoI,其作用是將Feature Map 中每一個RoI對應的區域轉為為固定大小的H×WH×W的特征圖,輸入到后面的分類和邊框回歸的全連接層。
  4. 分類和邊框回歸修正 輸入的是RoI池化后RoI的H×WH×W的特征圖,通過SoftMax判斷每個RoI的類別,并對邊框進行修正。

其整個工作流程如下:

  1. 將樣本圖像整個輸入到Conv Layers中,最后得到Feature Map。
  2. 將該Feature Map輸入到RPN網絡中,提取到一系列的候選區域
  3. 然后由RoI池化層提取每個候選區域的特征圖
  4. 將候選區域的特征圖輸入到用于分類的Softmax層以及用于邊框回歸全連接層。

網絡結構細節

下面這張圖的目的是為了顯示訓練是分階段的,即像之前的方法一樣,先產生建議框,然后拿建議框去分類,只不過這里建議框的生成方式換成了RPN網絡。

  • 之前的Fast R-CNN存在的問題:存在瓶頸:選擇性搜索,找出所有的候選框,這個也非常耗時。 解決方法:加入一個提取邊緣的神經網絡,也就說找到候選框的工作也交給神經網絡來做了,即Region Proposal Network(RPN)。

  • Faster R-CNN解決的是,“為什么還要用selective search呢?”----將選擇性搜索候選框的方法換成Region Proposal Network(RPN)。

RPN(里程碑式的貢獻)

  • RPN的最終結果是用CNN來生成候選窗口,通過得分排序等方式挑出量少質優的框(~300)

  • 讓生成候選窗口的CNN和分類的CNN共享卷積層

其實RPN最終就是在原圖尺度上,設置了密密麻麻的候選Anchor。然后用cnn去判斷哪些Anchor是里面有目標的foreground anchor,哪些是沒目標的backgroud。所以,僅僅是個二分類而已!)

RPN網絡的特點在于通過滑動窗口的方式實現候選框的提取,每個滑動窗口位置生成9個候選窗口(不同尺度、不同寬高),提取對應9個候選窗口(anchor)的特征,用于目標分類和邊框回歸,與FastRCNN類似。

目標分類只需要區分候選框內特征為前景或者背景。

邊框回歸確定更精確的目標位置,基本網絡結構如下圖所示:

訓練過程中,涉及到的候選框選取,選取依據:

  1. 丟棄跨越邊界的anchor;
  2. 與樣本重疊區域大于0.7的anchor標記為前景,重疊區域小于0.3的標定為背景

對于每一個位置,通過兩個全連接層(目標分類+邊框回歸)對每個候選框(anchor)進行判斷,并且結合概率值進行舍棄(僅保留約300個anchor),?沒有顯式地提取任何候選窗口?,完全使用網絡自身完成判斷和修正。

從模型訓練的角度來看,通過使用共享特征交替訓練的方式,達到接近實時的性能,交替訓練方式描述為:

  1. 根據現有網絡初始化權值w,訓練RPN;
  2. 用RPN提取訓練集上的候選區域,用候選區域訓練FastRCNN,更新權值w;
  3. 重復1、2,直到收斂。

5 總結

RCNN網絡的演進:

RCNN網絡的速度和精度:

主要參考:

RCNN到Faster R-CNN筆記?https://www.jianshu.com/p/4064de5499d5

RCNN介紹?https://blog.csdn.net/xyfengbo/article/details/70227173?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242

目標檢測之R-CNN系列?https://www.cnblogs.com/wangguchangqing/p/10384058.html

總結

以上是生活随笔為你收集整理的算法了解:RCNN、SPP-Net、Fast-RCNN、Faster-RCNN的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。