Skip to content

Instantly share code, notes, and snippets.

@acmiyaguchi
Last active March 16, 2020 14:58
Show Gist options
  • Save acmiyaguchi/bc535ba23eabd3564edd73e491763d50 to your computer and use it in GitHub Desktop.
Save acmiyaguchi/bc535ba23eabd3564edd73e491763d50 to your computer and use it in GitHub Desktop.
py-faster-rcnn on Ubuntu 17.10 and Cuda 9.0

Instructions

  • install cuda-9.0 (https://developer.nvidia.com/cuda-toolkit-archive)
  • install cudnn-7 (https://developer.nvidia.com/cudnn)
  • install dependencies for caffe
    • see the caffe installation guide [1] and wiki page [2]
  • install boost-1.65 or higher (http://www.boost.org/users/history/version_1_65_1.html) [3]
  • update caffe-fast-rcnn
    • Easiest way is to use a rebased branch on BVLC/master. See the notes below if you would rather merge the changes yourself.
    $ cd $FRCN_ROOT/caffe-fast-rcnn
    $ git remote add acmiyaguchi https://github.com/acmiyaguchi/caffe-fast-rcnn.git
    $ git checkout acmiyaguchi/faster-rcnn-rebased
    
    • optional: rebase against upstream master
    $ git remote add caffe https://github.com/BVLC/caffe.git
    $ git rebase caffe/master
    
  • set variables in Makefile.config
    • USE_CUDNN := 1
    • WITH_PYTHON_LAYER := 1
    • OPENCV_VERSION := 3
    • CUSTOM_CXX := g++-6
      • I symlink gcc-6 and g++-6 to gcc and g++ in /usr/local/cuda-9-0/bin/ instead of this setting, but either should work
    • remove compute_20 from CUDA_ARCH since it's been depreciated in cuda-9-0
    • add hdf5 for linking since it's been renamed in 17.10
      • INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/include/hdf5/serial/
      • LIBRARY_DIRS := $(PYTHON_LIB) /usr/lib/x86_64-linux-gnu/hdf5/serial/
  • build caffe
    • make -j${N_THREADS} all && make pycaffe
  • change self.param_str_ to self.param_str in $FRCN_ROOT/lib/rpn/proposal_layer.py.
    • see rebased-caffe.patch below for the full diff
  • validate that ./tools/demo.py works

Notes on Rebasing

BVLC/caffe and rbgirshick/caffe have diverged since this workaround [4] in March 2017. I've rebased the faster-rcnn patchset against the master caffe branch for convenience. [5]

This branch should merge cleanly into BVLC/caffe with the exception of the license.

If you rather merge the upstream changes yourself, the patch in [6] should outline the changes you need afterwards. -X theirs may not be the best merge policy. In particular, changes to the src/caffe/caffe.proto schema will overwrite the ROIPoolingParameter.

rebased-caffe.patch

diff --git a/lib/rpn/proposal_layer.py b/lib/rpn/proposal_layer.py
index b157160..e6d28cc 100644
--- a/lib/rpn/proposal_layer.py
+++ b/lib/rpn/proposal_layer.py
@@ -23,7 +23,7 @@ class ProposalLayer(caffe.Layer):
 
     def setup(self, bottom, top):
         # parse the layer parameter string, which must be valid YAML
-        layer_params = yaml.load(self.param_str_)
+        layer_params = yaml.load(self.param_str)
 
         self._feat_stride = layer_params['feat_stride']
         anchor_scales = layer_params.get('scales', (8, 16, 32))
@hualei-hualei
Copy link

@acmiyaguchi Thank you very much. This report helps me to solve my problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment