操作系统:

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/tools$ cat /etc/issue
Ubuntu 14.04.2 LTS \n \l

Python版本:

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/tools$ python --version
Python 2.7.6

pip版本:

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/tools$ pip --version
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)

环境变量情况:

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/caffe-fast-rcnn$ echo $LD_LIBRARY_PATH

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/caffe-fast-rcnn$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

~/.bashrc内容,可以看到所有和PATH以及LD_LIBRARY_PATH相关的内容都没有设置:

# ~/.bashrc: executed by bash(1) for non-login shells.
# added by Anaconda2 4.0.0 installer
#export PATH="/home/bigtop/anaconda2/bin:$PATH"
#export LD_LIBRARY_PATH="/home/bigtop/anaconda2/lib/":$LD_LIBRARY_PATH
#export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu/":$LD_LIBRARY_PATH

1. 安装Caffe需要的依赖包:

sudo apt-get install build-essential  # basic requirement
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler #required by caffe

使用完上面的命令后,依赖已经安装完毕,但是由于Ubuntu 14.04版本的原因,导致opencv相关的环境不能够正常的work。所以,我重新编译了一个OpenCV,版本为3.1.0。

在解压后的目录中执行:

bigtop@bigtop-SdcOS-Hypervisor:~/tools/opencv-3.1.0$  cmake -DBUILD_TIFF=ON

然后执行make 和make install

2. 编译cafe-fast-rcnn

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/caffe-fast-rcnn$ ls
build CMakeLists.txt data examples LICENSE Makefile.config~ models scripts
caffe.cloc CONTRIBUTING.md distribute include Makefile Makefile.config.example python src
cmake CONTRIBUTORS.md docs INSTALL.md Makefile.config matlab README.md tools
bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/caffe-fast-rcnn$ pwd
/home/bigtop/py-faster-rcnn/caffe-fast-rcnn

修改这个目录下的Makefile.config(如果没有这个文件,就直接cp Makefile.config.example Makefile.config)

将CPU_ONLY := 1开关和WITH_PYTHON_LAYER开关打开:

然后在该目录下执行:make –j8 && make pycaffe

在此过程中,可能会出现各种和python相关的包缺失问题,这里记录下,以便查询:

A》将caffe-fast-rcnn/python目录下的requirements下的依赖都装一遍:

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/caffe-fast-rcnn/python$ cat requirements.txt
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0

执行如下命令:

for req in $(cat requirements.txt); do pip install $req; done

这里有一个小技巧,因为pip这个工具对应的网络非常的烂:

这个时候,可以将其改为国内的镜像网站,速度将提升几个数量级,方法如下:

新建~/.pip/pip.confg文件,内容如下:

[global]
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

或者在安装一个软件包的时候使用-i选项:

在我安装requirements.txt中涉及的依赖包的过程中,发现matplotlib始终没有安装成功,最后采用apt-get的方式进行了安装,如下:

sudo apt-get install python-matplotlib

B>opencv环境和caffe-fast-rcnn默认的Makefile配置有点小问题,cv::imread(cv:: String const&, int)找不到:

解决方案:

在一切都正常的情况下,对caffe-fast-rcnn进行make和make pycaffe的结果如下:

编译好caffe-fast-rcnn后,在py-faster-rcnn/lib中执行make命令:

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/lib$ make
python setup.py build_ext --inplace
running build_ext
skipping 'utils/bbox.c' Cython extension (up-to-date)
skipping 'nms/cpu_nms.c' Cython extension (up-to-date)
skipping 'pycocotools/_mask.c' Cython extension (up-to-date)
rm -rf build
bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/lib$

3. 在安装配置好caffe-fast-rcnn后,修改py-faster-rcnn相关配置,让其模型可以在没有GPU的环境下运行:

A>将 ~/py-faster-rcnn/lib/fast_rcnn/config.py的如下内容:

B>将 ~/py-faster-rcnn/tools/test_net.py和 ~/py-faster-rcnn/tools/train_net.py的caffe.set_mode_gpu()修改为caffe.set_mode_cpu().

C>将~/py-faster-rcnn/lib/setup.py中,含有'nms.gpu_nms’的部分去掉,去掉后的内容如下:

112 ext_modules = [
113 Extension(
114 "utils.cython_bbox",
115 ["utils/bbox.pyx"],
116 extra_compile_args={'gcc': ["-Wno-cpp", "-Wno-unused-function"]},
117 include_dirs = [numpy_include]
118 ),
119 Extension(
120 "nms.cpu_nms",
121 ["nms/cpu_nms.pyx"],
122 extra_compile_args={'gcc': ["-Wno-cpp", "-Wno-unused-function"]},
123 include_dirs = [numpy_include]
124 ),
125 Extension(
126 'pycocotools._mask',
127 sources=['pycocotools/maskApi.c', 'pycocotools/_mask.pyx'],
128 include_dirs = [numpy_include, 'pycocotools'],
129 extra_compile_args={
130 'gcc': ['-Wno-cpp', '-Wno-unused-function', '-std=c99']},
131 ),
132 ]

