A newer version of the Gradio SDK is available: 6.13.0
Fast R-CNN
Abstract
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.
Introduction
Before training the Fast R-CNN, users should first train an RPN, and use the RPN to extract the region proposals.
The region proposals can be obtained by setting DumpProposals pseudo metric. The dumped results is a dict(file_name: pred_instance).
The pred_instance is an InstanceData containing the sorted boxes and scores predicted by RPN. We provide example of dumping proposals in RPN config.
First, it should be obtained the region proposals in both training and validation (or testing) set. change the type of
test_evaluatortoDumpProposalsin the RPN config to get the region proposals as below:The config of get training image region proposals can be set as below:
# For training set val_dataloader = dict( dataset=dict( ann_file='data/coco/annotations/instances_train2017.json', data_prefix=dict(img='val2017/'))) val_dataloader = dict( _delete_=True, type='DumpProposals', output_dir='data/coco/proposals/', proposals_file='rpn_r50_fpn_1x_train2017.pkl') test_dataloader = val_dataloader test_evaluator = val_dataloaderThe config of get validation image region proposals can be set as below:
# For validation set val_dataloader = dict( _delete_=True, type='DumpProposals', output_dir='data/coco/proposals/', proposals_file='rpn_r50_fpn_1x_val2017.pkl') test_evaluator = val_dataloaderExtract the region proposals command can be set as below:
./tools/dist_test.sh \ configs/rpn_r50_fpn_1x_coco.py \ checkpoints/rpn_r50_fpn_1x_coco_20200218-5525fa2e.pth \ 8Users can refer to test tutorial for more details.
Then, modify the path of
proposal_filein the dataset and usingProposalBroadcasterto process both ground truth bounding boxes and region proposals in pipelines. An example of Fast R-CNN important setting can be seen as below:train_pipeline = [ dict( type='LoadImageFromFile', backend_args={{_base_.backend_args}}), dict(type='LoadProposals', num_max_proposals=2000), dict(type='LoadAnnotations', with_bbox=True), dict( type='ProposalBroadcaster', transforms=[ dict(type='Resize', scale=(1333, 800), keep_ratio=True), dict(type='RandomFlip', prob=0.5), ]), dict(type='PackDetInputs') ] test_pipeline = [ dict( type='LoadImageFromFile', backend_args={{_base_.backend_args}}), dict(type='LoadProposals', num_max_proposals=None), dict( type='ProposalBroadcaster', transforms=[ dict(type='Resize', scale=(1333, 800), keep_ratio=True), ]), dict( type='PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor')) ] train_dataloader = dict( dataset=dict( proposal_file='proposals/rpn_r50_fpn_1x_train2017.pkl', pipeline=train_pipeline)) val_dataloader = dict( dataset=dict( proposal_file='proposals/rpn_r50_fpn_1x_val2017.pkl', pipeline=test_pipeline)) test_dataloader = val_dataloaderFinally, users can start training the Fast R-CNN.
Results and Models
Citation
@inproceedings{girshick2015fast,
title={Fast r-cnn},
author={Girshick, Ross},
booktitle={Proceedings of the IEEE international conference on computer vision},
year={2015}
}