Fast R-CNN 1.编译配置

作者: 庞贝船长 | 来源:发表于2017-03-14 16:46 被阅读1306次

    about

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

    Caffe搭好了之后,再来看这篇。

    Installation

    clone fast-rcnn

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

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

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

    Build the Cython modules

    从下文开始,我将用$FRCN_ROOT来代表上面git clone下来的文件目录路径。如直接放在home下,$FAST_ROOT被替换为/home/cap/fast-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的路径相同
    

    在完成了前面的工作后,开始编译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_fast_rcnn_models.sh
    

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

    .
    ├── caffenet_fast_rcnn_iter_40000.caffemodel
    ├── vgg16_fast_rcnn_iter_40000.caffemodel
    └── vgg_cnn_m_1024_fast_rcnn_iter_40000.caffemodel
    

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

    .
    ├── fetch_fast_rcnn_models.sh
    ├── fetch_imagenet_models.sh
    └── fetch_selective_search_data.sh
    

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

    run the demo

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

    $ sudo pip2 install easydict
    

    开始跑动demo

    cd $FRCN_ROOT
    ./tools/demo.py
    

    运行结果:
    结果跑出了3张图,这里贴出其中一张结果的效果图(很棒哟,兄弟)


    demo

    如果你的gpu性能不加,显存小于3G,那么可能出现类似如下的错误

    Loaded network /home/hadoop/fast-rcnn/data/fast_rcnn_models/vgg16_fast_rcnn_iter_40000.caffemodel
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Demo for data/demo/000004.jpg
    F0314 16:28:23.588573  5987 syncedmem.cpp:51] Check failed: error == cudaSuccess (2 vs. 0)  out of memory
    *** Check failure stack trace: ***
    Aborted (core dumped)
    
    • 解决办法:
      使用较小的网络模型
    $ cd $FRCN_ROOT
    $ ./tools/demo.py --net caffenet
    
    • 如果是你的机器不支持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,caffenet,vgg_cnn_m_1024}]
    Train a Fast R-CNN network
    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,caffenet,vgg_cnn_m_1024}
                            Network to use [vgg16]
    

    参考

    相关文章

      网友评论

      • shyern:博主你好,请问
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        Demo for data/demo/000004.jpg
        Segmentation fault(core dumped)
        Aborted (core dumped)
        我的显存是4035MB,但是出现了上述错误,应该怎么办呢?
        庞贝船长:小一点的网络跑得动吗?

      本文标题:Fast R-CNN 1.编译配置

      本文链接:https://www.haomeiwen.com/subject/deshnttx.html