D>做到上面三部后,还是不够的,还需要将:

../lib/fast_rcnn/nms_wrapper.py:9:#from nms.gpu_nms import gpu_nms

注释掉:

否则,会抛出如下的异常:

Traceback (most recent call last):
File "./demo.py", line 18, in
from fast_rcnn.test import im_detect
File ".../py-faster-rcnn-master/tools/../lib/fast_rcnn/test.py", line 17, in
from fast_rcnn.nms_wrapper import nms
File ".../py-faster-rcnn-master/tools/../lib/fast_rcnn/nms_wrapper.py", line 11, in
from nms.gpu_nms import gpu_nms
ImportError: No module named gpu_nms

4. 运行demo.py

在环境一切就绪的情况下,将faster的模型下载下来:

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/data/scripts$ ls
fetch_faster_rcnn_models.sh fetch_imagenet_models.sh fetch_selective_search_data.sh

运行其中的./fetch_faster_rcnn_models.sh脚本就可以下载下来了。

在/home/bigtop/py-faster-rcnn/tools目录下运行, python demo.py --cpu:

最后的结果如下:

注意:由于我是在没有图形界面终端上运行的,默认情况下demo.py会假设运行在有图形界面的环境中,需要修改demo.py的地方如下:

首先,在demo.py代码的最前面,注意一定是最前面,否则可能不成功,加入如下两行:

其次,在plt.draw()的地方加入savefig()语句,将结果保存成jpg文件形式:

5. 其他在安装过程中遇到的问题(比较杂,记录于此),如果上面的四个步骤进行的比较顺利的话,是不会遇到下面这些问题的:

5.1 No module named skimage.io:

5.2 下面这个问题是因为缺少,easydict,使用 sudo pip install easydict可以解决:

bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/tools$ python demo.py  --cpu
Traceback (most recent call last):
File "demo.py", line 17, in <module>
from fast_rcnn.config import cfg
File "/home/bigtop/py-faster-rcnn/tools/../lib/fast_rcnn/config.py", line 23, in <module>
from easydict import EasyDict as edict
ImportError: No module named easydict
bigtop@bigtop-SdcOS-Hypervisor:~/py-faster-rcnn/tools$ sudo pip install easydict
Downloading/unpacking easydict
Downloading easydict-1.6.zip
Running setup.py (path:/tmp/pip_build_root/easydict/setup.py) egg_info for package easydict Installing collected packages: easydict
Running setup.py install for easydict Could not find .egg-info directory in install record for easydict
Successfully installed easydict
Cleaning up... sudo pip install easydict

5.3 这个问题是因为scipy安装出现问题,将其删掉:rm -fr /tmp/pip_build_root/scipy/,然后重新安装可以解决:

d --compile failed with error code 1 in /tmp/pip_build_root/scipy
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 235, in main
return command.main(cmd_args)
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 161, in main
text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 98: ordinal not in range(128)

网上有很多搭建caffe的教程,都提到了用Anaconda,本来这个包是很好的,它可以解决很多python依赖的问题,可惜的是,它和我用的Ubuntu版本兼容性出现了问题,所以,我最终放弃了Anaconda,所有的python依赖都通过pip或者是apt-get进行了安装。

5.4 报下面这个错误,是因为caffe的环境都没有准备好,很有可能是没有执行make pycaffe:

Traceback (most recent call last):
File "detector.py", line 29, in <module>
import caffe
File "/python/caffe/__init__.py", line 1, in <module>
from .pycaffe import Net
File "/caffe/pycaffe.py", line 6, in <module>
from ._caffe import CaffeNet
ImportError: No module named _caffe

5.5 error: undefined reference to `TIFFIsTiled@LIBTIFF_4.0'

error: undefined reference to `TIFFIsTiled@LIBTIFF_4.0'

这个就是上文中提到的,使用ubuntu自带的opencv库会出现的问题,解决办法就是重新编译opencv。

6. 总结

整个过程还是颇费周折,因为caffe依赖的东西太多,环境搭建费事费力,最好的办法还是弄一个docker镜像,这样才能够从环境搭建的苦海中解脱,可惜的是我从daocloud上down下来的镜像是不能够运行在cpu上的。

参考文档:

1. http://caffe.berkeleyvision.org/installation.html  caffe官方文档

2. https://github.com/BVLC/caffe/issues/1276  cv::imread(cv::String const&, int)' collect2: error

3.https://github.com/BVLC/caffe/issues/263   can't import _caffe module

4.https://github.com/rbgirshick/py-faster-rcnn/issues/8  ImportError: No module named gpu_nms

5.http://www.cnblogs.com/empty16/p/4828476.html  caffe环境搭建文章

6.https://github.com/BVLC/caffe/issues/50  make pycaffe error

7.http://blog.csdn.net/tangwei2014/article/details/45442275  Fast RCNN Ubuntu安装笔记

8.http://topmanopensource.iteye.com/blog/2004853  pip镜像加速

