【目標檢測】Faster R-CNN網絡學習筆記

原論文:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks  Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun

傳送門:Faster R-CNN TensorFlow版源碼解讀

一、Faster-RCNN框架

1.整體框架

從上圖可以得到,Faster_RCNN網絡主要由三部分組成:

  • 第一部分是一個全卷積網絡,用於提取圖像特徵,得到一個特徵圖feature map
  • 第二部分是RPN網絡,用於在特徵圖上找到一系列可能是物體目標框,並得到每個框內的圖像可能是物體的評分(概率)
  • 第三部分是全連接層,用來得到最終每個框的位置和框內的物體的分類

2.RPN網絡

RPN網絡是Faster-RCNN的核心部分,它對對特徵圖的處理過程如下:

2.1 滑動窗

選擇一個nxn(作者選了3x3)大小的小滑動窗,對第一部分得到的特徵圖進行同卷積操作,得到256個特徵圖(256個是因爲原始圖像經過第一部分ZF卷積層後,得到了256個特徵圖,在這裏對每個特徵圖用3x3的滑動窗卷積,並沒有去改變特徵圖的數量;如果第一部分使用的是VGG16網絡,最後的特徵圖是512個)

2.2 框(anchor boxes)的產生

滑動窗在特徵圖上滑動時,它的中心會掃過特徵圖上的所有像素點,而每個中心(感受野或者稱爲錨點)都對應原始圖像的一個區域,如圖是感受野映射關係的示意圖:

那麼,在特徵圖的每個感受野處選取k個框,每個框也都會映射回原圖中的一塊區域。

這k個框不是隨機選取的,首先確定x種框的大小,y種框的長寬比,它們兩兩組合,得到k=x*y種框(作者選取了k=3x3=9)。在特徵圖中,將它們放在以感受野爲中心的位置,如圖所示(這裏有3個感受野處,每處只畫出了3個代表性的框)

3.3 分類和迴歸任務

已經得到了框,接下來要進行的就是:

  • 進行分類任務,確定每個框有沒有可能是物體,給出每個框是物體的可能性的得分
  • 進行迴歸任務,對有可能是物體的框,調整框的位置,讓它接近標籤中標註的物體的實際位置(groundtruth)

3.4 過濾(proposal)

爲什麼要過濾呢?在2.2中,特徵圖大小是40*60,每個像素點(感受野)產生k=9個框,那麼一共就是近2萬個框,這其中有些框距離物體甚遠,有些框超出了圖的邊界,顯然是沒有必要對他們進行分類和迴歸任務的。

因此,爲了減少冗餘,要對這些框進行過濾,過濾的方法採用了以下3種:

1. IOU

IOU(Intersection-over-Union)重疊比:是指選擇的框(anchor box)與原始圖片中標註爲物體的框(gt)的重疊比。

過濾的標準有兩個:

  1. 選擇一個gt上IOU最大的框標記爲正例(positive label)
  2. 選擇IOU>=0.7的框標記爲正例,IOU=<0.3的框標記爲反例,0.3<IOU<0.7的框過濾(它們對正例和反例的訓練都不會有很好的作用)

過濾框主要是第2條標準,同時使用第1條標準爲了避免沒有IOU>0.7的正例產生。

2. NMS

NMS(non-macimum-suppression)非極大值抑制

對選出來的框,它們之間有很多互相重疊,爲減少冗餘,依據在分類操作中每個框的得分,選出得分最高的N個框(top-N)保留,過濾其他的框。

3. clip

裁剪越界的框

在產生框的時候,有很多是超出了原始圖片範圍的,如果不過濾這些框,會引入較大的誤差項,並且訓練時不會收斂。

對這些越界的框,只要沿着邊界裁掉越界的部分即可

至此,RPN完成了RPN網絡,總結如圖:

二、Faster-RCNN TensorFlow源碼理解

傳送門:Faster R-CNN TensorFlow版源碼解讀​​​​​​​

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章