xiaolonw / adversarial-frcnn

A-Fast-RCNN (CVPR 2017)
Other
482 stars 168 forks source link
adversarial-networks caffe fast-rcnn object-detection

A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection

By Xiaolong Wang, Abhinav Shrivastava, and Abhinav Gupta

Introduction

This is a Caffe based version of A-Fast-RCNN (arxiv_link). Although we originally implement it on torch, this Caffe re-implementation is much simpler, faster and easier to use.

We release the code for training A-Fast-RCNN with Adversarial Spatial Dropout Network.

License

This code is released under the MIT License (refer to the LICENSE file for details).

Citing

If you find this useful in your research, please consider citing:

@inproceedings{WangCVPR17afrcnn,
    Author = {Xiaolong Wang and Abhinav Shrivastava and Abhinav Gupta},
    Title = {A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection},
    Booktitle = {Conference on Computer Vision and Pattern Recognition ({CVPR})},
    Year = {2017}
}

Disclaimer

This implementation is built on a fork of the OHEM code (here), which in turn builds on the Faster R-CNN Python code (here) and Fast R-CNN (here). Please cite the appropriate papers depending on which part of the code and/or model you are using.

Results

| Approach                       | training data           | test data         | mAP
| Fast R-CNN  (FRCN)             | VOC 07 trainval         | VOC 07 test       | 67.6
| FRCN with adversary            | VOC 07 trainval         | VOC 07 test       | 70.8

Note: The reported results are based on the VGG16 network.

Installation

Please follow the exact installation and download the VOC data as the Faster R-CNN Python code (here).

Usage

To run the code, one can simply do,

./train.sh

It includes 3-stage of training:

./experiments/scripts/fast_rcnn_std.sh  [GPU_ID]  VGG16 pascal_voc

which is used for training a standard Fast-RCNN for 10K iterations, you can download my model and logs for this step.

./experiments/scripts/fast_rcnn_adv_pretrain.sh  [GPU_ID]  VGG16 pascal_voc

which is a pre-training stage for the adversarial network, you can download my model and logs for this step.

./copy_model.h

which is used to copy the weights of the above two models to initialize the joint model.

./experiments/scripts/fast_rcnn_adv.sh  [GPU_ID]  VGG16 pascal_voc

which is joint training of the detector and the adversarial network, you can download my model and logs for this step.