Object detection performance, as measured on the canonical PASCAL VOC dataset, has plateaued in the last few years. The best-performing methods are complex ensemble systems that typically combine multiple low-level image features with high-level context. In this paper, we propose a simple and scalable detection algorithm that improves mean average precision (mAP) by more than 30 53.3 convolutional neural networks (CNNs) to bottom-up region proposals in order to localize and segment objects and (2) when labeled training data is scarce, supervised pre-training for an auxiliary task, followed by domain-specific fine-tuning, yields a significant performance boost. Since we combine region proposals with CNNs, we call our method R-CNN: Regions with CNN features. We also compare R-CNN to OverFeat, a recently proposed sliding-window detector based on a similar CNN architecture. We find that R-CNN outperforms OverFeat by a large margin on the 200-class ILSVRC2013 detection dataset. Source code for the complete system is available at http://www.cs.berkeley.edu/ rbg/rcnn.READ FULL TEXT VIEW PDF
Region-based object detection infers object regions for one or more
We combine features extracted from pre-trained convolutional neural netw...
Existing object proposal approaches use primarily bottom-up cues to rank...
CNNs have massively improved performance in object detection in photogra...
Deep Convolutional Neural Networks (CNNs) have demonstrated excellent
Convolututional Neural Networks have achieved state of the art in image
In the recent past, algorithms based on Convolutional Neural Networks (C...
Features matter. The last decade of progress on various visual recognition tasks has been based considerably on the use of SIFT  and HOG . But if we look at performance on the canonical visual recognition task, PASCAL VOC object detection , it is generally acknowledged that progress has been slow during 2010-2012, with small gains obtained by building ensemble systems and employing minor variants of successful methods.
SIFT and HOG are blockwise orientation histograms, a representation we could associate roughly with complex cells in V1, the first cortical area in the primate visual pathway. But we also know that recognition occurs several stages downstream, which suggests that there might be hierarchical, multi-stage processes for computing features that are even more informative for visual recognition.
Fukushima’s “neocognitron” 
, a biologically-inspired hierarchical and shift-invariant model for pattern recognition, was an early attempt at just such a process. The neocognitron, however, lacked a supervised training algorithm. Building on Rumelhartet al. , LeCun et al. 
CNNs saw heavy use in the 1990s (e.g., 
), but then fell out of fashion with the rise of support vector machines. In 2012, Krizhevskyet al. 
rekindled interest in CNNs by showing substantially higher image classification accuracy on the ImageNet Large Scale Visual Recognition Challenge (ILSVRC)[9, 10]. Their success resulted from training a large CNN on 1.2 million labeled images, together with a few twists on LeCun’s CNN (e.g., rectifying non-linearities and “dropout” regularization).
The significance of the ImageNet result was vigorously debated during the ILSVRC 2012 workshop. The central issue can be distilled to the following: To what extent do the CNN classification results on ImageNet generalize to object detection results on the PASCAL VOC Challenge?
We answer this question by bridging the gap between image classification and object detection. This paper is the first to show that a CNN can lead to dramatically higher object detection performance on PASCAL VOC as compared to systems based on simpler HOG-like features. To achieve this result, we focused on two problems: localizing objects with a deep network and training a high-capacity model with only a small quantity of annotated detection data.
Unlike image classification, detection requires localizing (likely many) objects within an image. One approach frames localization as a regression problem. However, work from Szegedy et al. , concurrent with our own, indicates that this strategy may not fare well in practice (they report a mAP of 30.5% on VOC 2007 compared to the 58.5% achieved by our method). An alternative is to build a sliding-window detector. CNNs have been used in this way for at least two decades, typically on constrained object categories, such as faces [32, 40] and pedestrians . In order to maintain high spatial resolution, these CNNs typically only have two convolutional and pooling layers. We also considered adopting a sliding-window approach. However, units high up in our network, which has five convolutional layers, have very large receptive fields (
pixels) and strides (pixels) in the input image, which makes precise localization within the sliding-window paradigm an open technical challenge.
Instead, we solve the CNN localization problem by operating within the “recognition using regions” paradigm , which has been successful for both object detection  and semantic segmentation . At test time, our method generates around 2000 category-independent region proposals for the input image, extracts a fixed-length feature vector from each proposal using a CNN, and then classifies each region with category-specific linear SVMs. We use a simple technique (affine image warping) to compute a fixed-size CNN input from each region proposal, regardless of the region’s shape. splash presents an overview of our method and highlights some of our results. Since our system combines region proposals with CNNs, we dub the method R-CNN: Regions with CNN features.
In this updated version of this paper, we provide a head-to-head comparison of R-CNN and the recently proposed OverFeat  detection system by running R-CNN on the 200-class ILSVRC2013 detection dataset. OverFeat uses a sliding-window CNN for detection and until now was the best performing method on ILSVRC2013 detection. We show that R-CNN significantly outperforms OverFeat, with a mAP of 31.4% versus 24.3%.
A second challenge faced in detection is that labeled data is scarce and the amount currently available is insufficient for training a large CNN. The conventional solution to this problem is to use unsupervised pre-training, followed by supervised fine-tuning (e.g., ). The second principle contribution of this paper is to show that supervised pre-training on a large auxiliary dataset (ILSVRC), followed by domain-specific fine-tuning on a small dataset (PASCAL), is an effective paradigm for learning high-capacity CNNs when data is scarce. In our experiments, fine-tuning for detection improves mAP performance by 8 percentage points. After fine-tuning, our system achieves a mAP of 54% on VOC 2010 compared to 33% for the highly-tuned, HOG-based deformable part model (DPM) [17, 20]. We also point readers to contemporaneous work by Donahue et al. 
, who show that Krizhevsky’s CNN can be used (without fine-tuning) as a blackbox feature extractor, yielding excellent performance on several recognition tasks including scene classification, fine-grained sub-categorization, and domain adaptation.
Our system is also quite efficient. The only class-specific computations are a reasonably small matrix-vector product and greedy non-maximum suppression. This computational property follows from features that are shared across all categories and that are also two orders of magnitude lower-dimensional than previously used region features (cf. ).
Understanding the failure modes of our approach is also critical for improving it, and so we report results from the detection analysis tool of Hoiem et al. . As an immediate consequence of this analysis, we demonstrate that a simple bounding-box regression method significantly reduces mislocalizations, which are the dominant error mode.
Before developing technical details, we note that because R-CNN operates on regions it is natural to extend it to the task of semantic segmentation. With minor modifications, we also achieve competitive results on the PASCAL VOC segmentation task, with an average segmentation accuracy of 47.9% on the VOC 2011 test set.
Our object detection system consists of three modules. The first generates category-independent region proposals. These proposals define the set of candidate detections available to our detector. The second module is a large convolutional neural network that extracts a fixed-length feature vector from each region. The third module is a set of class-specific linear SVMs. In this section, we present our design decisions for each module, describe their test-time usage, detail how their parameters are learned, and show detection results on PASCAL VOC 2010-12 and on ILSVRC2013.
A variety of recent papers offer methods for generating category-independent region proposals. Examples include: objectness , selective search , category-independent object proposals , constrained parametric min-cuts (CPMC) , multi-scale combinatorial grouping , and Cireşan et al. , who detect mitotic cells by applying a CNN to regularly-spaced square crops, which are a special case of region proposals. While R-CNN is agnostic to the particular region proposal method, we use selective search to enable a controlled comparison with prior detection work (e.g., [39, 41]).
We extract a 4096-dimensional feature vector from each region proposal using the Caffe implementation of the CNN described by Krizhevsky et al. . Features are computed by forward propagating a mean-subtracted RGB image through five convolutional layers and two fully connected layers. We refer readers to [24, 25] for more network architecture details.
In order to compute features for a region proposal, we must first convert the image data in that region into a form that is compatible with the CNN (its architecture requires inputs of a fixed pixel size). Of the many possible transformations of our arbitrary-shaped regions, we opt for the simplest. Regardless of the size or aspect ratio of the candidate region, we warp all pixels in a tight bounding box around it to the required size. Prior to warping, we dilate the tight bounding box so that at the warped size there are exactly pixels of warped image context around the original box (we use ). warped-samples shows a random sampling of warped training regions. Alternatives to warping are discussed in altwarp.
At test time, we run selective search on the test image to extract around 2000 region proposals (we use selective search’s “fast mode” in all experiments). We warp each proposal and forward propagate it through the CNN in order to compute features. Then, for each class, we score each extracted feature vector using the SVM trained for that class. Given all scored regions in an image, we apply a greedy non-maximum suppression (for each class independently) that rejects a region if it has an intersection-over-union (IoU) overlap with a higher scoring selected region larger than a learned threshold.
Two properties make detection efficient. First, all CNN parameters are shared across all categories. Second, the feature vectors computed by the CNN are low-dimensional when compared to other common approaches, such as spatial pyramids with bag-of-visual-word encodings. The features used in the UVA detection system , for example, are two orders of magnitude larger than ours (360k vs. 4k-dimensional).
The result of such sharing is that the time spent computing region proposals and features (13s/image on a GPU or 53s/image on a CPU) is amortized over all classes. The only class-specific computations are dot products between features and SVM weights and non-maximum suppression. In practice, all dot products for an image are batched into a single matrix-matrix product. The feature matrix is typically and the SVM weight matrix is , where is the number of classes.
This analysis shows that R-CNN can scale to thousands of object classes without resorting to approximate techniques, such as hashing. Even if there were 100k classes, the resulting matrix multiplication takes only 10 seconds on a modern multi-core CPU. This efficiency is not merely the result of using region proposals and shared features. The UVA system, due to its high-dimensional features, would be two orders of magnitude slower while requiring 134GB of memory just to store 100k linear predictors, compared to just 1.5GB for our lower-dimensional features.
It is also interesting to contrast R-CNN with the recent work from Dean et al. on scalable detection using DPMs and hashing . They report a mAP of around 16% on VOC 2007 at a run-time of 5 minutes per image when introducing 10k distractor classes. With our approach, 10k detectors can run in about a minute on a CPU, and because no approximations are made mAP would remain at 59% (ablation).
We discriminatively pre-trained the CNN on a large auxiliary dataset (ILSVRC2012 classification) using image-level annotations only (bounding-box labels are not available for this data). Pre-training was performed using the open source Caffe CNN library . In brief, our CNN nearly matches the performance of Krizhevsky et al. , obtaining a top-1 error rate 2.2 percentage points higher on the ILSVRC2012 classification validation set. This discrepancy is due to simplifications in the training process.
To adapt our CNN to the new task (detection) and the new domain (warped proposal windows), we continue stochastic gradient descent (SGD) training of the CNN parameters using only warped region proposals. Aside from replacing the CNN’s ImageNet-specific 1000-way classification layer with a randomly initialized ()-way classification layer (where is the number of object classes, plus 1 for background), the CNN architecture is unchanged. For VOC, and for ILSVRC2013, . We treat all region proposals with IoU overlap with a ground-truth box as positives for that box’s class and the rest as negatives. We start SGD at a learning rate of 0.001 (1/10th of the initial pre-training rate), which allows fine-tuning to make progress while not clobbering the initialization. In each SGD iteration, we uniformly sample 32 positive windows (over all classes) and 96 background windows to construct a mini-batch of size 128. We bias the sampling towards positive windows because they are extremely rare compared to background.
|VOC 2010 test||aero||bike||bird||boat||bottle||bus||car||cat||chair||cow||table||dog||horse||mbike||person||plant||sheep||sofa||train||tv||mAP|
|DPM v5 ||49.2||53.8||13.1||15.3||35.5||53.4||49.7||27.0||17.2||28.8||14.7||17.8||46.4||51.2||47.7||10.8||34.2||20.7||43.8||38.3||33.4|
Consider training a binary classifier to detect cars. It’s clear that an image region tightly enclosing a car should be a positive example. Similarly, it’s clear that a background region, which has nothing to do with cars, should be a negative example. Less clear is how to label a region that partially overlaps a car. We resolve this issue with an IoU overlap threshold, below which regions are defined as negatives. The overlap threshold, , was selected by a grid search over on a validation set. We found that selecting this threshold carefully is important. Setting it to , as in , decreased mAP by points. Similarly, setting it to decreased mAP by points. Positive examples are defined simply to be the ground-truth bounding boxes for each class.
Once features are extracted and training labels are applied, we optimize one linear SVM per class. Since the training data is too large to fit in memory, we adopt the standard hard negative mining method [17, 37]. Hard negative mining converges quickly and in practice mAP stops increasing after only a single pass over all images.
In posneg we discuss why the positive and negative examples are defined differently in fine-tuning versus SVM training. We also discuss the trade-offs involved in training detection SVMs rather than simply using the outputs from the final softmax layer of the fine-tuned CNN.
Following the PASCAL VOC best practices 
, we validated all design decisions and hyperparameters on the VOC 2007 dataset (ablation). For final results on the VOC 2010-12 datasets, we fine-tuned the CNN on VOC 2012 train and optimized our detection SVMs on VOC 2012 trainval. We submitted test results to the evaluation server only once for each of the two major algorithm variants (with and without bounding-box regression).
voc2010 shows complete results on VOC 2010. We compare our method against four strong baselines, including SegDPM , which combines DPM detectors with the output of a semantic segmentation system  and uses additional inter-detector context and image-classifier rescoring. The most germane comparison is to the UVA system from Uijlings et al. , since our systems use the same region proposal algorithm. To classify regions, their method builds a four-level spatial pyramid and populates it with densely sampled SIFT, Extended OpponentSIFT, and RGB-SIFT descriptors, each vector quantized with 4000-word codebooks. Classification is performed with a histogram intersection kernel SVM. Compared to their multi-feature, non-linear kernel SVM approach, we achieve a large improvement in mAP, from 35.1% to 53.7% mAP, while also being much faster (runtime). Our method achieves similar performance (53.3% mAP) on VOC 2011/12 test.
We ran R-CNN on the 200-class ILSVRC2013 detection dataset using the same system hyperparameters that we used for PASCAL VOC. We followed the same protocol of submitting test results to the ILSVRC2013 evaluation server only twice, once with and once without bounding-box regression.
ilsvrc13 compares R-CNN to the entries in the ILSVRC 2013 competition and to the post-competition OverFeat result . R-CNN achieves a mAP of 31.4%, which is significantly ahead of the second-best result of 24.3% from OverFeat. To give a sense of the AP distribution over classes, box plots are also presented and a table of per-class APs follows at the end of the paper in classaps. Most of the competing submissions (OverFeat, NEC-MU, UvA-Euvision, Toronto A, and UIUC-IFP) used convolutional neural networks, indicating that there is significant nuance in how CNNs can be applied to object detection, leading to greatly varying outcomes.
In ilsvrc, we give an overview of the ILSVRC2013 detection dataset and provide details about choices that we made when running R-CNN on it.
|VOC 2007 test||aero||bike||bird||boat||bottle||bus||car||cat||chair||cow||table||dog||horse||mbike||person||plant||sheep||sofa||train||tv||mAP|
|R-CNN FT BB||68.1||72.8||56.8||43.0||36.8||66.3||74.2||67.6||34.4||63.5||54.5||61.2||69.1||68.6||58.7||33.4||62.9||51.1||62.5||64.8||58.5|
|DPM v5 ||33.2||60.3||10.2||16.1||27.3||54.3||58.2||23.0||20.0||24.1||26.7||12.7||58.1||48.2||43.2||12.0||21.1||36.1||46.0||43.5||33.7|
|DPM ST ||23.8||58.2||10.5||8.5||27.1||50.4||52.0||7.3||19.2||22.8||18.1||8.0||55.9||44.8||32.4||13.3||15.9||22.8||46.2||44.9||29.1|
|DPM HSC ||32.2||58.3||11.5||16.3||30.6||49.9||54.8||23.5||21.5||27.7||34.0||13.7||58.1||51.6||39.9||12.4||23.5||34.4||47.4||45.2||34.3|
|VOC 2007 test||aero||bike||bird||boat||bottle||bus||car||cat||chair||cow||table||dog||horse||mbike||person||plant||sheep||sofa||train||tv||mAP|
|R-CNN T-Net BB||68.1||72.8||56.8||43.0||36.8||66.3||74.2||67.6||34.4||63.5||54.5||61.2||69.1||68.6||58.7||33.4||62.9||51.1||62.5||64.8||58.5|
|R-CNN O-Net BB||73.4||77.0||63.4||45.4||44.6||75.1||78.1||79.8||40.5||73.7||62.2||79.4||78.1||73.1||64.2||35.6||66.8||67.2||70.4||71.1||66.0|
First-layer filters can be visualized directly and are easy to understand . They capture oriented edges and opponent colors. Understanding the subsequent layers is more challenging. Zeiler and Fergus present a visually attractive deconvolutional approach in . We propose a simple (and complementary) non-parametric method that directly shows what the network learned.
The idea is to single out a particular unit (feature) in the network and use it as if it were an object detector in its own right. That is, we compute the unit’s activations on a large set of held-out region proposals (about 10 million), sort the proposals from highest to lowest activation, perform non-maximum suppression, and then display the top-scoring regions. Our method lets the selected unit “speak for itself” by showing exactly which inputs it fires on. We avoid averaging in order to see different visual modes and gain insight into the invariances computed by the unit.
We visualize units from layer
, which is the max-pooled output of the network’s fifth and final convolutional layer. Thefeature map is -dimensional. Ignoring boundary effects, each unit has a receptive field of pixels in the original pixel input. A central unit has a nearly global view, while one near the edge has a smaller, clipped support.
Each row in vislittle displays the top 16 activations for a
unit from a CNN that we fine-tuned on VOC 2007 trainval. Six of the 256 functionally unique units are visualized (extravis includes more). These units were selected to show a representative sample of what the network learns. In the second row, we see a unit that fires on dog faces and dot arrays. The unit corresponding to the third row is a red blob detector. There are also detectors for human faces and more abstract patterns such as text and triangular structures with windows. The network appears to learn a representation that combines a small number of class-tuned features together with a distributed representation of shape, texture, color, and material properties. The subsequent fully connected layerhas the ability to model a large set of compositions of these rich features.
To understand which layers are critical for detection performance, we analyzed results on the VOC 2007 dataset for each of the CNN’s last three layers. Layer was briefly described in vis. The final two layers are summarized below.
Layer is fully connected to . To compute features, it multiplies a weight matrix by the feature map (reshaped as a 9216-dimensional vector) and then adds a vector of biases. This intermediate vector is component-wise half-wave rectified ().
Layer is the final layer of the network. It is implemented by multiplying the features computed by by a weight matrix, and similarly adding a vector of biases and applying half-wave rectification.
We start by looking at results from the CNN without fine-tuning on PASCAL, i.e. all CNN parameters were pre-trained on ILSVRC 2012 only. Analyzing performance layer-by-layer (voc2007 rows 1-3) reveals that features from generalize worse than features from . This means that 29%, or about 16.8 million, of the CNN’s parameters can be removed without degrading mAP. More surprising is that removing both and produces quite good results even though features are computed using only 6% of the CNN’s parameters. Much of the CNN’s representational power comes from its convolutional layers, rather than from the much larger densely connected layers. This finding suggests potential utility in computing a dense feature map, in the sense of HOG, of an arbitrary-sized image by using only the convolutional layers of the CNN. This representation would enable experimentation with sliding-window detectors, including DPM, on top of features.
We now look at results from our CNN after having fine-tuned its parameters on VOC 2007 trainval. The improvement is striking (voc2007 rows 4-6): fine-tuning increases mAP by 8.0 percentage points to 54.2%. The boost from fine-tuning is much larger for and than for , which suggests that the features learned from ImageNet are general and that most of the improvement is gained from learning domain-specific non-linear classifiers on top of them.
Relatively few feature learning methods have been tried on PASCAL VOC detection. We look at two recent approaches that build on deformable part models. For reference, we also include results for the standard HOG-based DPM .
The first DPM feature learning method, DPM ST 
, augments HOG features with histograms of “sketch token” probabilities. Intuitively, a sketch token is a tight distribution of contours passing through the center of an image patch. Sketch token probabilities are computed at each pixel by a random forest that was trained to classifypixel patches into one of 150 sketch tokens or background.
The second method, DPM HSC , replaces HOG with histograms of sparse codes (HSC). To compute an HSC, sparse code activations are solved for at each pixel using a learned dictionary of 100 pixel (grayscale) atoms. The resulting activations are rectified in three ways (full and both half-waves), spatially pooled, unit normalized, and then power transformed ().
All R-CNN variants strongly outperform the three DPM baselines (voc2007 rows 8-10), including the two that use feature learning. Compared to the latest version of DPM, which uses only HOG features, our mAP is more than 20 percentage points higher: 54.2% vs. 33.7%—a 61% relative improvement. The combination of HOG and sketch tokens yields 2.5 mAP points over HOG alone, while HSC improves over HOG by 4 mAP points (when compared internally to their private DPM baselines—both use non-public implementations of DPM that underperform the open source version ). These methods achieve mAPs of 29.1% and 34.3%, respectively.
netarch Most results in this paper use the network architecture from Krizhevsky et al. . However, we have found that the choice of architecture has a large effect on R-CNN detection performance. In voc2007oxfordnet we show results on VOC 2007 test using the 16-layer deep network recently proposed by Simonyan and Zisserman . This network was one of the top performers in the recent ILSVRC 2014 classification challenge. The network has a homogeneous structure consisting of 13 layers of convolution kernels, with five max pooling layers interspersed, and topped with three fully-connected layers. We refer to this network as “O-Net” for OxfordNet and the baseline as “T-Net” for TorontoNet.
To use O-Net in R-CNN, we downloaded the publicly available pre-trained network weights for the VGG_ILSVRC_16_layers model from the Caffe Model Zoo.111https://github.com/BVLC/caffe/wiki/Model-Zoo We then fine-tuned the network using the same protocol as we used for T-Net. The only difference was to use smaller minibatches (24 examples) as required in order to fit within GPU memory. The results in voc2007oxfordnet show that R-CNN with O-Net substantially outperforms R-CNN with T-Net, increasing mAP from 58.5% to 66.0%. However there is a considerable drawback in terms of compute time, with the forward pass of O-Net taking roughly 7 times longer than T-Net.
analysis We applied the excellent detection analysis tool from Hoiem et al.  in order to reveal our method’s error modes, understand how fine-tuning changes them, and to see how our error types compare with DPM. A full summary of the analysis tool is beyond the scope of this paper and we encourage readers to consult  to understand some finer details (such as “normalized AP”). Since the analysis is best absorbed in the context of the associated plots, we present the discussion within the captions of fp-type-dist and obj-char.
bboxreg Based on the error analysis, we implemented a simple method to reduce localization errors. Inspired by the bounding-box regression employed in DPM 
, we train a linear regression model to predict a new detection window given thefeatures for a selective search region proposal. Full details are given in bboxreg. Results in voc2010, voc2007, and fp-type-dist show that this simple approach fixes a large number of mislocalized detections, boosting mAP by 3 to 4 points.
Qualitative detection results on ILSVRC2013 are presented in examples1 and examples2 at the end of the paper. Each image was sampled randomly from the val set and all detections from all detectors with a precision greater than 0.5 are shown. Note that these are not curated and give a realistic impression of the detectors in action. More qualitative results are presented in cexamples1 and cexamples2, but these have been curated. We selected each image because it contained interesting, surprising, or amusing results. Here, also, all detections at precision greater than 0.5 are shown.
ilsvrc In detection we presented results on the ILSVRC2013 detection dataset. This dataset is less homogeneous than PASCAL VOC, requiring choices about how to use it. Since these decisions are non-trivial, we cover them in this section.
The ILSVRC2013 detection dataset is split into three sets: train (395,918), val (20,121), and test (40,152), where the number of images in each set is in parentheses. The val and test splits are drawn from the same image distribution. These images are scene-like and similar in complexity (number of objects, amount of clutter, pose variability, etc.) to PASCAL VOC images. The val and test splits are exhaustively annotated, meaning that in each image all instances from all 200 classes are labeled with bounding boxes. The train set, in contrast, is drawn from the ILSVRC2013 classification
image distribution. These images have more variable complexity with a skew towards images of a single centered object. Unlike val and test, the train images (due to their large number) are not exhaustively annotated. In any given train image, instances from the 200 classes may or may not be labeled. In addition to these image sets, each class has an extra set of negative images. Negative images are manually checked to validate that they do not contain any instances of their associated class. The negative image sets were not used in this work. More information on how ILSVRC was collected and annotated can be found in[11, 36].
The nature of these splits presents a number of choices for training R-CNN. The train images cannot be used for hard negative mining, because annotations are not exhaustive. Where should negative examples come from? Also, the train images have different statistics than val and test. Should the train images be used at all, and if so, to what extent? While we have not thoroughly evaluated a large number of choices, we present what seemed like the most obvious path based on previous experience.
Our general strategy is to rely heavily on the val set and use some of the train images as an auxiliary source of positive examples. To use val for both training and validation, we split it into roughly equally sized “val” and “val” sets. Since some classes have very few examples in val (the smallest has only 31 and half have fewer than 110), it is important to produce an approximately class-balanced partition. To do this, a large number of candidate splits were generated and the one with the smallest maximum relative class imbalance was selected.222Relative imbalance is measured as where and are class counts in each half of the split. Each candidate split was generated by clustering val images using their class counts as features, followed by a randomized local search that may improve the split balance. The particular split used here has a maximum relative imbalance of about 11% and a median relative imbalance of 4%. The val/val split and code used to produce them will be publicly available to allow other researchers to compare their methods on the val splits used in this report.
We followed the same region proposal approach that was used for detection on PASCAL. Selective search  was run in “fast mode” on each image in val, val, and test (but not on images in train). One minor modification was required to deal with the fact that selective search is not scale invariant and so the number of regions produced depends on the image resolution. ILSVRC image sizes range from very small to a few that are several mega-pixels, and so we resized each image to a fixed width (500 pixels) before running selective search. On val, selective search resulted in an average of 2403 region proposals per image with a 91.6% recall of all ground-truth bounding boxes (at 0.5 IoU threshold). This recall is notably lower than in PASCAL, where it is approximately 98%, indicating significant room for improvement in the region proposal stage.
For training data, we formed a set of images and boxes that includes all selective search and ground-truth boxes from val together with up to ground-truth boxes per class from train (if a class has fewer than ground-truth boxes in train, then we take all of them). We’ll call this dataset of images and boxes valtrain. In an ablation study, we show mAP on val for (ilsvrcablation).
Training data is required for three procedures in R-CNN: (1) CNN fine-tuning, (2) detector SVM training, and (3) bounding-box regressor training. CNN fine-tuning was run for 50k SGD iteration on valtrain using the exact same settings as were used for PASCAL. Fine-tuning on a single NVIDIA Tesla K20 took 13 hours using Caffe. For SVM training, all ground-truth boxes from valtrain were used as positive examples for their respective classes. Hard negative mining was performed on a randomly selected subset of 5000 images from val. An initial experiment indicated that mining negatives from all of val, versus a 5000 image subset (roughly half of it), resulted in only a 0.5 percentage point drop in mAP, while cutting SVM training time in half. No negative examples were taken from train because the annotations are not exhaustive. The extra sets of verified negative images were not used. The bounding-box regressors were trained on val.
|SVM training set||val||valtrain||valtrain||valtrain||valtrain||valtrain||valtrain||valtrain|
|CNN fine-tuning set||n/a||n/a||n/a||val||valtrain||valtrain||valtrain||valtrain|
|bbox reg set||n/a||n/a||n/a||n/a||n/a||val||n/a||val|
|CNN feature layer|
Before submitting results to the evaluation server, we validated data usage choices and the effect of fine-tuning and bounding-box regression on the val set using the training data described above. All system hyperparameters (e.g
., SVM C hyperparameters, padding used in region warping, NMS thresholds, bounding-box regression hyperparameters) were fixed at the same values used for PASCAL. Undoubtedly some of these hyperparameter choices are slightly suboptimal for ILSVRC, however the goal of this work was to produce a preliminary R-CNN result on ILSVRC without extensive dataset tuning. After selecting the best choices on val, we submitted exactly two result files to the ILSVRC2013 evaluation server. The first submission was without bounding-box regression and the second submission was with bounding-box regression. For these submissions, we expanded the SVM and bounding-box regressor training sets to use valtrain and val, respectively. We used the CNN that was fine-tuned on valtrain to avoid re-running fine-tuning and feature computation.
ilsvrcablation ablation shows an ablation study of the effects of different amounts of training data, fine-tuning, and bounding-box regression. A first observation is that mAP on val matches mAP on test very closely. This gives us confidence that mAP on val is a good indicator of test set performance. The first result, 20.9%, is what R-CNN achieves using a CNN pre-trained on the ILSVRC2012 classification dataset (no fine-tuning) and given access to the small amount of training data in val (recall that half of the classes in val have between 15 and 55 examples). Expanding the training set to valtrain improves performance to 24.1%, with essentially no difference between and . Fine-tuning the CNN using examples from just val gives a modest improvement to 26.5%, however there is likely significant overfitting due to the small number of positive training examples. Expanding the fine-tuning set to valtrain, which adds up to 1000 positive examples per class from the train set, helps significantly, boosting mAP to 29.7%. Bounding-box regression improves results to 31.0%, which is a smaller relative gain that what was observed in PASCAL.
There is an interesting relationship between R-CNN and OverFeat: OverFeat can be seen (roughly) as a special case of R-CNN. If one were to replace selective search region proposals with a multi-scale pyramid of regular square regions and change the per-class bounding-box regressors to a single bounding-box regressor, then the systems would be very similar (modulo some potentially significant differences in how they are trained: CNN detection fine-tuning, using SVMs, etc.). It is worth noting that OverFeat has a significant speed advantage over R-CNN: it is about 9x faster, based on a figure of 2 seconds per image quoted from . This speed comes from the fact that OverFeat’s sliding windows (i.e., region proposals) are not warped at the image level and therefore computation can be easily shared between overlapping windows. Sharing is implemented by running the entire network in a convolutional fashion over arbitrary-sized inputs. Speeding up R-CNN should be possible in a variety of ways and remains as future work.
Region classification is a standard technique for semantic segmentation, allowing us to easily apply R-CNN to the PASCAL VOC segmentation challenge. To facilitate a direct comparison with the current leading semantic segmentation system (called OP for “second-order pooling”) , we work within their open source framework. OP uses CPMC to generate 150 region proposals per image and then predicts the quality of each region, for each class, using support vector regression (SVR). The high performance of their approach is due to the quality of the CPMC regions and the powerful second-order pooling of multiple feature types (enriched variants of SIFT and LBP). We also note that Farabet et al.  recently demonstrated good results on several dense scene labeling datasets (not including PASCAL) using a CNN as a multi-scale per-pixel classifier.
We follow [2, 4] and extend the PASCAL segmentation training set to include the extra annotations made available by Hariharan et al. . Design decisions and hyperparameters were cross-validated on the VOC 2011 validation set. Final test results were evaluated only once.
We evaluate three strategies for computing features on CPMC regions, all of which begin by warping the rectangular window around the region to . The first strategy (full) ignores the region’s shape and computes CNN features directly on the warped window, exactly as we did for detection. However, these features ignore the non-rectangular shape of the region. Two regions might have very similar bounding boxes while having very little overlap. Therefore, the second strategy (fg) computes CNN features only on a region’s foreground mask. We replace the background with the mean input so that background regions are zero after mean subtraction. The third strategy (full+fg) simply concatenates the full and fg features; our experiments validate their complementarity.
|full R-CNN||fg R-CNN||full+fg R-CNN|
voc2011val shows a summary of our results on the VOC 2011 validation set compared with OP. (See segperclass for complete per-category results.) Within each feature computation strategy, layer always outperforms and the following discussion refers to the features. The fg strategy slightly outperforms full, indicating that the masked region shape provides a stronger signal, matching our intuition. However, full+fg achieves an average accuracy of 47.9%, our best result by a margin of 4.2% (also modestly outperforming OP), indicating that the context provided by the full features is highly informative even given the fg features. Notably, training the 20 SVRs on our full+fg features takes an hour on a single core, compared to 10+ hours for training on OP features.
In voc2011test we present results on the VOC 2011 test set, comparing our best-performing method, (full+fg), against two strong baselines. Our method achieves the highest segmentation accuracy for 11 out of 21 categories, and the highest overall segmentation accuracy of 47.9%, averaged across categories (but likely ties with the OP result under any reasonable margin of error). Still better performance could likely be achieved by fine-tuning.
|VOC 2011 test||bg||aero||bike||bird||boat||bottle||bus||car||cat||chair||cow||table||dog||horse||mbike||person||plant||sheep||sofa||train||tv||mean|
|ours (full+fg R-CNN )||84.2||66.9||23.7||58.3||37.4||55.4||73.3||58.7||56.5||9.7||45.5||29.5||49.3||40.1||57.8||53.9||33.8||60.7||22.7||47.1||41.3||47.9|
In recent years, object detection performance had stagnated. The best performing systems were complex ensembles combining multiple low-level image features with high-level context from object detectors and scene classifiers. This paper presents a simple and scalable object detection algorithm that gives a 30% relative improvement over the best previous results on PASCAL VOC 2012.
We achieved this performance through two insights. The first is to apply high-capacity convolutional neural networks to bottom-up region proposals in order to localize and segment objects. The second is a paradigm for training large CNNs when labeled training data is scarce. We show that it is highly effective to pre-train the network—with supervision—for a auxiliary task with abundant data (image classification) and then to fine-tune the network for the target task where data is scarce (detection). We conjecture that the “supervised pre-training/domain-specific fine-tuning” paradigm will be highly effective for a variety of data-scarce vision problems.
We conclude by noting that it is significant that we achieved these results by using a combination of classical tools from computer visionanddeep learning (bottom-up region proposals and convolutional neural networks). Rather than opposing lines of scientific inquiry, the two are natural and inevitable partners.
This research was supported in part by DARPA Mind’s Eye and MSEE programs, by NSF awards IIS-0905647, IIS-1134072, and IIS-1212798, MURI N000014-10-1-0933, and by support from Toyota. The GPUs used in this research were generously donated by the NVIDIA Corporation.
altwarp The convolutional neural network used in this work requires a fixed-size input of pixels. For detection, we consider object proposals that are arbitrary image rectangles. We evaluated two approaches for transforming object proposals into valid CNN inputs.
The first method (“tightest square with context”) encloses each object proposal inside the tightest square and then scales (isotropically) the image contained in that square to the CNN input size. crops column (B) shows this transformation. A variant on this method (“tightest square without context”) excludes the image content that surrounds the original object proposal. crops column (C) shows this transformation. The second method (“warp”) anisotropically scales each object proposal to the CNN input size. crops column (D) shows the warp transformation.
For each of these transformations, we also consider including additional image context around the original object proposal. The amount of context padding () is defined as a border size around the original object proposal in the transformed input coordinate frame. crops shows pixels in the top row of each example and pixels in the bottom row. In all methods, if the source rectangle extends beyond the image, the missing data is replaced with the image mean (which is then subtracted before inputing the image into the CNN). A pilot set of experiments showed that warping with context padding ( pixels) outperformed the alternatives by a large margin (3-5 mAP points). Obviously more alternatives are possible, including using replication instead of mean padding. Exhaustive evaluation of these alternatives is left as future work.
posneg Two design choices warrant further discussion. The first is: Why are positive and negative examples defined differently for fine-tuning the CNN versus training the object detection SVMs? To review the definitions briefly, for fine-tuning we map each object proposal to the ground-truth instance with which it has maximum IoU overlap (if any) and label it as a positive for the matched ground-truth class if the IoU is at least 0.5. All other proposals are labeled “background” (i.e., negative examples for all classes). For training SVMs, in contrast, we take only the ground-truth boxes as positive examples for their respective classes and label proposals with less than 0.3 IoU overlap with all instances of a class as a negative for that class. Proposals that fall into the grey zone (more than 0.3 IoU overlap, but are not ground truth) are ignored.
Historically speaking, we arrived at these definitions because we started by training SVMs on features computed by the ImageNet pre-trained CNN, and so fine-tuning was not a consideration at that point in time. In that setup, we found that our particular label definition for training SVMs was optimal within the set of options we evaluated (which included the setting we now use for fine-tuning). When we started using fine-tuning, we initially used the same positive and negative example definition as we were using for SVM training. However, we found that results were much worse than those obtained using our current definition of positives and negatives.
Our hypothesis is that this difference in how positives and negatives are defined is not fundamentally important and arises from the fact that fine-tuning data is limited. Our current scheme introduces many “jittered” examples (those proposals with overlap between 0.5 and 1, but not ground truth), which expands the number of positive examples by approximately 30x. We conjecture that this large set is needed when fine-tuning the entire network to avoid overfitting. However, we also note that using these jittered examples is likely suboptimal because the network is not being fine-tuned for precise localization.
This leads to the second issue: Why, after fine-tuning, train SVMs at all? It would be cleaner to simply apply the last layer of the fine-tuned network, which is a 21-way softmax regression classifier, as the object detector. We tried this and found that performance on VOC 2007 dropped from 54.2% to 50.9% mAP. This performance drop likely arises from a combination of several factors including that the definition of positive examples used in fine-tuning does not emphasize precise localization and the softmax classifier was trained on randomly sampled negative examples rather than on the subset of “hard negatives” used for SVM training.
This result shows that it’s possible to obtain close to the same level of performance without training SVMs after fine-tuning. We conjecture that with some additional tweaks to fine-tuning the remaining performance gap may be closed. If true, this would simplify and speed up R-CNN training with no loss in detection performance.
bboxreg We use a simple bounding-box regression stage to improve localization performance. After scoring each selective search proposal with a class-specific detection SVM, we predict a new bounding box for the detection using a class-specific bounding-box regressor. This is similar in spirit to the bounding-box regression used in deformable part models . The primary difference between the two approaches is that here we regress from features computed by the CNN, rather than from geometric features computed on the inferred DPM part locations.
The input to our training algorithm is a set of training pairs , where specifies the pixel coordinates of the center of proposal ’s bounding box together with ’s width and height in pixels. Hence forth, we drop the superscript unless it is needed. Each ground-truth bounding box is specified in the same way: . Our goal is to learn a transformation that maps a proposed box to a ground-truth box .
We parameterize the transformation in terms of four functions , , , and . The first two specify a scale-invariant translation of the center of ’s bounding box, while the second two specify log-space translations of the width and height of ’s bounding box. After learning these functions, we can transform an input proposal into a predicted ground-truth box by applying the transformation
Each function (where is one of ) is modeled as a linear function of the features of proposal , denoted by . (The dependence of on the image data is implicitly assumed.) Thus we have , where is a vector of learnable model parameters. We learn
by optimizing the regularized least squares objective (ridge regression):
The regression targets for the training pair are defined as
As a standard regularized least squares problem, this can be solved efficiently in closed form.
We found two subtle issues while implementing bounding-box regression. The first is that regularization is important: we set based on a validation set. The second issue is that care must be taken when selecting which training pairs to use. Intuitively, if is far from all ground-truth boxes, then the task of transforming to a ground-truth box does not make sense. Using examples like would lead to a hopeless learning problem. Therefore, we only learn from a proposal if it is nearby at least one ground-truth box. We implement “nearness” by assigning to the ground-truth box with which it has maximum IoU overlap (in case it overlaps more than one) if and only if the overlap is greater than a threshold (which we set to 0.6 using a validation set). All unassigned proposals are discarded. We do this once for each object class in order to learn a set of class-specific bounding-box regressors.
At test time, we score each proposal and predict its new detection window only once. In principle, we could iterate this procedure (i.e., re-score the newly predicted bounding box, and then predict a new bounding box from it, and so on). However, we found that iterating does not improve results.
extravis vis21 shows additional visualizations for 20 units. For each unit, we show the 24 region proposals that maximally activate that unit out of the full set of approximately 10 million regions in all of VOC 2007 test.
We label each unit by its (y, x, channel) position in the dimensional feature map. Within each channel, the CNN computes exactly the same function of the input region, with the (y, x) position changing only the receptive field.
segperclass In voc2011valsupp we show the per-category segmentation accuracy on VOC 2011 val for each of our six segmentation methods in addition to the OP method . These results show which methods are strongest across each of the 20 PASCAL classes, plus the background class.
|VOC 2011 val||bg||aero||bike||bird||boat||bottle||bus||car||cat||chair||cow||table||dog||horse||mbike||person||plant||sheep||sofa||train||tv||mean|
One concern when training on an auxiliary dataset is that there might be redundancy between it and the test set. Even though the tasks of object detection and whole-image classification are substantially different, making such cross-set redundancy much less worrisome, we still conducted a thorough investigation that quantifies the extent to which PASCAL test images are contained within the ILSVRC 2012 training and validation sets. Our findings may be useful to researchers who are interested in using ILSVRC 2012 as training data for the PASCAL image classification task.
We performed two checks for duplicate (and near-duplicate) images. The first test is based on exact matches of flickr image IDs, which are included in the VOC 2007 test annotations (these IDs are intentionally kept secret for subsequent PASCAL test sets). All PASCAL images, and about half of ILSVRC, were collected from flickr.com. This check turned up 31 matches out of 4952 (0.63%).
to have excellent performance at near-duplicate image detection in large (1 million) image collections. Following , we computed GIST descriptors on warped pixel versions of all ILSVRC 2012 trainval and PASCAL 2007 test images.
Euclidean distance nearest-neighbor matching of GIST descriptors revealed 38 near-duplicate images (including all 31 found by flickr ID matching). The matches tend to vary slightly in JPEG compression level and resolution, and to a lesser extent cropping. These findings show that the overlap is small, less than 1%. For VOC 2012, because flickr IDs are not available, we used the GIST matching method only. Based on GIST matches, 1.5% of VOC 2012 test images are in ILSVRC 2012 trainval. The slightly higher rate for VOC 2012 is likely due to the fact that the two datasets were collected closer together in time than VOC 2007 and ILSVRC 2012 were.
|accordion||50.8||centipede||30.4||hair spray||13.8||pencil box||11.4||snowplow||69.2|
|airplane||50.0||chain saw||14.1||hamburger||34.2||pencil sharpener||9.0||soap dispenser||16.8|
|artichoke||45.0||computer keyboard||39.6||hat with a wide brim||40.5||ping-pong ball||21.0||starfish||45.1|
|axe||11.8||computer mouse||21.2||head cabbage||17.4||pitcher||19.2||stethoscope||18.3|
|bagel||37.5||croquet ball||30.0||horizontal bar||7.0||plate rack||15.2||strawberry||26.8|
|band aid||17.4||cup or mug||34.0||iPod||59.2||porcupine||37.2||swimming trunks||9.1|
|bathing cap||37.2||dog||76.8||ladle||3.0||puck||14.1||tape player||21.4|
|beaker||11.3||domestic cat||44.1||ladybug||58.4||punching bag||29.4||tennis ball||59.1|
|bicycle||41.1||elephant||56.4||lipstick||23.1||red panda||61.1||traffic light||24.7|
|bookshelf||19.3||filing cabinet||20.6||maillot||31.0||rubber eraser||2.5||trumpet||14.4|
|bow tie||38.8||flower pot||20.2||maraca||30.1||rugby ball||34.5||turtle||59.1|
|bow||9.0||flute||4.9||microphone||4.0||ruler||11.5||tv or monitor||41.7|
|bowl||26.7||fox||59.3||microwave||40.1||salt or pepper shaker||24.6||unicycle||27.2|
|brassiere||31.2||french horn||24.2||milk can||33.3||saxophone||40.8||vacuum||19.5|
|butterfly||88.5||giant panda||42.5||motorcycle||42.2||seal||20.9||waffle iron||24.0|
|can opener||28.9||golf ball||51.3||nail||4.5||ski||9.0||water bottle||8.1|
This document tracks the progress of R-CNN. To help readers understand how it has changed over time, here’s a brief changelog describing the revisions.
CVPR 2014 camera-ready revision. Includes substantial improvements in detection performance brought about by (1) starting fine-tuning from a higher learning rate (0.001 instead of 0.0001), (2) using context padding when preparing CNN inputs, and (3) bounding-box regression to fix localization errors.
Results on the ILSVRC2013 detection dataset and comparison with OverFeat were integrated into several sections (primarily detection and ilsvrc).
The softmax vs. SVM results in posneg contained an error, which has been fixed. We thank Sergio Guadarrama for helping to identify this issue.
Added results using the new 16-layer network architecture from Simonyan and Zisserman  to netarch and voc2007oxfordnet.
Neural network-based face detection.TPAMI, 1998.