RCNN系列算法總結


RCNN

物體檢測不再是對單一物體進行分類,而是要分類多個物體,另一方面還需要知道這些物體在什么地方,也就是bounding box。這兩點使得識別比分類更加困難。

因此采用來扣一塊區域出來,放卷積神經網絡來看一看是不是我要的物體,如果不是就丟棄,如果是,那就找到這個物體了。如此使用Selective Search生成若干個區域,然后對每一個區域進行一次分類,就可以了。

每一個生成的感興趣區域的框大小肯定是不一樣的,因此卷積神經網絡會將這些區域resize成大小相等的框,然后丟進卷積神經網絡生成特征

1、分類,最早的RCNN是采用單分類的SVM,比如有十個感興趣的物體則采用十個SVM分類器

2、定位,Selective Search出來的box不一定就是我所需要的box,可能會存在偏差,因此會采用回歸來判斷預測框與真實框的loss。

 

選擇性搜索算法使用《Efficient Graph-Based Image Segmentation》論文里的方法產生初始的分割區域作為輸入,通過下面的步驟進行合並:

  1. 首先將所有分割區域的外框加到候選區域列表中
  2. 基於相似度合並一些區域
  3. 將合並后的分割區域作為一個整體,跳到步驟1

通過不停的迭代,候選區域列表中的區域越來越大。可以說,我們通過自底向下的方法創建了越來越大的候選區域。表示效果如下:

選擇性搜索算法如何計算兩個區域的像素度的呢?

主要是通過以下四個方面:顏色、紋理、大小和形狀交疊
最終的相似度是這四個值取不同的權重相加

 FAST RCNN

 由於RCNN一張圖片大概會生成兩千個候選區域,fast RCNN 想讓速度提升,並不是在原始圖片上進行感興趣區域搜索,而是先對圖片進行卷積,也就是只對原始圖片進行一次卷積。然后在特征圖片上進行,Selective Search操作得到感興趣區域,同時不再對區域進行resize操作(不好求導),而是ROI Pooling。

另一個區別就是用SoftMax代替了SVM.

 

ROI Pooling

ROI pooling具體操作如下:

根據輸入image,將ROI映射到feature map對應位置;
將映射后的區域划分為相同大小的sections(sections數量與輸出的維度相同);
對每個sections進行max pooling操作;
這樣我們就可以從不同大小的方框得到固定大小的相應 的feature maps。值得一提的是,輸出的feature maps的大小不取決於ROI和卷積feature maps大小。ROI pooling 最大的好處就在於極大地提高了處理速度。

ROI pooling example
我們有一個8*8大小的feature map,一個ROI,以及輸出大小為2*2.

region proposal 投影之后位置(左上角,右下角坐標):(0,3),(7,8)。

 

將其划分為(2*2)個sections(因為輸出大小為2*2),我們可以得到:

 

對每個section做max pooling,可以得到:

 

整體過程如下:

說明:在此案例中region proposals 是5*7大小的,在pooling之后需要得到2*2的,所以在5*7的特征圖划分成2*2的時候不是等分的,行是5/2,第一行得到2,剩下的那一行是3,列是7/2,第一列得到3,剩下那一列是4。

 

 

Faster RCNN

 主要改進就是用RPN代替了Selective Search

對每個像素生成9個錨框,因為這樣生成的錨框在大部分情況下只是背景,所以 利用一個二分類的Softmax,判斷錨框內是否為感興趣物體,如果不是則拋棄,如果是則放入ROI Pooling內

后面的Softmax則是判斷具體為哪個物體

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM