Skip to content

R3Det: Refined Single-Stage Detector with Feature Refinement for Rotating Object

License

Notifications You must be signed in to change notification settings

magnificent1208/R3Det_Tensorflow

 
 

Repository files navigation

R3Det: Refined Single-Stage Detector with Feature Refinement for Rotating Object

Abstract

R3Det and R3Det++ are based on Focal Loss for Dense Object Detection, and it is completed by YangXue.

Techniques:

Pipeline

5

Latest Performance

DOTA1.0 (Task1)

Model Backbone Training data Val data mAP Model Link Anchor Reg. Loss Angle Range lr schd Data Augmentation GPU Image/GPU Configs
R3Det ResNet50_v1d 600->800 DOTA1.0 trainval DOTA1.0 test 70.27 - H + R smooth L1 90 2x × 4X GeForce RTX 2080 Ti 1 cfgs_res50_dota_r3det_v1.py
R3Det* ResNet101_v1d 600->800 DOTA1.0 trainval DOTA1.0 test 73.79 - H + R iou-smooth L1 90 3x 4X GeForce RTX 2080 Ti 1 cfgs_res101_dota_r3det_v19.py
R3Det* ResNet152_v1d 600->800 DOTA1.0 trainval DOTA1.0 test 74.54 - H + R iou-smooth L1 90 3x 4X GeForce RTX 2080 Ti 1 cfgs_res152_dota_r3det_v25.py
R3Det ResNet152_v1d MS (+Flip) DOTA1.0 trainval DOTA1.0 test 76.23 (+0.24) - H + R iou-smooth L1 90 4x 3X GeForce RTX 2080 Ti 1 cfgs_res152_dota_r3det_v3.py

R3Det*: R3Det with two refinement stages
Due to the improvement of the code, the performance of this repo is gradually improving, so the experimental results in other configuration files are for reference only.

Visualization

1

My Development Environment

docker images: docker pull yangxue2docker/yx-tf-det:tensorflow1.13.1-cuda10-gpu-py3
1、python3.5 (anaconda recommend)
2、cuda 10.0
3、opencv(cv2)
4、tfplot 0.2.0 (optional)
5、tensorflow-gpu 1.13

Download Model

Pretrain weights

1、Please download resnet50_v1, resnet101_v1, resnet152_v1, efficientnet, mobilenet_v2 pre-trained models on Imagenet, put it to data/pretrained_weights.
2、(Recommend in this repo) Or you can choose to use a better backbone (resnet_v1d), refer to gluon2TF.

Compile

cd $PATH_ROOT/libs/box_utils/cython_utils
python setup.py build_ext --inplace (or make)

cd $PATH_ROOT/libs/box_utils/
python setup.py build_ext --inplace

Train

1、If you want to train your own data, please note:

(1) Modify parameters (such as CLASS_NUM, DATASET_NAME, VERSION, etc.) in $PATH_ROOT/libs/configs/cfgs.py
(2) Add category information in $PATH_ROOT/libs/label_name_dict/label_dict.py     
(3) Add data_name to $PATH_ROOT/data/io/read_tfrecord_multi_gpu.py  

2、Make tfrecord
For DOTA dataset:

cd $PATH_ROOT/data/io/DOTA
python data_crop.py
cd $PATH_ROOT/data/io/  
python convert_data_to_tfrecord.py --VOC_dir='/PATH/TO/DOTA/' 
                                   --xml_dir='labeltxt'
                                   --image_dir='images'
                                   --save_name='train' 
                                   --img_format='.png' 
                                   --dataset='DOTA'

3、Multi-gpu train

cd $PATH_ROOT/tools
python multi_gpu_train_r3det.py

Eval

cd $PATH_ROOT/tools
python test_dota_r3det.py --test_dir='/PATH/TO/IMAGES/'  
                          --gpus=0,1,2,3,4,5,6,7          

Tensorboard

cd $PATH_ROOT/output/summary
tensorboard --logdir=.

3

4

Citation

If this is useful for your research, please consider cite.

@article{yang2020arbitrary,
    title={Arbitrary-Oriented Object Detection with Circular Smooth Label},
    author={Yang, Xue and Yan, Junchi},
    journal={European Conference on Computer Vision (ECCV)},
    year={2020}
    organization={Springer}
}

@article{yang2019r3det,
    title={R3Det: Refined Single-Stage Detector with Feature Refinement for Rotating Object},
    author={Yang, Xue and Liu, Qingqing and Yan, Junchi and Li, Ang and Zhang, Zhiqiang and Yu, Gang},
    journal={arXiv preprint arXiv:1908.05612},
    year={2019}
}

@article{yang2020scrdet++,
    title={SCRDet++: Detecting Small, Cluttered and Rotated Objects via Instance-Level Feature Denoising and Rotation Loss Smoothing},
    author={Yang, Xue and Yan, Junchi and Yang, Xiaokang and Tang, Jin and Liao, Wenglong and He, Tao},
    journal={arXiv preprint arXiv:2004.13316},
    year={2020}
}

@inproceedings{yang2019scrdet,
    title={SCRDet: Towards more robust detection for small, cluttered and rotated objects},
    author={Yang, Xue and Yang, Jirui and Yan, Junchi and Zhang, Yue and Zhang, Tengfei and Guo, Zhi and Sun, Xian and Fu, Kun},
    booktitle={Proceedings of the IEEE International Conference on Computer Vision (ICCV)},
    pages={8232--8241},
    year={2019}
}

@inproceedings{xia2018dota,
    title={DOTA: A large-scale dataset for object detection in aerial images},
    author={Xia, Gui-Song and Bai, Xiang and Ding, Jian and Zhu, Zhen and Belongie, Serge and Luo, Jiebo and Datcu, Mihai and Pelillo, Marcello and Zhang, Liangpei},
    booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
    pages={3974--3983},
    year={2018}
}

Reference

1、https://github.com/endernewton/tf-faster-rcnn
2、https://github.com/zengarden/light_head_rcnn
3、https://github.com/tensorflow/models/tree/master/research/object_detection
4、https://github.com/fizyr/keras-retinanet

About

R3Det: Refined Single-Stage Detector with Feature Refinement for Rotating Object

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.8%
  • Cuda 1.2%