Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation
這是一篇關於Object Detection的論文,citation數在寫這篇文章的時候有兩千多次。對機器學習應用在影像辨識的論文而言,這篇只是個開始。然而,這篇文章中所提出的觀點與技巧,也許依然能往後的論文中看到。
Abstract
本篇論文提出一個簡單的、可擴充的(scalable) object detection演算法,在VOC 2012達到53.3%的平均正確率(mAP),大幅超越第一名。
我們的作法有兩個主要的貢獻:
- 將其他演算法得到的region proposal作為CNN的input來得到物體的位置與長寬
- 當被label的資料不夠多的時候,可以先利用輔助資料庫train CNN,再利用domain-specific的dataset做supervised fine-tuning。這樣可以大幅增加正確率。
我們將我們的系統稱為R-CNN,以代表以region作為基礎的CNN架構。
Object Detection with R-CNN

我們的Object detection主要有三個模組。第一個模組產生與類別無關的region proposal。這些proposal代表我們的detector作用的data範圍。第二個模組是一個能夠產生固定長度feature的CNN。第三個模組是一組linear SVM,每個SVM能夠辨識每段feature是否為那個類別。以下便分別說明我們的實作的細節。
Region Proposal
有很多篇論文已經發明出非常多種提出proposal的演算法。我們使用selective search1,以便與其他與我們架構類似的現存作法比較。
Feature Extraction
我們根據Krizhevsky所提出的CNN架構來為每個proposal產生對應的feature。 產生出的feature為4096維的vector。
由於CNN的架構必須讓input的影像長寬是固定的,我們使用最簡單的wraping方式來將不同大小proposal的影像變成固定大小()的影像。在做wraping之前,我們將proposal的邊界拉大16 pixel。
當然,還有其他種不同的wraping方式,關於這部份的內容會在Appendix A中討論。
Detection
對於每個class,我們的處理是獨立的。我們的linear SVM的input為4096維,ouput為純量。對於每個proposal,我們計算SVM得到的score,再利用non-maximum suppression比較所有的proposal,將IoU大於某個固定值的所有proposal中取得score最大的作為我們的結果。
Bounding Box Regression
經由error analysis,我們實作一個改進localization的演算法。其input為CNN得到的feature以及selective search得到的proposal,output為新的dimension。其實作細節在Appendix B中討論。
Training
Pre-training and Fine-tuning
我們使用另一個dataset(ILSVRC2012 classification)來pre-train我們的CNN。不過,這個pre-training是使用到整張圖的annotation作為training的目標,而不是用每個object的class。
為了讓CNN能夠用在我們的task(object detection)和domain(proposal,而不是整張圖)上,我們使用我們的dataset來fine-tune,唯一對整個架構的改變只有最後的softmax layer需要因為重新改變class而不同。每個batch的大小是128,其中有32個跟ground truth的IoU大於0.5的proposal,剩下都當成background。由於正常來說有包含物件的proposal非常少,我們其實是調整background的數量讓包含物件的proposal出現次數增加。
Object Category Classifiers
我們使用Linear SVM來對每一個class做一個binary classifier。跟fine-tuning不同的是,判斷是否跟ground truth接近的IoU數值為0.3(設成0.5的話會讓mAP下降5%,設成0的話會下降4%)。
為了減少training所需的空間,我們使用hard negative mining方法。
Techniques
Visualizing Learned Features
我們利用一個簡單的方法來visualize CNN的neuron。針對一個特定的neuron,我們計算它對於所有proposal的activation output,然後利用non-maximum suppression得到所有proposal的最大的值。用這個方法可以看出那個neuron對不同圖片的表現。
Conclusion
同期object detection的發展漸漸停滯在用ensemble的方法來增加正確率,而這篇論文提出一個簡單與可擴充的架構,使正確率大幅上升。
我們能達到這樣的正確率有兩個重要的因素。其一,我們使用capacity高的CNN來抽feature;其二,我們使用supervised pre-training來彌補原本的資料量不足的情況。
Appendix
A. Object Proposal Transformations

以上是幾種不同的transformation方法。(A)為原圖,(B)是最小的正方形,(C)是最小的正方形但周圍用灰邊代替,(D)是wraping成正方形。每張照片的上面那個row是沒有在proposal周圍增加pixel的,下面增加16px。
經過簡單的實驗我們發現使用(D)的方法比其他方法的mAP多了3~5%,因此我們決定採用這個方法。
B. Bounding Box Regression
這個bounding box regression的input是 ,其中 是proposal的bounding box, 是ground truth的bounding box。
我們要得到的是 四個parameter vector,進而得到 這四個function, , 是從CNN得到的feature,使得 學習 的方法是 其中 我們設定 ,所有的data都是proposal和ground truth的IoU大於0.6的(畢竟如果只選擇與ground truth太接近的會學不到任何東西)。
Reference
1. https://ivi.fnwi.uva.nl/isis/publications/2013/UijlingsIJCV2013 "Selective search" ↩