9. https://github.com/BVLC/caffe/issues/1276 ../lib/libcaffe.so: undefined reference to cv::imread

10. https://groups.google.com/forum/#!topic/caffe-users/wKYe45FKSqE  Installation error: undefined reference to `TIFFIsTiled@LIBTIFF_4.0'

11. https://groups.google.com/forum/#!topic/caffe-users/0PrZlro7QbU  undefined reference to `lzma_index_buffer_decode@XZ_5.0

Faster R-CNN CPU环境搭建的更多相关文章

  1. R语言开发环境搭建

    R语言开发环境搭建 一.环境 Win7 64bit系统 二.R软件下载 R 3.5.2 for Windows,官网:https://www.r-project.org/ RStudio 1.1.46 ...

  2. R 语言开发环境搭建

    R 语言在统计计算和画图方面有着显著的优势,因此在大数据领域也有其一席之地. 本文将演示怎样搭建R 语言开发环境. 搭建R 语言开发环境,主要有两个步骤: - 安装 R 到操作系统 - 安装支持 R ...

  3. Eclipse R语言开发环境搭建 StatET插件

    StatET 官网 http://www.walware.de/goto/statet Installation 点击菜单栏 help --> Install New Software 配置R语 ...

  4. 【转载】基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程(之一)——介绍、安装准备、安装、config文件以及运行脚本介绍

    基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程(之一)--介绍.安装准备.安装.config文件以及运行脚本介绍 其他 2018-0 ...

  5. Mac下R语言环境搭建

    Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...

  6. R语言开发环境的搭建

    1.R语言的下载 https://mirrors.tuna.tsinghua.edu.cn/CRAN/ 2.R语言的安装 安装完后,打开R Console 输入 pie(c(0.9, 0.2, 0.3 ...

  7. hive_学习_01_hive环境搭建(单机)

    一.前言 本文承接上一篇:hbase_学习_01_HBase环境搭建(单机),主要是搭建 hive 的单机环境 二.环境准备 1.说明 hive 的下载来源有: 官方版本:http://archive ...

  8. ubantu16.04+mxnet +opencv+cuda8.0 环境搭建

    ubantu16.04+mxnet +opencv+cuda8.0 环境搭建 建议:环境搭建完成之后,不要更新系统(内核) 转载请注明出处: 微微苏荷 一 我的安装环境 系统:ubuntu16.04 ...

  9. Win7+Eclipse+Hadoop2.6.4开发环境搭建

    Hadoop开发环境搭建 感谢参考网站:http://www.cnblogs.com/huligong1234/p/4137133.html 一.软件准备 JDK:jdk-7u80-windows-x ...

随机推荐

  1. Programming Assignment 2: Randomized Queues and Deques

    实现一个泛型的双端队列和随机化队列,用数组和链表的方式实现基本数据结构,主要介绍了泛型和迭代器. Dequeue. 实现一个双端队列,它是栈和队列的升级版,支持首尾两端的插入和删除.Deque的API ...

  2. android listview用adapter.notifyDataSetChanged()无法刷新每项的图标

    http://blog.csdn.net/caizhegnhao/article/details/41318575 今天在开发中遇到一个很奇怪的listview的问题. 这个问题情景是我的应用需要做一 ...

  3. day5----正则

    %a    本地(locale)简化星期名称     %A    本地完整星期名称     %b    本地简化月份名称     %B    本地完整月份名称     %c    本地相应的日期和时间 ...

  4. 0001-Weekly Meeting on 13th and 20th March, 2015

    13th March, 2015 (1) Nearest Neighbors Using Compact Sparse Coding  ->appearing in ICML2014       ...

  5. 单片机上的发光二极管(LED灯)

    LED(light-emitting diode),即发光二极管,俗称 LED 小灯,它的种类很多,参数也不尽相同,我们板子上用的是普通的贴片发光二极管.这种二极管通常的正向导通电压是 1.8V到 2 ...

  6. 设计模式之美:Prototype(原型)

    索引 别名 意图 结构 参与者 适用性 缺点 效果 相关模式 命名约定 实现 实现方式(一):使用一个原型管理器. 实现方式(二):使用浅拷贝实现克隆(Clone)操作. 实现方式(三):使用深拷贝实 ...

  7. Bluetooth Low Energy——蓝牙低功耗

    Android4.3(API级别18)引入内置平台支持BLE的central角色,同时提供API和app应用程序用来发现设备,查询服务,和读/写characteristics.与传统蓝牙(Classi ...

  8. [ACM_图论] ZOJ 3708 [Density of Power Network 线路密度,a->b=b->a去重]

    The vast power system is the most complicated man-made system and the greatest engineering innovatio ...

  9. iOS开发----地图与导航--定位和位置信息获取

    要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...

  10. 如何处理Android SDK无法更新问题?

    在Android开发中,最痛苦的事情就是相关库升级后,Android SDK太低,跑步起来,最最痛苦的事情就是,想更新,却因大天朝的一墙之隔,愣是没法更新.遇到这种情况怎么办呢?小编和大家分享一个解决 ...