README.md 11.2 KB
Newer Older
R
Ross Girshick 已提交
1 2
# fast-rcnn has been deprecated. Please see [Detectron](https://github.com/facebookresearch/Detectron), which includes an implementation of [Mask R-CNN](https://arxiv.org/abs/1703.06870).

R
Ross Girshick 已提交
3 4
### This code base is no longer maintained and exists as a historical artifact to supplement my ICCV 2015 paper. For more recent work that's faster and more accurrate, please see [Faster R-CNN](https://github.com/rbgirshick/py-faster-rcnn) (which also includes functionality for training Fast R-CNN).

5
# *Fast* R-CNN: Fast Region-based Convolutional Networks for object detection
6

R
Ross Girshick 已提交
7
Created by Ross Girshick at Microsoft Research, Redmond.
R
Ross Girshick 已提交
8

R
Ross Girshick 已提交
9 10
### Introduction

R
Ross Girshick 已提交
11
**Fast R-CNN** is a fast framework for object detection with deep ConvNets. Fast R-CNN
12 13
 - trains state-of-the-art models, like VGG16, 9x faster than traditional R-CNN and 3x faster than SPPnet,
 - runs 200x faster than R-CNN and 10x faster than SPPnet at test-time,
R
Ross Girshick 已提交
14 15
 - has a significantly higher mAP on PASCAL VOC than both R-CNN and SPPnet,
 - and is written in Python and C++/Caffe.
R
Ross Girshick 已提交
16

