一、《基于區域提議網絡的實時目標檢測方法》
1.1、基本信息
-
標題:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
-
作者:任少卿(中國科學技術大學、微軟研究院)、何凱明(微軟研究院)、Ross Girshick(Facebook AI Research)、孫劍(微軟研究院)
-
發表時間:2015年(會議版本為NIPS 2015)
-
代碼開源:提供MATLAB和Python實現
MATLAB開源地址:
????????ShaoqingRen/faster_rcnn: Faster R-CNN
?Python開源地址
rbgirshick/py-faster-rcnn: Faster R-CNN (Python implementation) -- see https://github.com/ShaoqingRen/faster_rcnn for the official MATLAB version
1.2、主要內容
核心創新:
????????區域建議網絡(RPN, Region Proposal Network):
????????????????一種全卷積網絡(FCN),直接在卷積特征圖上生成高質量的區域建議,與檢測網絡共享計算,顯著降低時間開銷。
????????????????引入錨點(anchors)機制:通過預定義的多個尺度和寬高比的參考框(如3種尺度×3種寬高比,共9種錨點),覆蓋不同物體大小和形狀,避免傳統圖像金字塔或濾波器金字塔的計算冗余。
網絡架構:
????????端到端訓練:RPN與Fast R-CNN共享卷積層,通過交替訓練策略(4步訓練)聯合優化:
????????????????訓練RPN生成建議;
????????????????用RPN建議訓練Fast R-CNN;
????????????????固定共享層,微調RPN;
????????????????固定共享層,微調Fast R-CNN。
????????多任務損失函數:結合分類損失(物體/非物體)和回歸損失(邊界框修正)。
性能優勢:
????????速度:VGG-16模型在GPU上達到5幀/秒(包括所有步驟),ZF模型達17幀/秒。
????????精度:在PASCAL VOC 2007/2012、MS COCO等數據集上取得當時最優結果(如VOC 2007測試集mAP 73.2%)。
1.3、作用影響?
技術突破:
????????首次實現端到端的實時級物體檢測框架,解決了區域建議的計算瓶頸問題。
????????提出錨點機制和共享卷積特征設計,成為后續檢測模型(如Mask R-CNN、YOLO系列)的重要參考。
競賽與應用:
????????ILSVRC & COCO 2015:作為基礎模型助力多項競賽奪冠(檢測、定位、分割等)。
????????工業應用:被Pinterest等公司用于推薦系統,提升用戶交互效率。
學術影響:
????????推動了基于深度學習的物體檢測研究,啟發了3D檢測、實例分割、圖像描述等方向的工作。結合更深的網絡(如ResNet-101)后,性能進一步提升(COCO數據集mAP達59.0%)。
開源貢獻:
????????公開的代碼和預訓練模型成為學術界和工業界的基準工具,加速了后續研究的迭代與優化。
原論文地址:
[1506.01497] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
二、Faster R-CNN
與Fast R-CNN的區別
????????由Shaoqing Ren, Kaiming He, Ross B. Girshick和Jian Sun在2015年提出 的,它是Fast R-CNN的改進版本。 其主要創新在于引入了區域建議網絡 (Region Proposal Network, RPN),使得整個目標檢測過程能夠在一個 神經網絡中完成,從而大幅提高了檢測效率和準確性。
????????backbone同樣使用VGGNet-16。
????????最先進的目標檢測網絡依賴于區域建議算法來假設目標位置。SPPnet [1] 和 Fast R-CNN [2] 等進展減少了這些檢測網絡的運行時間,但區域建議計算卻成為瓶頸。本文提出一種區域建議網絡(Region Proposal Network, RPN),該網絡與檢測網絡共享全圖像卷積特征,從而實現近乎零成本生成區域建議。RPN 是一種全卷積網絡,可在每個位置同時預測目標邊界和目標性分數(objectness score)。通過端到端訓練,RPN 能夠生成高質量區域建議,供 Fast R-CNN 進行檢測。我們進一步將 RPN 和 Fast R-CNN 合并為一個網絡(共享卷積特征),即用神經網絡的“注意力”機制術語來說,RPN 模塊告訴統一網絡需要關注的位置。對于極深的 VGG-16 模型 [3],我們的檢測系統在 GPU 上以 5 幀/秒的幀率運行(包含所有步驟),同時在 PASCAL VOC 2007、2012 和 MS COCO 數據集上僅需每圖 300 個建議即可達到最優檢測精度。在 ILSVRC 和 COCO 2015 競賽中,Faster R-CNN 和 RPN 是多個賽道第一名方案的基礎。代碼已開源。
????????關鍵詞:目標檢測,區域建議,卷積神經網絡。
2.1、Faster R-CNN的架構?
?Faster R-CNN的整體架構包括以下幾個主要部分:
????????1. 卷積神經網絡(CNN):將圖片輸入CNN得到輸入圖像的特征圖。
????????2. 區域建議網絡(RPN):生成候選區域(Region Proposals)。
????????3. RoI Pooling層:將RPN生成的候選區域映射到特征圖上,并通過池化 操作得到固定尺寸的特征。
????????4. 分類和回歸網絡:對RoI Pooling層輸出的特征進行分類和邊界框回歸。
2.2、實現流程?
特征提取
區域建議網絡(RPN)
候選區域的篩選
RoI Pooling
分類和回歸
特征提取
????????輸入圖像首先通過一個預訓練的卷積神經網絡(如VGG-16)來提取特征 圖。這部分和Fast R-CNN相同,通常稱為backbone。?
區域建議網絡(RPN)?
?
????????上圖中:k是anchor boxes個數,2k是分類算法的兩個概率分數(前景和 背景),4k是每個anchor的邊界框回歸參數,256-d是256 Dimension, 即2013年AlexNet優化ZF的最后一層卷積的通道數,2014年的VGGNet是 512-d。
????????RPN是Faster R-CNN的核心創新部分。它在特征圖上滑動一個小的網絡窗 口,以生成候選區域。具體步驟如下:
????????滑動窗口:在特征圖上使用一個3x3的滑動窗口,生成一個256-d的特 征圖。
????????錨框(Anchor Boxes):每個滑動窗口中心點生成一組錨框(anchor boxes),這些錨框具有不同的尺度和縱橫比。
????????回歸和分類:對于每個錨框,RPN輸出兩個預測:
????????????????一個是該錨框是目標的概率(背景/前景)。
????????????????另一個是錨框的調整參數(回歸偏移量)。
?
滑動窗口
????????在特征圖上用3x3的滑動窗口進行滑動,每滑動到一個地方,就對應原圖的 一個中心點的位置。
如何將特征圖對應中心點的位置呢?
????????答:原圖的寬度/特征圖的寬度取整,得到x軸縮放比例,那么特征圖 上x軸第三個位置的黑色中心點對應原圖上x軸的3*縮放比例。高度(y 軸)同理。
????????以原圖為中心點計算k個anchor Boxes。
錨框(Anchor Boxes)
????????每個滑動窗口中心點生成一組錨框(anchor boxes),這些錨框具有不同 的長寬尺度(128像素,256像素,512像素)和縱橫比(1:1,2:1,1:2) 共九個,如上圖與下圖顯示了其中三個。
回歸和分類?
--------------------------------------------------------------------------------------------------------------------------------?
感受野
?感受野(Receptive Field),指的是神經網絡中神經元“看到的”輸入區域,在卷積神 經網絡中,feature map上某個元素的計算受輸入圖像上某個區域的影響,這個區域 即該元素的感受野。
? ? ? ? 卷積神經網絡中,越深層的神經元看到的輸入區域越大,如下圖所示,卷積核kernel size 均為3×3,stride均為1,綠色標記的是Layer2每個神經元看到的區域,黃色標記 的是Layer3 看到的區域,具體地,Layer2每個神經元可看到Layer1上3×3 大小的區 域,Layer3 每個神經元看到Layer2 上3×3 大小的區域,該區域可以又看到Layer1上 5×5 大小的區域。
? ? ? ? 所以,感受野是個相對概念,某層feature map上的元素看到前面不同層上的區域范 圍是不同的,通常在不特殊指定的情況下,感受野指的是看到輸入圖像上的區域。
--------------------------------------------------------------------------------------------------------------------------------?
Anchor Box
????????Anchor Box中可能包含前景,也可能不包含前景,所以2k scores意味著2 個分數概率,每2個為一組對應一個Anchor Box,前一個為背景的概率, 后一個為前景的概率,這里前景并不判斷它是什么(例如:person、car 等),只看是否包含前景,每個滑動窗口有18個Anchor Boxes。
????????4k coordinates意味著4個邊界框回歸參數,每4個為一組對應一個Anchor Box,每個滑動窗口有36個Anchor Boxes。
感受野與Anchor Box的關系:
????????他們沒有直接的關系,在AlexNet的改進版本ZF中,輸出的3x3的 窗口對應的原圖上的感受野為171;在VGGNet中,輸出的3x3的窗口 對應的原圖上的感受野為228。?
為什么小的感受野可以預測更大的(256或者512)目標的邊界框??
????????作者的文章中提到:“We note that our algorithm allows predictions that are larger than the underlying receptive field. Such predictions are not impossible—one may still roughly infer the extent of an object if only the middle of the object is visible.”, 即:我們注意到,我們的算法允許比潛在感受野更大的預測。這樣的 預測并非不可能——如果只有物體的中間可見,人們仍然可以大致推 斷出物體的范圍。也就是說:當我們看到物體的一部分時,就大致可 以判斷物體的范圍了,實際上表現出來的也是這個結論。
?正負樣本
????????一張圖上有上萬個Anchor Box,隨機抽取256個Anchor Box去訓練,這 256中正負樣本比例是1:1,如果正樣本不夠128個,那么剩下的就是256 正樣本=負樣本,即如果只有100個正樣本,那么就用156的負樣本,保證 整體數量256。?
正樣本選擇方式:
????????Anchor Box與GT BOX的IoU大于0.7即為正樣本。
????????Anchor Box與GT BOX的IoU最大的那個即為正樣本。
負樣本選擇方式:
????????Anchor Box與GT BOX的IoU小于0.3即為負樣本。
????????不是正樣本和負樣本的其它Anchor Box,丟棄。
RPN的損失函數
2.3、分類損失
????????但是需要注意的是:二分類交叉熵損失只需要一個x就可以得到二分類的結 果,多分類的交叉熵損失需要兩個x才可以得到二分類結果,從論文中看, scores是2k個,也就意味這論文使用的是多分類交叉熵,二分類交叉熵只 需要k個即可。但是這個不影響結果,該分還是能分開的。
2.4、回歸損失?
?
候選區域的篩選
????????RPN生成大量的候選區域,通過非極大值抑制(NMS)和去除低得分候選 區域的方法,篩選出一部分高質量的候選區域。??
RoI Pooling
????????將篩選出的候選區域映射到特征圖上,通過RoI Pooling層將不同大小的候 選區域變換為固定大小的特征向量 。
分類和回歸
????????最后,經過RoI Pooling層的特征向量通過全連接層進行分類(確定目標類 別)和回歸(調整候選框)。這里的分類和回歸與Fast R-CNN中使用的相同。?
三、訓練
????????正常情況下,應該將RPN網絡的損失和Fast R-CNN中的損失加起來,然后 一起進行反向傳播。
????????原論文中采用分別訓練RPN以及Fast R-CNN的方法
????????????????1. 利用lmageNet預訓練分類模型初始化前置卷積網絡層參數,并開始單 獨訓練RPN網絡參數;
????????????????2. 固定RPN網絡獨有的卷積層以及全連接層參數,再利用ImageNet預訓 練分類模型初始化前置卷積網絡參數,并利用RPN網絡生成的目標建議 框去訓練FastRCNN網絡參數。
????????????????3. 固定利用FastRCNN訓練好的前置卷積網絡層參數,去微調RPN網絡獨 有的卷積層以及全連接層參數。
????????????????4. 同樣保持固定前置卷積網絡層參數,去微調FastRCNN網絡的全連接層 參數。最后RPN網絡與FastRCNN網絡共享前置卷積網絡層參數,構成 一個統一網絡。
?