Skip to content

Pointivo/CSL_RetinaNet_Tensorflow

 
 

Repository files navigation

Arbitrary-Oriented Object Detection with Circular Smooth Label

Abstract

This repo is based on Focal Loss for Dense Object Detection, and it is completed by YangXue.

Other CSL-based code: R3Det-CSL, OHDet

Pipeline

2

Circular Smooth Label

5

Latest Performance

DOTA1.0 (Task1)

Model Backbone Training data Val data mAP Model Link Anchor Label Mode Reg. Loss Angle Range lr schd Data Augmentation GPU Image/GPU Configs
CSL ResNet50_v1 600->800 DOTA1.0 trainval DOTA1.0 test 67.38 - H Gaussian (r=1, w=10) smooth L1 180 2x × 3X GeForce RTX 2080 Ti 1 cfgs_res50_dota_v45.py
CSL ResNet50_v1 600->800 DOTA1.0 trainval DOTA1.0 test 68.73 - H Pulse (w=1) smooth L1 180 2x × 2X GeForce RTX 2080 Ti 1 cfgs_res50_dota_v41.py

Notice:
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.
Please refer to new repo for the latest progress.

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 1.13

Download Model

Pretrain weights

1、Please download resnet50_v1, resnet101_v1 pre-trained models on Imagenet, put it to data/pretrained_weights.
2、(Recommend) Or you can choose to use a better backbone, 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.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.py

Eval

cd $PATH_ROOT/tools
python test_dota.py --test_dir='/PATH/TO/IMAGES/'  
                    --gpus=0,1,2,3,4,5,6,7  
                    --s (visualization, optional)
                    --ms (multi-scale test, optional)

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}
}

@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

Code for ECCV 2020 paper: Arbitrary-Oriented Object Detection with Circular Smooth Label

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 94.1%
  • Cuda 3.9%
  • Cython 1.6%
  • Other 0.4%