/py-RFCN-priv

code for py-R-FCN-multiGPU maintained by bupt-priv

Primary LanguageJupyter NotebookMIT LicenseMIT

py-RFCN-priv

py-RFCN-priv is based on py-R-FCN-multiGPU, thanks for bharatsingh430's job.

Disclaimer

The official R-FCN code (written in MATLAB) is available here.

py-R-FCN is modified from the offcial R-FCN implementation and py-faster-rcnn code, and the usage is quite similar to py-faster-rcnn.

py-R-FCN-multiGPU is a modified version of py-R-FCN, the original code is available here.

py-RFCN-priv also supports soft-nms.

caffe-priv supports convolution_depthwise, roi warping, roi mask pooling, bilinear interpolation, selu.

New features

py-RFCN-priv supports:

  • Label shuffling (only single GPU training).
  • PIXEL_STD.
  • Anchors outside image (described in FPN).
  • ceil_mode in pooling layer .
  • Performing bilinear interpolation operator accoording to input blobs size.
  • 2017/07/31: support LargeMarginSoftmax and cpu forward psroipooling.
  • 2017/08/04: add Deeplab and PSPNet support.
  • 2017/08/10: add Deform psroipooling by lzx1413.
  • 2017/08/18: add ROIAlign support.
  • 2017/08/27: add Axpy layer for Senet support.
  • 2017/09/04: add Focal loss

Installation

  1. Clone the py-RFCN-priv repository

    git clone https://github.com/soeaver/py-RFCN-priv

    We'll call the directory that you cloned py-RFCN-priv into PRIV_ROOT

  2. Build the Cython modules

    cd $PRIV_ROOT/lib
    make
  3. Build Caffe and pycaffe

    cd $RFCN_ROOT/caffe-priv
    # Now follow the Caffe installation instructions here:
    #   http://caffe.berkeleyvision.org/installation.html
    
    # cp Makefile.config.example Makefile.config
    # If you're experienced with Caffe and have all of the requirements installed
    # and your Makefile.config in place, then simply do:
    make all -j && make pycaffe -j

    Note: Caffe must be built with support for Python layers!

    # In your Makefile.config, make sure to have this line uncommented
    WITH_PYTHON_LAYER := 1
    # Unrelatedly, it's also recommended that you use CUDNN
    USE_CUDNN := 1
    # NCCL (https://github.com/NVIDIA/nccl) is necessary for multi-GPU training with python layer
    USE_NCCL := 1

    How to install nccl

    git clone https://github.com/NVIDIA/nccl.git
    cd nccl
    sudo make install -j
    sudo ldconfig
    

License

py-RFCN-priv and caffe-priv are released under the MIT License (refer to the LICENSE file for details).

Citing

If you find R-FCN or soft-nms useful in your research, please consider citing:

@article{dai16rfcn,
    Author = {Jifeng Dai, Yi Li, Kaiming He, Jian Sun},
    Title = {{R-FCN}: Object Detection via Region-based Fully Convolutional Networks},
    Journal = {arXiv preprint arXiv:1605.06409},
    Year = {2016}
}

@article{1704.04503,
  Author = {Navaneeth Bodla and Bharat Singh and Rama Chellappa and Larry S. Davis},
  Title = {Improving Object Detection With One Line of Code},
  Journal = {arXiv preprint arXiv:1704.04503},
  Year = {2017}
}