R-CNN , Fast R-CNN , Faster R-CNN原理及區別

github博客傳送門
csdn博客傳送門git

==RCNN==

一、生成候選區域

使用Selective Search(選擇性搜索)方法對一張圖像生成約2000-3000個候選區域,基本思路以下:
(1)使用一種過度割手段,將圖像分割成小區域
(2)查看現有小區域,合併可能性最高的兩個區域,重複直到整張圖像合併成一個區域位置。優先合併如下區域:github

  • 顏色(顏色直方圖)相近的
  • 紋理(梯度直方圖)相近的
  • 合併後總面積小的
  • 合併後,總面積在其BBOX中所佔比例大的
    在合併時須保證合併操做的尺度較爲均勻,避免一個大區域陸續「吃掉」其它小區域,保證合併後形狀規則。
    (3)輸出全部曾經存在過的區域,即所謂候選區域
二、特徵提取

使用深度網絡提取特徵以前,首先把候選區域歸一化成同一尺寸227×227。
使用CNN模型進行訓練,例如AlexNet,通常會略做簡化。網絡

三、類別判斷

對每一類目標,使用一個線性SVM二類分類器進行判別。
輸入爲深度網絡(如上圖的AlexNet)輸出的4096維特徵,輸出是否屬於此類。框架

四、位置精修

目標檢測的衡量標準是重疊面積:許多看似準確的檢測結果,每每由於候選框不夠準確,
重疊面積很小,故須要一個位置精修步驟,對於每個類,訓練一個線性迴歸模型去斷定這個框是否框得完美。學習

==Fast R-CNN==

Fast R-CNN主要解決R-CNN的如下問題:測試

一、訓練、測試時速度慢

R-CNN的一張圖像內候選框之間存在大量重疊,提取特徵操做冗餘。
而Fast R-CNN將整張圖像歸一化後直接送入深度網絡,緊接着送入從這幅圖像上提取出的候選區域。
這些候選區域的前幾層特徵不須要再重複計算。.net

二、訓練所需空間大

R-CNN中獨立的分類器和迴歸器須要大量特徵做爲訓練樣本。Fast R-CNN把類別判斷和位置精調統一用深度網絡實現,再也不須要額外存儲。code

下面進行詳細介紹
  1. 在特徵提取階段,經過CNN(如AlexNet)中的conv、pooling、relu等操做都不須要固定大小尺寸的輸入,
    所以,在原始圖片上執行這些操做後,輸入圖片尺寸不一樣將會致使獲得的feature map(特徵圖)尺寸也不一樣,這樣就不能直接接到一個全鏈接層進行分類。
    在Fast R-CNN中,做者提出了一個叫作ROI Pooling的網絡層,這個網絡層能夠把不一樣大小的輸入映射到一個固定尺度的特徵向量。
    ROI Pooling層將每一個候選區域均勻分紅M×N塊,對每塊進行max pooling。將特徵圖上大小不一的候選區域轉變爲大小統一的數據,送入下一層。
    這樣雖然輸入的圖片尺寸不一樣,獲得的feature map(特徵圖)尺寸也不一樣,
    可是能夠加入這個神奇的ROI Pooling層,對每一個region都提取一個固定維度的特徵表示,就可再經過正常的softmax進行類型識別。
  2. 在分類迴歸階段,在R-CNN中,先生成候選框,而後再經過CNN提取特徵,以後再用SVM分類,最後再作迴歸獲得具體位置(bbox regression)。
    而在Fast R-CNN中,做者巧妙的把最後的bbox regression也放進了神經網絡內部,與區域分類合併成爲了一個multi-task模型
    實驗代表,這兩個任務可以共享卷積特徵,而且相互促進。
    Fast R-CNN很重要的一個貢獻是成功地讓人們看到了Region Proposal+CNN(候選區域+卷積神經網絡)這一框架實時檢測的但願,原來多類檢測真的能夠在保證準確率的同時提高處理速度。

==Faster R-CNN==

在Faster R-CNN中加入一個提取邊緣的神經網絡,也就說找候選框的工做也交給神經網絡來作了。
這樣,目標檢測的四個基本步驟(候選區域生成,特徵提取,分類,位置精修)終於被統一到一個深度網絡框架以內。blog

Faster R-CNN能夠簡單地當作是「區域生成網絡+Fast R-CNN」的模型,用區域生成網絡(Region Proposal Network,簡稱RPN)來代替Fast R-CNN中的Selective Search(選擇性搜索)方法。圖片

RPN的工做步驟以下:

  • 在feature map(特徵圖)上滑動窗口
  • 建一個神經網絡用於物體分類+框位置的迴歸
  • 滑動窗口的位置提供了物體的大致位置信息
  • 框的迴歸提供了框更精確的位置

==總結==

R-CNN、Fast R-CNN、Faster R-CNN一路走來,基於深度學習目標檢測的流程變得愈來愈精簡、精度愈來愈高、速度也愈來愈快。
基於region proposal(候選區域)的R-CNN系列目標檢測方法是目標檢測技術領域中的最主要分支之一。

print_r('點個贊吧');
var_dump('點個贊吧');
NSLog(@"點個贊吧!")
System.out.println("點個贊吧!");
console.log("點個贊吧!");
print("點個贊吧!");
printf("點個贊吧!\n");
cout << "點個贊吧!" << endl;
Console.WriteLine("點個贊吧!");
fmt.Println("點個贊吧!")
Response.Write("點個贊吧");
alert(’點個贊吧’)
相關文章
相關標籤/搜索