RCNN & SPP-net & Fast-RCNN & Faster-RCNN

查志強發表於2015-09-10

【原文:http://blog.sina.com.cn/s/blog_9ae57c020102vopp.html

先截個圖,這就是RCNN的原理圖。

RCNN <wbr>& <wbr>SPP-net <wbr>& <wbr>Fast-RCNN <wbr>& <wbr>Faster-RCNN

 該文是由UC-Berkeley(加利福尼亞大學伯克利分校)發表的。說明下RCNN的意思。CNN也就是眾多周知的convolutional neural network, Rregion的縮寫,意為對影象進行區域性區域的處理。 該文的主要亮點在於:,一是利用的region proposals對物體探測中位置資訊的精確處理,二是利用監督式預訓練和主域特殊化的微調方法,代替了傳統的非監督式預訓練和監督式微調,使得MAPmean average precision )得到大幅提升。現在來介紹原理圖的具體實現。

  由於在深度CNN中,FC(full-connected)層的輸入是需要定的size的,所以對輸入影象的大小需要做預處理以滿足這一要求。本文中採取的是wrap方案。生成類別獨立的region proposals 有許多可選方法,該文采取了selective search方案。在image中取出大約有2000個region proposals, 他們的維數都是4096維。之前提到的wrap接著對region proposals進行固定size的處理。接著通過CNN進行特徵提取,然後再用這些特徵訓練SVM分類/預測器。在原理圖實現中需要注意有以下幾點:

1) selective search提取region proposals時,由於它對scale是敏感的,所以選取出來的region proposals的個數就會發生變化,為了使得region proposals的個數一定,在selective search之前還需要進行resize的處理。

2) 原始影象進行wrap處理時,固定大小的選擇,一般是227*227;

3) 由於訓練集龐大,分類器優化開銷很大,該文采用了標準的hard negative mining method方法提高了儲存利用率;

4)分類器採用的是非線性核的SV;

5)為了強化定位,引入Bounding-Box;

該文算是諸多文章優勢的整合體現。它達到的MAP也再次重新整理了記錄:在PASCAL VOC 2010上,其MAP達到了53.7%;在ILSVRC2013 detection dataset達到了31.4%

但一如文章中提到的,該方法的主要缺陷在於計算的時間成本很大,根本達不到real-time的要求。原因也在於region proposals處理中所固有的缺陷:CNN需要對每個region proposals進行單獨的特徵提取,這是十分耗時的。同時在進入CNN之前的wrap處理也是存在問題的,這種預處理會使得影象失真,部分資訊丟失。

 於是MSRA(微軟亞洲研究院)的何凱明等人提出了SPP-net

 SPP-net

還是先貼上圖。首先需要宣告的是這篇paper仍有些地方沒搞明白(上邊的RCNN雖然算是吧啦完了,但難免存在理解偏差,望大牛們多多指教。)

 

RCNN <wbr>& <wbr>SPP-net <wbr>& <wbr>Fast-RCNN <wbr>& <wbr>Faster-RCNN

 RCNN <wbr>& <wbr>SPP-net <wbr>& <wbr>Fast-RCNN <wbr>& <wbr>Faster-RCNN

首先,我們看看截圖二,很清楚的看到該文將crop/wrap這一預處理方法去掉了,同時在卷積層後加上了SPP。那我們就從這裡開始談起。

Crop/wrap,顧名思義就是對影象進行分割和變形。這兩種方法都存在著丟失或者扭曲原始影象資訊的缺陷。這樣CNN獲取的特徵也就受到了限制,從而導致後續分類/預測的泛化能力不夠。需要略作解釋的是crop/wrap處理的充分性是由於FC層固有特性決定的,即FC層的輸入必須固定大小。該文亮點在於,將這一固定大小的處理放在特徵提取之後。這樣原始影象得到保護,特徵提取更加的充分,然後再利用該文中提出的SPP代替最後一個卷積層的max-pooling層,完成大小固定的處理。該文主要亮點如下:

1) 對輸入影象尺度無限制,同時輸出的是定長特徵,但運用滑動視窗的pooling技術就不能;

2) SPP可運用不同大小的pooling視窗,但CNN只能是單一的視窗;

3)SPP可以從尺度變化中提取特徵;

4) 大大提高了影象處理速度,24-102*faster than the R-CNN method;

