Faster R-CNN 1.编译配置

about

近期在做一个Object Detective的项目,这里用的是Caffe,如果同学你还没装上Caffe的话,可以参考我之前写的文章:
Ubuntu 14.04LTS + Caffe+ CUDA8.0 + OpenCV 3.1.0 + cuDNN 8.0

Caffe搭好了之后,再来看这篇。(这与之前Fast R-CNN 1.编译配置的搭建差不多,近乎一样)

Installation

clone py-faster-rcnn

这里,我们先下载Ross Girshick大神在Github上的一个库。

# Make sure to clone with --recursive
$ git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

如大神所言,记得加上–recursive

Build the Cython modules

从下文开始,我将用$FRCN_ROOT来代表上面git clone下来的文件目录路径。如直接放在home下,$FAST_ROOT被替换为/home/cap/py-faster-rcnn(注意,此处的cap是我的用户名,应该换成你自己的)

$ cd $FRCN_ROOT/lib
$ make

Build Caffe and pycaffe

在编译之前,先来做下准备工作。

  • $FRCN_ROOT/caffe-fast-rcnn目录下的Makefile.config.example文件复制一份,重命名为Makefile.config

  • 修改Makefile.config的相关项

...
USE_CUDNN = 1        //此项默认是关闭的,若你安装了cudnn,则把前面的#去掉,让其支持cudnn.
WITH_PYTHON_LAYER = 1      //这项默认也是关闭的,应该打开,去掉前面的#
USE_PKG_CONFIG = 1        //此项默认也是关闭的,应该打开,去掉前面的#
# CPU_ONLY := 1      //此项默认是关闭的,如果你的机器不支持gpu计算,则将其打开,去掉前面的注释
CUDA_DIR := /usr/local/cuda    //注意此项,应该和你安装的cuda的路径相同
OPENCV_VERSION := 3      //此项默认也是关闭的,应该打开,去掉前面的#
BLAS := atlas        //我不太确定这项是什么,貌似与先前搭建Caffe时有关,在此处选择默认的,即不用修改

在完成了前面的工作后,开始编译pycaffe。

$ cd $FRCN_ROOT/caffe-fast-rcnn
$ make -j8 && make pycaffe
  • 编译pycaffe时,我的机器报错了
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so
/usr/bin/ld: cannot find -lippicv
collect2: error: ld returned 1 exit status
make: *** [.build_release/lib/libcaffe.so] Error 1
  • 解决方法:
    把OpenCV下的libippicv.a文件复制到/usr/local/lib目录下,然后重新编译pycaffe。具体操作如下:
    复制libippicv.a文件
$ cd /usr/local/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64
$ sudo cp libippicv.a /usr/local/lib

然后重新编译pycaffe

$ cd $FRCN_ROOT/caffe-fast-rcnn
$ make clean            #清除前面的
$ make -j8 && make pycaffe

Download pre-computed Fast R-CNN detectors

此处是下载一些训练模型,在这篇博客里,我们先用作者已经训练好的caffe模型,看下fast-rcnn的效果:

$ cd $FRCN_ROOT
$ ./data/scripts/fetch_faster_rcnn_models.sh

下载完后,在$FRCN_ROOT/data/faster_rcnn_models下有2个模型,分别为

.
├── VGG16_faster_rcnn_final.caffemodel
└── ZF_faster_rcnn_final.caffemodel

$FRCN_ROOT/data/scripts下,有三个shell(即.sh)文件

.
├── fetch_faster_rcnn_models.sh
├── fetch_imagenet_models.sh
└── fetch_selective_search_data.sh

此处引用楼燚航同学的介绍:
第一是作者训练好的faster_rcnn模型,第二个是imagenet_model上预训练好的模型,第三个对应着的是作者基于Pascal VOC数据集提取的selective_search预选框。如果想要看一下faster rcnn的效果,可以直接加载Ross训练好的faster_rcnn模型,如果要自己训练的话,记得加载imagenet模型

run the demo

在开始前,你可能需要先安装相关的Python module

$ sudo pip2 install easydict
$ sudo pip2 install pyyaml

开始跑动demo

cd $FRCN_ROOT
./tools/demo.py

如果你的gpu性能不加,那么可能出现类似如下的错误

Loaded network /home/hadoop/py-faster-rcnn/data/faster_rcnn_models/VGG16_faster_rcnn_final.caffemodel
F0319 16:20:55.433835 29960 relu_layer.cu:26] Check failed: error == cudaSuccess (9 vs. 0)  invalid configuration argument
*** Check failure stack trace: ***
Aborted (core dumped)
  • 解决办法:
    使用较小的网络模型
$ cd $FRCN_ROOT
$ ./tools/demo.py --net zf
  • 如果是你的机器不支持GPU,那么记得在前面的Makefile.config文件去掉 # CPU_ONLY := 1 前面的#,使用CPU计算,然后此处跑动demo时,敲入
$ cd $FRCN_ROOT
$ ./tools/demo.py --cpu
  • 想了解更多的操作,敲入
$ cd $FRCN_ROOT
$ ./tools/demo.py -h
usage: demo.py [-h] [--gpu GPU_ID] [--cpu] [--net {vgg16,zf}]
Faster R-CNN demo
optional arguments:
  -h, --help        show this help message and exit
  --gpu GPU_ID      GPU device id to use [0]
  --cpu             Use CPU mode (overrides --gpu)
  --net {vgg16,zf}  Network to use [vgg16]

参考

  • Ross Girshick大神在Github上的搭建说明
    原文作者:庞贝船长
    原文地址: https://www.jianshu.com/p/e962dae98d31
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