Faster-RCNN_Tensorflow
Abstract
This is a tensorflow re-implementation of Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks.
This project is completed by YangXue and YangJirui. Some relevant projects (R2CNN) and (RRPN) based on this code.
Train on VOC 2007 trainval and test on VOC 2007 test (PS. This project also support coco training.)
Comparison
use_voc2012_metric
Models | mAP | sheep | horse | bicycle | bottle | cow | sofa | bus | dog | cat | person | train | diningtable | aeroplane | car | pottedplant | tvmonitor | chair | bird | boat | motorbike |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
resnet50_v1 | 75.16 | 74.08 | 89.27 | 80.27 | 55.74 | 83.38 | 69.35 | 85.13 | 88.80 | 91.42 | 81.17 | 81.71 | 62.74 | 78.65 | 86.86 | 47.00 | 76.71 | 50.29 | 79.05 | 60.51 | 80.96 |
resnet101_v1 | 77.03 | 79.68 | 89.33 | 83.89 | 59.41 | 85.68 | 76.59 | 84.23 | 88.50 | 88.50 | 81.54 | 79.16 | 72.66 | 80.26 | 88.42 | 47.50 | 79.81 | 52.85 | 80.70 | 59.94 | 81.87 |
mobilenet_v2 | 50.36 | 46.68 | 70.45 | 67.43 | 25.69 | 53.60 | 46.26 | 58.95 | 37.62 | 43.97 | 67.67 | 61.35 | 52.14 | 56.54 | 75.02 | 24.47 | 49.89 | 27.76 | 38.04 | 38.20 | 65.46 |
use_voc2007_metric
Models | mAP | sheep | horse | bicycle | bottle | cow | sofa | bus | dog | cat | person | train | diningtable | aeroplane | car | pottedplant | tvmonitor | chair | bird | boat | motorbike |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
resnet50_v1 | 73.09 | 72.11 | 85.63 | 77.74 | 55.82 | 81.19 | 67.34 | 82.44 | 85.66 | 87.34 | 77.49 | 79.13 | 62.65 | 76.54 | 84.01 | 47.90 | 74.13 | 50.09 | 76.81 | 60.34 | 77.47 |
resnet101_v1 | 74.63 | 76.35 | 86.18 | 79.87 | 58.73 | 83.4 | 74.75 | 80.03 | 85.4 | 86.55 | 78.24 | 76.07 | 70.89 | 78.52 | 86.26 | 47.80 | 76.34 | 52.14 | 78.06 | 58.90 | 78.04 |
mobilenet_v2 | 50.34 | 46.99 | 68.45 | 65.89 | 28.16 | 53.21 | 46.96 | 57.80 | 38.60 | 44.12 | 66.20 | 60.49 | 52.40 | 56.06 | 72.68 | 26.91 | 49.99 | 30.18 | 39.38 | 38.54 | 64.74 |
Requirements
1ใtensorflow >= 1.2
2ใcuda8.0
3ใpython2.7 (anaconda2 recommend)
4ใopencv(cv2)
Download Model
1ใplease download resnet50_v1ใresnet101_v1 pre-trained models on Imagenet, put it to $PATH_ROOT/data/pretrained_weights.
2ใplease download mobilenet_v2 pre-trained model on Imagenet, put it to $PATH_ROOT/data/pretrained_weights/mobilenet.
3ใplease download trained model by this project, put it to $PATH_ROOT/output/trained_weights.
Data Format
โโโ VOCdevkit
โย ย โโโ VOCdevkit_train
โย ย โโโ Annotation
โย ย โโโ JPEGImages
โ โโโ VOCdevkit_test
โย ย โโโ Annotation
โย ย โโโ JPEGImages
Compile
cd $PATH_ROOT/libs/box_utils/cython_utils
python setup.py build_ext --inplace
Demo(available)
Select a configuration file in the folder ($PATH_ROOT/libs/configs/) and copy its contents into cfgs.py, then download the corresponding weights.
cd $PATH_ROOT/tools
python inference.py --data_dir='/PATH/TO/IMAGES/'
--save_dir='/PATH/TO/SAVE/RESULTS/'
--GPU='0'
Eval
cd $PATH_ROOT/tools
python eval.py --eval_imgs='/PATH/TO/IMAGES/'
--annotation_dir='/PATH/TO/TEST/ANNOTATION/'
--GPU='0'
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/lable_dict.py
(3) Add data_name to line 76 of $PATH_ROOT/data/io/read_tfrecord.py
2ใmake tfrecord
cd $PATH_ROOT/data/io/
python convert_data_to_tfrecord.py --VOC_dir='/PATH/TO/VOCdevkit/VOCdevkit_train/'
--xml_dir='Annotation'
--image_dir='JPEGImages'
--save_name='train'
--img_format='.jpg'
--dataset='pascal'
3ใtrain
cd $PATH_ROOT/tools
python train.py
Tensorboard
cd $PATH_ROOT/output/summary
tensorboard --logdir=.
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