最近开始做行人检测,因此开始接触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 != )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -;
}
Mat image;
image = imread( argv[], );
if ( !image.data )
{
printf("No image data \n");
return -;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey();
return ;
}

(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所需的库(编译器、必须库、可选库)

py-faster-rcnn + opencv3.0.0 + ubuntu16.04配置(CPU模式)的更多相关文章

  1. py faster rcnn+ 1080Ti+cudnn5.0

    看了py-faster-rcnn上的issue,原来大家都遇到各种问题. 我要好好琢磨一下,看看到底怎么样才能更好地把GPU卡发挥出来.最近真是和GPU卡较上劲了. 上午解决了g++的问题不是. 然后 ...

  2. Tensorflow1.5.0+cuda9.0+cudnn7.0+gtx1080+ubuntu16.04

    目录 Tensorflow1.5.0+cuda9.0+cudnn7.0+gtx1080+ubuntu16.04 0. 前记 1. 环境说明 2. 安装GTX1080显卡驱动 3. CUDA 9.0安装 ...

  3. Ubuntu16.04配置apache+php+mysql

    命令行配置apache input sudo apt-get install apache2 done! 命令行配置mysql 参见: MySQL install and setting 命令行配置p ...

  4. ubuntu16.04配置记录

    新开一篇随笔记录ubuntu16.04配置中遇到的坑 1.安装Bumblebee(大黄蜂) Bumblebee是一款双显卡驱动,可以关闭独显,有效控制笔记本发热 第一步:安装我们的主角Bumblebe ...

  5. Ubuntu16.04配置TOMCAT8

    基于虚拟机Ubuntu16.04配置Tomcat过程 一.安装JDK 首先要确定好要安装的jdk和tomcat版本能对的上,具体如图所示: 版本选择是Jdk1.8,首先上官网http://www.or ...

  6. ubuntu16.04配置java环境(重启后不会失效)

    ubuntu16.04配置java环境(重启后不会失效) 1.jdk的安装包(.tar.gz)拷贝到/opt目录下 mv jdk-8u144-linux-x64.tar.gz /opt 2.解压文件 ...

  7. ubuntu16.04命令行模式黑屏解决办法

    ubuntu16.04命令行模式黑屏解决办法 问题描述 在ubuntu上装Nvidia的显卡驱动,需要关闭图形界面才能安装驱动,但是,出现如下情况: 使用“ctrl+alt+F1”命令进入命令行界面是 ...

  8. 0、ubuntu16.04安装部署kvm

    ubuntu16.04安装部署kvm1.查看CPU是否支持KVM egrep "(svm|vmx)" /proc/cpuinfo 2.安装相关kvm包 sudo apt-get i ...

  9. Data - Hadoop伪分布式配置 - 使用Hadoop2.8.0和Ubuntu16.04

    系统版本 anliven@Ubuntu1604:~$ uname -a Linux Ubuntu1604 4.8.0-36-generic #36~16.04.1-Ubuntu SMP Sun Feb ...

随机推荐

  1. HGOI 20190218 题解

    /* 又是AK局... hjc又双叒叕AK了... Hmmm...我侥幸 */ Problem A card 给出无序序列a[]可以选择一个数插入到合适的位置作为一次操作,至少多少次操作后可以把序列变 ...

  2. [luogu3258][JLOI2014]松鼠的新家

    题解 我们就在\([a_i,a_{i+1}]\)的路径上都\(+1\),然后单点查询就可以了. ac代码(吸了氧才过的QwQ) # include <bits/stdc++.h> # de ...

  3. virtualenv 包管理

    创建虚拟环境: 1) pip install virtualenv 2) virtualenv  DemoEnv(虚拟环境名) 3) 此处windows和linux不同系统下的文件结构略有不同 lin ...

  4. 震惊!1MB == 1000KB??

    稍微对电脑了解一点的同学可能都知道,电脑中的单位换算是: 1KB = 1024B 1MB = 1024KB 1GB = 1024MB ... 以前,我也是这么认为的.... 最近我在Linux解压某个 ...

  5. A1091. Acute Stroke

    One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the re ...

  6. dijkstra(最短路)和Prim(最小生成树)下的堆优化

    dijkstra(最短路)和Prim(最小生成树)下的堆优化 最小堆: down(i)[向下调整]:从第k层的点i开始向下操作,第k层的点与第k+1层的点(如果有)进行值大小的判断,如果父节点的值大于 ...

  7. Java_myBatis入门写法

    一.整体步骤 1.读取全局配置文件“SqlMapConfig.xml” 2.用SqlSessionFactoryBuilder来创建一个SqlSessionFactory 3.用创建好的SqlSess ...

  8. javascript 获取鼠标在盒子中的坐标

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Study 7 —— while循环中止语句

    循环的终止语句break #用于完全结束一个循环,跳出循环体执行循环后面的语句continue #只终止本次循环,接着执行后面的循环 1. 打印0-100,截止到第6次 count = 0 while ...

  10. pip常用记录

    同电脑多版本python python2 -m pip install 包名(python2指向2.7的python.exe) 指定版本 pip install 包名==版本号 指定源 pip ins ...