/R2CNN_FPN_Tensorflow

R2CNN: Rotational Region CNN Based on FPN (Tensorflow)

Primary LanguagePython

R2CNN: Rotational Region CNN for Orientation Robust Scene Detection

A Tensorflow implementation of FPN or R2CNN detection framework based on FPN.
You can refer to the papers R2CNN Rotational Region CNN for Orientation Robust Scene Text Detection or Feature Pyramid Networks for Object Detection
Other rotation detection method reference R-DFPN, RRPN and R2CNN_HEAD
If useful to you, please star to support my work. Thanks.

Citing R-DFPN

If you find R-DFPN useful in your research, please consider citing:

@article{yangxue_r-dfpn:http://www.mdpi.com/2072-4292/10/1/132
    Author = {Xue Yang, Hao Sun, Kun Fu, Jirui Yang, Xian Sun, Menglong Yan and Zhi Guo},
    Title = {{R-DFPN}: Automatic Ship Detection in Remote Sensing Images from Google Earth of Complex Scenes Based on Multiscale Rotation Dense Feature Pyramid Networks},
    Journal = {Published in remote sensing},
    Year = {2018}
}  

Configuration Environment

ubuntu(Encoding problems may occur on windows) + python2 + tensorflow1.2 + cv2 + cuda8.0 + GeForce GTX 1080
If you want to use cpu, you need to modify the parameters of NMS and IOU functions use_gpu = False in cfgs.py
You can also use docker environment, command: docker push yangxue2docker/tensorflow3_gpu_cv2_sshd:v1.0

Installation

Clone the repository

git clone https://github.com/yangxue0827/R2CNN_FPN_Tensorflow.git    

Make tfrecord

The image name is best in English.
The data is VOC format, reference here
data path format ($R2CNN_ROOT/data/io/divide_data.py)
VOCdevkit

VOCdevkit_train

Annotation
JPEGImages

VOCdevkit_test

Annotation
JPEGImages

Clone the repository

cd $R2CNN_ROOT/data/io/  
python convert_data_to_tfrecord.py --VOC_dir='***/VOCdevkit/VOCdevkit_train/' --save_name='train' --img_format='.jpg' --dataset='ship'
     

Demo

1、Unzip the weight $R2CNN_ROOT/output/res101_trained_weights/*.rar
2、put images in $R2CNN_ROOT/tools/inference_image
3、Configure parameters in $R2CNN_ROOT/libs/configs/cfgs.py and modify the project's root directory
4、

cd $R2CNN_ROOT/tools      

5、image slice
If you want to test FPN :

python inference.py   

elif you want to test R2CNN:

python inference1.py   

6、large image

cd $FPN_ROOT/tools
python demo.py(demo1.py) --src_folder=.\demo_src --des_folder=.\demo_des         

Train

1、Modify $R2CNN_ROOT/libs/lable_name_dict/***_dict.py, corresponding to the number of categories in the configuration file
2、download pretrain weight(resnet_v1_101_2016_08_28.tar.gz or resnet_v1_50_2016_08_28.tar.gz) from here, then extract to folder $R2CNN_ROOT/data/pretrained_weights
3、

cd $R2CNN_ROOT/tools      

4、Choose a model(FPN and R2CNN)
If you want to train FPN :

python train.py   

elif you want to train R2CNN:

python train1.py   

Test tfrecord

cd $R2CNN_ROOT/tools   
python test.py(test1.py)   

eval

cd $R2CNN_ROOT/tools   
python eval.py(eval1.py)  

Summary

tensorboard --logdir=$R2CNN_ROOT/output/res101_summary/ 

01 02 03

Graph

04

icdar2015 test results

19
20

21
22

23
24

Test results

11
12

13
14

15
16

17
18