Awesome
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 (R<sup>2</sup>CNN) 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