R
Ross Girshick 已提交
17
Fast R-CNN was initially described in an [arXiv tech report](http://arxiv.org/abs/1504.08083) and later published at ICCV 2015.
R
Ross Girshick 已提交
18

19 20 21 22
### License

Fast R-CNN is released under the MIT License (refer to the LICENSE file for details).

R
Ross Girshick 已提交
23 24
### Citing Fast R-CNN

R
Ross Girshick 已提交
25
If you find Fast R-CNN useful in your research, please consider citing:
R
Ross Girshick 已提交
26

R
Ross Girshick 已提交
27
    @inproceedings{girshickICCV15fastrcnn,
R
Ross Girshick 已提交
28 29
        Author = {Ross Girshick},
        Title = {Fast R-CNN},
R
Ross Girshick 已提交
30
        Booktitle = {International Conference on Computer Vision ({ICCV})},
R
Ross Girshick 已提交
31 32
        Year = {2015}
    }
R
Ross Girshick 已提交
33 34 35 36 37 38 39 40
    
### Contents
1. [Requirements: software](#requirements-software)
2. [Requirements: hardware](#requirements-hardware)
3. [Basic installation](#installation-sufficient-for-the-demo)
4. [Demo](#demo)
5. [Beyond the demo: training and testing](#beyond-the-demo-installation-for-training-and-testing-models)
6. [Usage](#usage)
R
Ross Girshick 已提交
41
7. [Extra downloads](#extra-downloads)
R
Ross Girshick 已提交
42

R
Ross Girshick 已提交
43
### Requirements: software
R
Ross Girshick 已提交
44

R
Ross Girshick 已提交
45
1. Requirements for `Caffe` and `pycaffe` (see: [Caffe installation instructions](http://caffe.berkeleyvision.org/installation.html))
R
Ross Girshick 已提交
46 47 48

  **Note:** Caffe *must* be built with support for Python layers!

R
Ross Girshick 已提交
49 50 51 52
  ```make
  # In your Makefile.config, make sure to have this line uncommented
  WITH_PYTHON_LAYER := 1
  ```
R
Ross Girshick 已提交
53

R
Ross Girshick 已提交
54
  You can download my [Makefile.config](https://dl.dropboxusercontent.com/s/6joa55k64xo2h68/Makefile.config?dl=0) for reference.
R
Ross Girshick 已提交
55
2. Python packages you might not have: `cython`, `python-opencv`, `easydict`
R
Ross Girshick 已提交
56
3. [optional] MATLAB (required for PASCAL VOC evaluation only)
R
Ross Girshick 已提交
57

R
Ross Girshick 已提交
58 59 60 61 62
### Requirements: hardware

1. For training smaller networks (CaffeNet, VGG_CNN_M_1024) a good GPU (e.g., Titan, K20, K40, ...) with at least 3G of memory suffices
2. For training with VGG16, you'll need a K40 (~11G of memory)

R
Ross Girshick 已提交
63
### Installation (sufficient for the demo)
64

R
Ross Girshick 已提交
65 66 67
1. Clone the Fast R-CNN repository
  ```Shell
  # Make sure to clone with --recursive
68
  git clone --recursive https://github.com/rbgirshick/fast-rcnn.git
R
Ross Girshick 已提交
69 70 71
  ```
  
2. We'll call the directory that you cloned Fast R-CNN into `FRCN_ROOT`
72 73 74 75 76 77 78 79 80

   *Ignore notes 1 and 2 if you followed step 1 above.*
   
   **Note 1:** If you didn't clone Fast R-CNN with the `--recursive` flag, then you'll need to manually clone the `caffe-fast-rcnn` submodule:
    ```Shell
    git submodule update --init --recursive
    ```
    **Note 2:** The `caffe-fast-rcnn` submodule needs to be on the `fast-rcnn` branch (or equivalent detached state). This will happen automatically *if you follow these instructions*.

R
Ross Girshick 已提交
81 82 83 84 85 86 87 88 89 90 91
3. Build the Cython modules
    ```Shell
    cd $FRCN_ROOT/lib
    make
    ```
    
4. Build Caffe and pycaffe
    ```Shell
    cd $FRCN_ROOT/caffe-fast-rcnn
    # Now follow the Caffe installation instructions here:
    #   http://caffe.berkeleyvision.org/installation.html
R
Ross Girshick 已提交
92

R
Ross Girshick 已提交
93 94 95 96 97 98 99 100 101 102
    # If you're experienced with Caffe and have all of the requirements installed
    # and your Makefile.config in place, then simply do:
    make -j8 && make pycaffe
    ```
    
5. Download pre-computed Fast R-CNN detectors
    ```Shell
    cd $FRCN_ROOT
    ./data/scripts/fetch_fast_rcnn_models.sh
    ```
103

R
Ross Girshick 已提交
104
    This will populate the `$FRCN_ROOT/data` folder with `fast_rcnn_models`. See `data/README.md` for details.
105

R
Ross Girshick 已提交
106 107
### Demo

R
Ross Girshick 已提交
108 109 110 111
*After successfully completing [basic installation](#installation-sufficient-for-the-demo)*, you'll be ready to run the demo.

**Python**

R
Ross Girshick 已提交
112 113 114 115
To run the demo
```Shell
cd $FRCN_ROOT
./tools/demo.py
R
Ross Girshick 已提交
116
```
117
The demo performs detection using a VGG16 network trained for detection on PASCAL VOC 2007. The object proposals are pre-computed in order to reduce installation requirements.
R
Ross Girshick 已提交
118

R
Ross Girshick 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
**Note:** If the demo crashes Caffe because your GPU doesn't have enough memory, try running the demo with a small network, e.g., `./tools/demo.py --net caffenet` or with `--net vgg_cnn_m_1024`. Or run in CPU mode `./tools/demo.py --cpu`. Type `./tools/demo.py -h` for usage.

**MATLAB**

There's also a *basic* MATLAB demo, though it's missing some minor bells and whistles compared to the Python version.
```Shell
cd $FRCN_ROOT/matlab
matlab # wait for matlab to start...

# At the matlab prompt, run the script:
>> fast_rcnn_demo
```

Fast R-CNN training is implemented in Python only, but test-time detection functionality also exists in MATLAB.
See `matlab/fast_rcnn_demo.m` and `matlab/fast_rcnn_im_detect.m` for details.

135 136 137 138 139 140 141 142 143 144 145 146 147 148
**Computing object proposals**

The demo uses pre-computed selective search proposals computed with [this code](https://github.com/rbgirshick/rcnn/blob/master/selective_search/selective_search_boxes.m).
If you'd like to compute proposals on your own images, there are many options.
Here are some pointers; if you run into trouble using these resources please direct questions to the respective authors.

1. Selective Search: [original matlab code](http://disi.unitn.it/~uijlings/MyHomepage/index.php#page=projects1), [python wrapper](https://github.com/sergeyk/selective_search_ijcv_with_python)
2. EdgeBoxes: [matlab code](https://github.com/pdollar/edges)
3. GOP and LPO: [python code](http://www.philkr.net/)
4. MCG: [matlab code](http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/mcg/)
5. RIGOR: [matlab code](http://cpl.cc.gatech.edu/projects/RIGOR/)

Apologies if I've left your method off this list. Feel free to contact me and ask for it to be included.

R
Ross Girshick 已提交
149 150 151 152
### Beyond the demo: installation for training and testing models
1. Download the training, validation, test data and VOCdevkit

	```Shell
K
Kentaro Wada 已提交
153 154 155
	wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
	wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
	wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
R
Ross Girshick 已提交
156 157 158 159 160 161 162 163 164 165 166
	```
	
2. Extract all of these tars into one directory named `VOCdevkit`

	```Shell
	tar xvf VOCtrainval_06-Nov-2007.tar
	tar xvf VOCtest_06-Nov-2007.tar
	tar xvf VOCdevkit_08-Jun-2007.tar
	```

3. It should have this basic structure
167

R
Ross Girshick 已提交
168 169 170 171 172 173 174
	```Shell
  	$VOCdevkit/                           # development kit
  	$VOCdevkit/VOCcode/                   # VOC utility code
  	$VOCdevkit/VOC2007                    # image sets, annotations, etc.
  	# ... and several other directories ...
  	```
  	
175
4. Create symlinks for the PASCAL VOC dataset
176

R
Ross Girshick 已提交
177 178 179 180
	```Shell
    cd $FRCN_ROOT/data
    ln -s $VOCdevkit VOCdevkit2007
    ```
181 182 183
    Using symlinks is a good idea because you will likely want to share the same PASCAL dataset installation between multiple projects.
5. [Optional] follow similar steps to get PASCAL VOC 2010 and 2012
6. Follow the next sections to download pre-computed object proposals and pre-trained ImageNet models
R
Ross Girshick 已提交
184 185 186 187 188 189 190 191

### Download pre-computed Selective Search object proposals

Pre-computed selective search boxes can also be downloaded for VOC2007 and VOC2012.

```Shell
cd $FRCN_ROOT
./data/scripts/fetch_selective_search_data.sh
R
Ross Girshick 已提交
192
```
R
Ross Girshick 已提交
193 194 195 196 197 198 199 200 201 202

This will populate the `$FRCN_ROOT/data` folder with `selective_selective_data`.

### Download pre-trained ImageNet models

Pre-trained ImageNet models can be downloaded for the three networks described in the paper: CaffeNet (model **S**), VGG_CNN_M_1024 (model **M**), and VGG16 (model **L**).

```Shell
cd $FRCN_ROOT
./data/scripts/fetch_imagenet_models.sh
R
Ross Girshick 已提交
203
```
R
Ross Girshick 已提交
204
These models are all available in the [Caffe Model Zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo), but are provided here for your convenience.
205

R
Ross Girshick 已提交
206 207 208 209 210 211 212 213
### Usage

**Train** a Fast R-CNN detector. For example, train a VGG16 network on VOC 2007 trainval:

```Shell
./tools/train_net.py --gpu 0 --solver models/VGG16/solver.prototxt \
	--weights data/imagenet_models/VGG16.v2.caffemodel
```
214

215 216 217 218 219 220 221 222
If you see this error

```
EnvironmentError: MATLAB command 'matlab' not found. Please add 'matlab' to your PATH.
```

then you need to make sure the `matlab` binary is in your `$PATH`. MATLAB is currently required for PASCAL VOC evaluation.

R
Ross Girshick 已提交
223
**Test** a Fast R-CNN detector. For example, test the VGG 16 network on VOC 2007 test:
224

R
Ross Girshick 已提交
225 226 227
```Shell
./tools/test_net.py --gpu 1 --def models/VGG16/test.prototxt \
	--net output/default/voc_2007_trainval/vgg16_fast_rcnn_iter_40000.caffemodel
228
```
R
Ross Girshick 已提交
229 230 231 232 233 234 235 236 237 238 239 240

Test output is written underneath `$FRCN_ROOT/output`.

**Compress** a Fast R-CNN model using truncated SVD on the fully-connected layers:

```Shell
./tools/compress_net.py --def models/VGG16/test.prototxt \
	--def-svd models/VGG16/compressed/test.prototxt \
    --net output/default/voc_2007_trainval/vgg16_fast_rcnn_iter_40000.caffemodel
# Test the model you just compressed
./tools/test_net.py --gpu 0 --def models/VGG16/compressed/test.prototxt \
	--net output/default/voc_2007_trainval/vgg16_fast_rcnn_iter_40000_svd_fc6_1024_fc7_256.caffemodel
241
```
R
Ross Girshick 已提交
242 243

### Experiment scripts
R
Ross Girshick 已提交
244
Scripts to reproduce the experiments in the paper (*up to stochastic variation*) are provided in `$FRCN_ROOT/experiments/scripts`. Log files for experiments are located in `experiments/logs`.
R
Ross Girshick 已提交
245

246 247 248
**Note:** Until recently (commit a566e39), the RNG seed for Caffe was not fixed during training. Now it's fixed, unless `train_net.py` is called with the `--rand` flag.
Results generated before this commit will have some stochastic variation.

R
Ross Girshick 已提交
249 250
### Extra downloads

R
Ross Girshick 已提交
251
- [Experiment logs](https://dl.dropboxusercontent.com/s/q4i9v66xq9vhskl/fast_rcnn_experiments.tgz?dl=0)
R
Ross Girshick 已提交
252
- PASCAL VOC test set detections
R
Ross Girshick 已提交
253 254 255 256 257 258
    - [voc_2007_test_results_fast_rcnn_caffenet_trained_on_2007_trainval.tgz](https://dl.dropboxusercontent.com/s/rkj8ngkoebpltlt/voc_2007_test_results_fast_rcnn_caffenet_trained_on_2007_trainval.tgz?dl=0)
    - [voc_2007_test_results_fast_rcnn_vgg16_trained_on_2007_trainval.tgz](https://dl.dropboxusercontent.com/s/y8supay93f7dj0i/voc_2007_test_results_fast_rcnn_vgg16_trained_on_2007_trainval.tgz?dl=0)
    - [voc_2007_test_results_fast_rcnn_vgg_cnn_m_1024_trained_on_2007_trainval.tgz](https://dl.dropboxusercontent.com/s/yiqm42vtvvw60dg/voc_2007_test_results_fast_rcnn_vgg_cnn_m_1024_trained_on_2007_trainval.tgz?dl=0)
    - [voc_2012_test_results_fast_rcnn_vgg16_trained_on_2007_trainvaltest_2012_trainval.tgz](https://dl.dropboxusercontent.com/s/a3loiewc4f4tnaj/voc_2012_test_results_fast_rcnn_vgg16_trained_on_2007_trainvaltest_2012_trainval.tgz?dl=0)
    - [voc_2012_test_results_fast_rcnn_vgg16_trained_on_2012_trainval.tgz](https://dl.dropboxusercontent.com/s/7pctvinam6j2nho/voc_2012_test_results_fast_rcnn_vgg16_trained_on_2012_trainval.tgz?dl=0)
- [Fast R-CNN VGG16 model](https://dl.dropboxusercontent.com/s/53im2gut2jin2qq/voc12_submission.tgz?dl=0) trained on VOC07 train,val,test union with VOC12 train,val