A Tensorflow implementation of FPN detection framework.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 7dd4932 Sep 3, 2018
Permalink
Failed to load latest commit information.
.idea Update Dec 13, 2017
configs Update Dec 8, 2017
data add random image flip Mar 19, 2018
help_utils Update Dec 8, 2017
libs update demo Sep 3, 2018
output Update Dec 12, 2017
tools update demo Sep 3, 2018
.gitattributes 🎊 Added .gitattributes & .gitignore files Dec 8, 2017
.gitignore 🎊 Added .gitattributes & .gitignore files Dec 8, 2017
README.md update readme Jul 1, 2018
__init__.py first commit Dec 8, 2017
graph.png first commit Dec 8, 2017
sample.tif Update Dec 8, 2017
sample.xml Update Dec 9, 2017

README.md

Feature Pyramid Networks for Object Detection

Recommend improved code: https://github.com/DetectionTeamUCAS

A Tensorflow implementation of FPN detection framework.
You can refer to the paper Feature Pyramid Networks for Object Detection
Rotation detection method baesd on FPN reference R2CNN, RRPN and R2CNN_HEAD and R-DFPN
If useful to you, please star to support my work. Thanks.

Configuration Environment

ubuntu(Encoding problems may occur on windows) + python2 + tensorflow1.2 + cv2 + cuda8.0 + GeForce GTX 1080
You can also use docker environment, command: docker pull yangxue2docker/tensorflow3_gpu_cv2_sshd:v1.0

Installation

Clone the repository

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

Make tfrecord

The data is VOC format, reference here
data path format ($FPN_ROOT/data/io/divide_data.py)

├── VOCdevkit
│   ├── VOCdevkit_train
│       ├── Annotation
│       ├── JPEGImages
│    ├── VOCdevkit_test
│       ├── Annotation
│       ├── JPEGImages
cd $FPN_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 $FPN_ROOT/output/res101_trained_weights/*.rar
2、put images in $FPN_ROOT/tools/inference_image
3、Configure parameters in $FPN_ROOT/libs/configs/cfgs.py and modify the project's root directory 4、image slice

cd $FPN_ROOT/tools
python inference.py   

5、big image

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

Train

1、Modify $FPN_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 $FPN_ROOT/data/pretrained_weights
3、

cd $FPN_ROOT/tools
python train.py 

Test tfrecord

cd $FPN_ROOT/tools    
python $FPN_ROOT/tools/test.py  

eval(Not recommended, Please refer here

cd $FPN_ROOT/tools   
python ship_eval.py

Summary

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

01 02 03

Graph

04

Test results

airplane

11
12

sar_ship

13
14

ship

15
16

Note

This code works better when detecting single targets, but not suitable for multi-target detection tasks. Recommend improved code: https://github.com/DetectionTeamUCAS