• py-faster-rcnn + opencv3.0.0 + ubuntu16.04配置(CPU模式)


    最近开始做行人检测,因此开始接触faster-rcnn,这里贴上配置教程(亲测可行),不过是基于cpu的,蓝瘦。。。

    参考博客:http://www.tuicool.com/articles/nYJrYra(opencv配置)

                  http://blog.csdn.net/sinat_17196995/article/details/53410292(faster-rcnn配置)

    环境:ubuntu16.04

    一、首先要配置好opencv

    这里我是在opencv官网上下载了opencv-3.0.0-rc1(版本最好3.0.0以上),然后开始安装opencv所需的库(编译器、必须库、可选库)

    1 [compiler] sudo apt-get install build-essential
    2 [required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    3 [optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

    然后开始编译opencv,将下载得到的opencv3.0.0解压:

    unzip opencv- 3.0. 0-rc1. zip

    创建编译目录,编译:

    cd ~/opencv-3.0.0-rc1
    mkdir release
    cd release
    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
    make
    sudo make install

    最后测试一下我们的opencv:

    (1)创建工作目录

    mkdir ~/opencv-lena
    cd ~/opencv-lena
    gedit DisplayImage.cpp

    (2)编辑如下代码:

    #include <stdio.h>
    #include <opencv2/opencv.hpp>
    using namespace cv;
    int main(int argc, char** argv )
    {
        if ( argc != 2 )
        {
            printf("usage: DisplayImage.out <Image_Path>
    ");
            return -1;
        }
        Mat image;
        image = imread( argv[1], 1 );
        if ( !image.data )
        {
            printf("No image data 
    ");
            return -1;
        }
        namedWindow("Display Image", WINDOW_AUTOSIZE );
        imshow("Display Image", image);
        waitKey(0);
        return 0;
    }

    (3)创建CMake编译文件:

    gedit CMakeLists.txt

     在其中输入如下内容:

    cmake_minimum_required(VERSION 2.8)
    project( DisplayImage )
    find_package( OpenCV REQUIRED )
    add_executable( DisplayImage DisplayImage.cpp )
    target_link_libraries( DisplayImage ${OpenCV_LIBS} )

    (4)编译

    cd ~/opencv-lena
    cmake .
    make

    (5)执行

    此时opencv-lena文件夹中已经产生了可执行文件DisplayImage,下载lena.jpg放在opencv-lena下,运行下面命令:

    ./DisplayImage lena.jpg

    (6)结果:

    二、开始配置CPU模式的py-faster-rcnn:

    第一步:下载源码和demo模型数据 

    先cd到你想保存的目录,然后运行
    git clone –recursive https://github.com/rbgirshick/py-faster-rcnn.git 

    (这里注意一下,最好用clone命令,因为我自己尝试过几次在github官网上下载它,下载文件不全,没有caffe-fast-rcnn文件,完整的文件大小在40M左右)
    在下载好的py-faster-rcnn的文件夹下运行 
    ./data/scripts/fetch_faster_rcnn_models.sh 
    模型数据下载。

    第二步:编译cpython模块 
    进入lib文件夹下,首先修改下set.py文件的内容,注释掉 
    GPU的相关代码。参考如下:(…表示中间又不用注释跳过去的内容) 
    … 
    #CUDA = locate_cuda() 
    … 
    # self.set_executable(‘compiler_so’, CUDA[‘nvcc’]) 
    … 
    # Extension(‘nms.gpu_nms’, 
    # [‘nms/nms_kernel.cu’, ‘nms/gpu_nms.pyx’], 
    # library_dirs=[CUDA[‘lib64’]], 
    # libraries=[‘cudart’], 
    # language=’c++’, 
    # runtime_library_dirs=[CUDA[‘lib64’]], 
    # # this syntax is specific to this build system 
    # # we’re only going to use certain compiler args with nvcc and not with 
    # # gcc the implementation of this trick is in customize_compiler() below 
    # extra_compile_args={‘gcc’: [“-Wno-unused-function”], 
    # ‘nvcc’: [‘-arch=sm_35’, 
    # ‘–ptxas-options=-v’,** 
    # ‘-c’, 
    # ‘–compiler-options’, 
    # “’-fPIC’”]}, 
    # include_dirs = [numpy_include, CUDA[‘include’]] 
    # ), 
    … 
    修改完之后保存退出,在lib目录下执行 make命令。

    第三步:修改faster-rcnn编译文件 
    进入caffe-fast-rcnn目录,首先执行cp Makefile.config.example Makefile.config 
    大部分跟caffe安装一样,下面修改Makefile.config 
    参考如下: 
    # USE_CUDNN := 1 注意这里一定要注释掉,下面显示的是不用注释的部分。 (这里有关路径可以参照当时自己配置好的caffe中的路径来)
    … 
    CPU_ONLY := 1 
    … 
    BLAS := atlas 
    BLAS_INCLUDE := /usr/include/atlas-x86_64-base (这里每个人可能不一样,按照自己的路径来就行)
    BLAS_LIB := /usr/lib64/atlas 
    … 
    PYTHON_INCLUDE := /usr/include/python2.7  
    /usr/lib64/python2.7/site-packages/numpy/core/include   (这里要注意一点,因为可能大多数都用的anaconda的IDE,那么路径就要改为n你anaconda的路径,并且你在后面运行faster-rcnn,如果它提示你缺少什么库,你就用pip下载那个库,还要放到anaconda的site-packages,才算在anaconda中导入了这个库
    … 
    PYTHON_LIB := /usr/lib64 
    … 
    WITH_PYTHON_LAYER := 1 
    … 
    INCLUDE_DIRS := (PYTHONINCLUDE)/usr/includeLIBRARYDIRS:=(PYTHON_LIB) /usr/lib64  
    … 
    BUILD_DIR := build 
    DISTRIBUTE_DIR := distribute 


    然后运行 cd /home/**(您服务器的名字)/py-faster-rcnn/caffe-fast-rcnn 
    mkdir build 
    cd build 
    cmake .. 
    make -j8 
    make test 
    make runtest -j8 
    make pycaffe 
    以上是检验你的caffe和Python接口编译有没有问题。

    (补充一点,由于不用gpu,所以你在运行runtest估计会出错,关于gpu的错误,可以不用执行这一步)

    第四步:运行demo 
    在tools文件下 运行 ./demo.py –cpu 
    如果报错,缺少一些东西,可能是一些库文件没有下载,根据错误提示下载就好。 
    如果提示一下错误:ImportError: No module named gpu_nms 
    不要着急,在py-faster-rcnn下搜索nms_wrapper.py打开它修改 
    force_cpu =True 
    也建议把nms_wrapper.py的第9行 from nms.gpu_nms import gpu_nms 注释掉。然后运行demo,等一会就出来一些标记目标的图片,就成功啦。

    最后的最后,配置cpu的前提是你的机子内存要大,至少要8g,楼主的4g根本跑不起来demo(提示说核心已转储,就是说内存访问超出边界,内存不够,或许缩小点图片或者换个网络可以,但终究太慢太慢),所以这个cpu配置仅供参考。。。。

    安装opencv所需的库(编译器、必须库、可选库)

  • 相关阅读:
    Java多线程编程核心技术---对象及变量的并发访问(二)
    Java多线程编程核心技术---对象及变量的并发访问(一)
    Java多线程编程核心技术---Java多线程技能
    普通浏览器GET请求与Ajax的GET请求的区别
    【python】-- 面向对象引子、概念
    【python】-- json & pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess
    【python】-- 内置函数、软件目录开发规范(代码编码风格)
    【python】-- 装饰器、迭代器、生成器
    【python】-- 递归函数、高阶函数、嵌套函数、匿名函数
    【python】-- 函数非固定参数,返回值(return)
  • 原文地址:https://www.cnblogs.com/zf-blog/p/6649612.html
Copyright © 2020-2023  润新知