Region-based FCN implemented with PyTorch

This is a PyTorch implementation of R-FCN for object detection. This project is mainly based on faster_rcnn_pytorch

For details about R-FCN please refer to the paper R-FCN: Object Detection via Region-based Fully Convolutional Networks by Jifeng Dai, Yi Li, Kaiming He, Jian Sun.

Installation

  1. Clone the this repository

    git clone https://github.com/PureDiors/pytorch_RFCN.git
  2. Build the Cython modules for nms and the psroi_pooling layer

    cd faster_rcnn_pytorch/faster_rcnn
    ./make.sh

The psroi pooling layer is defined in the folder faster_rcnn/psroi_pooling, and the whole detection network is implemented in faster_rcnn/rfcn.py.

Training on Pascal VOC 2007

Follow this project (TFFRCNN) to download and prepare the training, validation, test data and the VGG16 model pre-trained on ImageNet.

Since the program loading the data in faster_rcnn_pytorch/data by default, you can set the data path as following.

cd faster_rcnn_pytorch
mkdir data
cd data
ln -s $VOCdevkit VOCdevkit2007

The speed for training the rfcn with VGG16 on a Nvidia Titan X(Pascal) is 4.9 fps, and 12 fps for testing.

You can set some hyper-parameters in train.py and training parameters in the .yml file.

Training with TensorBoard

With the aid of Crayon, we can access the visualisation power of TensorBoard for any deep learning framework.

To use the TensorBoard, install Crayon (https://github.com/torrvision/crayon) and set use_tensorboard = True in faster_rcnn/train.py.

Evaluation

Set the path of the trained model in test.py.

cd faster_rcnn_pytorch
mkdir output
python test.py