最近开始做行人检测,因此开始接触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. Leetcode 28.实现strStr() By Python

    实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...

  2. 洛谷 P4148 简单题 解题报告

    P4148 简单题 题意 维护单点加与矩形求和,强制在线 说明 \(n\le 500000,m\le 200000\),\(4000ms / 20MB\) kd-tree 复杂度我不懂 是一颗平衡树, ...

  3. tjoi2018D2T2(luogu4590) 游园会 (状压dp)

    题解劝退系列 设长的那个串是A,短的那个串是B. 那我们在如果已经知道某个A的时候,A[1..i]和B[1..j]的最长公共子序列$f[i][j]=max\{f[i-1][j],f[i][j-1],f ...

  4. Fence Repair(poj3253)

    题目链接:http://poj.org/problem?id=3253 Description Farmer John wants to repair a small length of the fe ...

  5. 洛谷P3768 简单的数学题

    解: 神奇的一批......参观yyb巨神的博客. 大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积. 然后发现有个地方我们除法的除数是乘积,于是换 ...

  6. 【洛谷P1638】逛画展

    题目大意:给定 N 个数字组成的序列,求刚好拥有所有 M 种数字的最短区间. 题解:双指针算法是一种对于暴力的优化算法,对于这道题来说,一个显然的暴力是:对于序列中每一个位置 pos,计算出这个位置右 ...

  7. (转)在Eclipse中创建Maven多模块工程

    背景:以前只总结了怎么在命令行下创建maven的多模块项目,在eclipse下怎么创建不是很清楚.最近需要在git的资源库中上传多模块项目,方便后期的维护,所以将网上的资料进行整理. 原文链接:htt ...

  8. share.js一键分享到微博、QQ空间、QQ好友、微信、腾讯微博、豆瓣、Facebook、Twitter、Linkedin、Google+、点点等

    官网上面 https://github.com/overtrue/share.js非常详细的介绍了share.js他的使用 使用方式有:第一:使用 npm npm install social-sha ...

  9. ansible-playbook组件解析及操作全解

    转载于http://www.178linux.com/7001 一.ansible-playbook介绍: playbook是由一个或多个”play”组成的列表.play的主要功能在于将事先归为一组的 ...

  10. Eclipse启动时出现错误 An internal error occurred during: "Updating indexes"

    在Eclipse的workspace下有个.metadata文件夹,Eclipse出现异常的log文件就在这个目录下. 最近出现了这样的错误: 查看日志文件发现:     !ENTRY org.ecl ...