接下來就來看看SPP到底是什麼。上邊已經談到,SPP是代替了傳統CNN中的pool5層,所以它也是一種pooling方法。同時,傳統CNN中pooling層的滑動視窗是一定的,但在SPP中可以看到,它的pooling層是分層的,正如SPP自身的含義——金字塔式池化一樣,它每層pooling  bins的大小是可變的,它的大小是個輸入影象的大小成比例的;同時pooling bins的個數是確定的,這就相當於多尺度的pooling,相較於傳統CNN中單尺度的pooling,肯定存在更多的優勢。

SPP-net在物體探測中的效果也非常好。在RCNN中是對上千個region proposals分別進行CNN特徵提取,而在SPP-net中則是對原始影象進行CNN特徵提取,然後再對region 所對應的window利用SPP。這裡需要理解的是,對影象的分割操作仍然是需要的,只是SPP中並不是立即對每個region直接特徵抽取,而是將“對每個region的操作”放在了SPP這一過程中,即RCNN是多個regions+多次CNN+單個pooling,而SPP則是單個影象+單次CNN+多個region+多個pooling。

儘管如此,SPP-net仍存在缺陷:一是SPP-net雖然極大的提高了RCNN的速度,但和RCNN一樣,他們的訓練過程都是一個多階段過程:即包含著特徵抽取,網路微調,分類器SVM的訓練以及最後的對BB迴歸器的匹配。二是SPP-net中用到的微調技術只能更新FC層,這無疑限制了深度CNN的潛力。

Fast-RCNN

在此基礎上,MSRA又提出了Fast-RCNN。相較與RCNN和SPP-net,它的亮點在於:

1)MAP相較於RCNN也有很大的提高;

2)訓練過程通過運用多工損失,實現單步驟完成;

3)在訓練過程中所有層都可以得到更新;

4)不再需要磁碟儲存器作為特徵快取;

5) 比RCNN的訓練時間快9倍,測試時間快213倍,在 PASCAL VOC 2012上獲得MAP也更高.。和SPPnet相比,訓練時間快3倍,測試時間快10倍,MAP也有提升。

從下圖可以看到如下變化:一是輸入從單輸入變為雙輸入;二是引入ROI pooling層(region of interest,它是隻含一層的SPP);三是在FC層後有兩個輸入。接下看看這些變化的具體實現和影響。

 

RCNN <wbr>& <wbr>SPP-net <wbr>& <wbr>Fast-RCNN <wbr>& <wbr>Faster-RCNN
  上述的變化都是在訓練過程做的改變,在微調階段曾談及SPP-net只能更新FC層,這是因為卷積特徵是線下計算的,從而無法再微調階段反向傳播誤差。而在fast-RCNN中則是通過image-centric sampling提高了卷積層特徵抽取的速度,從而保證了梯度可以通過SPP層(即ROI pooling層)反向傳播。
      上述的變化都是在訓練過程做的改變,在微調階段曾談及SPP-net只能更新FC層,這是因為卷積特徵是線下計算的,從而無法再微調階段反向傳播誤差。而在fast-RCNN中則是通過image-centric sampling提高了卷積層特徵抽取的速度,從而保證了梯度可以通過SPP層(即ROI pooling層)反向傳播。

輸入除了batch大小為N的影象外,還有R大小的ROI序列。這種多工訓練機制避免了對順序訓練任務的pipeline的管理,同時也對MAP的提高起到了一定的作用。輸出也因為變成兩個輸出而存在著兩個loss function。一個輸出對k個物體類別的可能性的softmax型預測,一個輸出針對每個類的四位實數。

該文在隨後還探討了SVM和softmax兩類分類器在VOC07上MAP的大小,發現softmax表現更為突出;同時發現region proposals並不是越多越好,這些都可作為一些trick指導自己的工作。

RCNNSPP-net,再到Fast-RCNN,在MAP不斷得到提升的同時,速度也不斷的提升,但我們也注意到在proposals的計算中仍然存在的計算瓶頸,而最近MSRA提出的Faster-RCNN正是這一問題的解決方案。由於這篇文章才出來不久,還沒來得及讀,暫時寫到這裡。 

PS:文章完全來自個人理解,肯定很多漏洞或者理解過於表面的問題,此文後續會不斷更新,以求更全面更簡單的詮釋。

參考文獻:

[1] R. Girshick, J. Donahue, T. Darrell, and J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation,”in CVPR, 2014

[2] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014.

[3] R. Girshick. Fast R-CNN. arXiv:1504.08083, 2015.

[4] Shaoqing Ren Kaiming He Ross Girshick Jian Sun. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks.arXiv:1506.01497,2015

 


相關文章