最近开始做行人检测,因此开始接触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. 自学Linux Shell17.1-正则表达式

    点击返回 自学Linux命令行与Shell脚本之路 17.1-正则表达式 1. 正则表达式概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“ ...

  2. 【BZOJ2302】[HAOI2011]Problem C(动态规划)

    [BZOJ2302][HAOI2011]Problem C(动态规划) 题面 BZOJ 洛谷 题解 首先如果\(m=0\)即没有特殊限制的话,那么就和这道题目基本上是一样的. 然而这题也有属于这题的性 ...

  3. 洛谷P4043 支线剧情

    题意:给定DAG,通过每条边需要时间. 从某号点回到1号点不需要时间. 从1号点出发,求最少要多久才能走完所有边. 解: 有源汇有上下界最小费用可行流. 直接连边,费用为时间,下界为1,无上界. 每个 ...

  4. [luogu2822][组合数问题]

    题目链接 题解: 对于上面和下面的式子进行分解质因数,然后看看上面的质因数个数减去下面的质因数个数能不能达到k的质因数的要求即可. 分解质因数的时候用对于阶乘分解质因数的常用方法:比如要求1999!中 ...

  5. Android: 创建一个AlertDialog对话框,必须按确定或取消按钮才能关闭对话框,禁止按[返回键]或[搜索键]关闭

    AlertDialog.Builder builder = new Builder(this); builder.create().show(); 这样显示出来的对话框,当用户按返回键或搜索键时,这个 ...

  6. Java: |(或运算) 与 多选判断

    今天需要在程序中做一个多选判断,突然想起以前经常遇到的 x |= y | z; 这样的,我也明白这个是多选的用意,但为什么能达到我们希望的多选操作,我还真的没去研究过. 今天早上,百度了一下,搜索到了 ...

  7. 初探angular2

    Angular2 是一款开源JavaScript库,由Google维护,用来协助单一页面应用程序运行. Angular2 是 Angular 1.x 的升级版本,性能上得到显著的提高,能很好的支持 W ...

  8. 使用sass切图

    明日复明日,明日何其多!我生待明日,万事成蹉跎!ruby挺可爱的.没有进入工程项目中使用sass. 尝试是一件快乐的事情.在页面中直接引进编译出来的css即可.

  9. vs widows服务的调试

    1.使用.net 工具安装你开发好的服务 2.服务运行后在Vs中选择调试>附加到进程 4.选择安装好运行的服务,选择附加

  10. 警告: No data sources are configured to run this SQL and provide advanced code assistance. Disable this inspection via problem menu (Alt+Enter). more... (Ctrl+F1) SQL dialect is not configured. Postgr

    python3出现问题: 警告: No data sources are configured to run this SQL and provide advanced code assistance ...