This paper proposes a Fast Region-based Convolutional Network method (Fast R-CNN) for object detection. Fast R-CNN builds on previous work to efficiently classify object proposals using deep convolutional networks. Compared to previous work, Fast R-CNN employs several innovations to improve training and testing speed while also increasing detection accuracy. Fast R-CNN trains the very deep VGG16 network 9x faster than R-CNN, is 213x faster at test-time, and achieves a higher mAP on PASCAL VOC 2012. Compared to SPPnet, Fast R-CNN trains VGG16 3x faster, tests 10x faster, and is more accurate.
Before training the Fast R-CNN, users should first train an RPN, and use the RPN to extract the region proposals.
- Firstly, extract the region proposals of the val set by this command as below:
./tools/dist_test.sh \
configs/rpn_r50_fpn_1x_coco.py \
checkpoints/rpn_r50_fpn_1x_coco_20200218-5525fa2e.pth \
8 \
--out proposals/rpn_r50_fpn_1x_val2017.pkl
- Then, change the
ann_file
andimg_prefix
ofdata.test
in the RPN config to train set as below:
data = dict(
test=dict(
ann_file='data/coco/annotations/instances_train2017.json',
img_prefix='data/coco/train2017/'))
- Extract the region proposals of the train set by this command as below:
./tools/dist_test.sh \
configs/rpn_r50_fpn_1x_coco.py \
checkpoints/rpn_r50_fpn_1x_coco_20200218-5525fa2e.pth \
8 \
--out proposals/rpn_r50_fpn_1x_train2017.pkl
- Modify the path of
proposal_file
in Fast R-CNN config as below:
data = dict(
train=dict(
proposal_file='proposals/rpn_r50_fpn_1x_train2017.pkl'),
val=dict(
proposal_file='proposals/rpn_r50_fpn_1x_val2017.pkl'),
test=dict(
proposal_file='proposals/rpn_r50_fpn_1x_val2017.pkl'))
Finally, users can start training the Fast R-CNN.
@inproceedings{girshick2015fast,
title={Fast r-cnn},
author={Girshick, Ross},
booktitle={Proceedings of the IEEE international conference on computer vision},
year={2015}
}