在Ubuntu系统、GPU模式下运行Fast R-cnn代码

来源:互联网 发布:配乐朗诵录音软件 编辑:程序博客网 时间:2024/06/07 10:16

具体步骤
1.安装并配置好caffe及python接口(前提工作)
读者可以参考我的另一篇博客http://blog.csdn.net/tilltheworldend/article/details/78848334

2.从Github上下载Fast R-cnn的源代码
使用下载命令:
git clone –recursive https://github.com/rbgirshick/fast-rcnn.git
必须加上–recursive,才能递归下载所有相关链接中的内容。

3.下载一些基础软件
依次执行以下命令:
sudo apt-get install python-pip

sudo pip install cythonsudo apt-get install python-opencv    sudo pip install easydict    如安装不成功,请确认机器是否能上网。若能上网但仍安装不成功,请打开“软件和更新”更改软件源。

4.安装atlas
sudo apt-get install libatlas-base-dev

5.生成Cython模块
进入fast-rcnn目录下的lib,输入
cd <自己的安装目录>/fast-rcnn/lib

    编译,输入:    make    根据提示有可能需输入make install

6.编译caffe和pycaffe
进入fast-rcnn/caffe-fast-rcnn目录
cd <自己的安装目录>/fast-rcnn/caffe-fast-rcnn

将Makefile.config.example 模板复制一份为Makefile.config cp Makefile.config.example Makefile.config打开Makefile.config修改配置    我们是在仅GPU下运行代码的,所以:    USE_CUDNN:=1,这个选项默认情况下时关闭的,把它打开# CPU_ONLY := 1 我们用到了GPU,保留前面的#。WITH_PYTHON_LAYER = 1,这个在默认情况下也是关闭的,Fast RCNN需要支持Python接口,因此需要打开。将    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include        LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib改为  INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial         LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial USE_PKG_CONFIG=1记得打开,要不然会找不到一些库文件,PKG是linux用来管理库文件的。保存后输入命令:make -j8 && make pycaffe这一步过程中,我的电脑上出现了不能找到lippicv的错误,安装过opencv的同学可能会出现这个报错。解决方法为:把OpenCV下的libippicv.a文件复制到/usr/local/lib目录下,然后重新编译pycaffe。具体操作如下:cd <自己opencv的安装目录>/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64sudo cp libippicv.a /usr/local/lib这一步我的电脑还出现了一个错误,具体报错及可参见这篇博客http://blog.csdn.net/jmt330/article/details/78568876。根据这篇博客的分析,是因为作者发布fast-rcnn源码时的caffe版本较低,与当前cudnn版本不匹配(本人的cudnn版本为7.0.5),解决方法是把caffe-fast-rcnn里与cudnn有关的cpp文件和hpp文件全部替换为编译的caffe文件里与cudnn有关的cpp文件和hpp文件。但是我并没有在caffe-fast-rcnn里找到cudnn_xx的hpp文件。根据http://blog.csdn.net/jmt330/article/details/78568876这篇博客所说的,应该在<fast-rcnn的安装目录>/include/caffe/目录下有一个layers文件夹,里面包含这八个hpp文件,但是没有layers文件夹。

这里写图片描述
这里写图片描述

在fast-rcnn的根目录下也搜不到那8个hpp文件。

这里写图片描述

后来本人尝试了将能替换的文件进行替换,又把<caffe的安装目录>/include/caffe/下的layers文件夹拷贝到了<fast-rcnn的安装目录>/caffe-fast-rcnn/include/caffe/,最后编译成功。具体操作如下:将<caffe的安装目录>/include/caffe/util下的cudnn.hpp文件替换到<fast-rcnn的安装目录>/include/caffe/util下的cudnn.hpp文件。将<caffe的安装目录>/src/caffe/util下的cudnn.cpp文件替换到<fast-rcnn的安装目录>/src/caffe/util下的cudnn.cpp文件。将<caffe的安装目录>/include/caffe/下的layers文件夹替拷贝到<fast-rcnn的安装目录>/include/caffe/下。将<caffe的安装目录>/src/caffe/layers下的cudnn_xx.cpp和cudnn_xx.cu文件替换到<fast-rcnn的安装目录>/src/caffe/layers下的cudnn_xx.cpp和cudnn_xx.cu文件(共16个)。如果读者嫌麻烦,不用cudnn跑也是完全可以的,只需将#USE_CUDNN:=1的#保留就行了。解决完所有报错后,然后重新编译,依次执行以下命令:cd <自己的安装目录>/FRCN_ROOT/caffe-fast-rcnnmake cleanmake -j8 && make pycaffe

7.下载pre-computed Fast R-CNN detectors
依次输入以下命令:
cd <自己的安装目录>/fast-rcnn

./data/scripts/fetch_fast_rcnn_models.sh本人的电脑开始出现了连接不上主机的问题,后来不知怎么就没有这个问题了,本人猜测是主机服务器那边的问题,读者可在不同时段多次尝试一下。

8.运行demo
依次执行以下命令:
cd <自己的安装目录>/fast-rcnn/tools

./demo.py --gpu 0 --net caffenet 运行demo的时候,可以指定gpu或cpu的模式,也可以指定使用哪个网络进行测试。比较方便。如果你的内存不够大的话,运行大的网络可能会出现核心已转储的提示。如果你的电脑上只有一块gpu的话,那这块GPU的ID一般为0。但是我用GPU跑的时候,感觉比用CPU还慢,GPU大概跑了一分钟,CPU十几秒的样子就出来了,不知道是什么原因。

运行结果:
这里写图片描述
这里写图片描述
这里写图片描述

原创粉丝点击