Ubuntu16.04+caffe的安装和Py-faster-rcnn在CPU电脑的安装-2

本机安装在/home/whu/HS/caffe

https://blog.csdn.net/jx232515/article/details/72384465

第一步:

重点声明:是在cpu安装,不适用GPU.本教程caffe编译只是编译了通用caffe的Python接口(如果还需要编译MATLAB接口的,请务必先看我的后一篇博客,涉及到一个很重要的版本问题)和faster-rcnn的Python接口。gcc,g++使用的5.3版本。

基本库安装

Python的安装有两种方式:一种是系统自带的python,只需再安装相应的库即可;第二种是直接安装anaconda,很多相应的库已经包含了。第一种直接安装库文件比较简单,不需要修改相应的包含路径和库文件。选择第一种。

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev 

sudo apt-get install libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml  

可能有的同学安装报错不能获取下载地址,可以在Ubuntu的软件更新器的其他软件源全部勾选,就可以了,添加软件源。

安装图像包依赖OpenCV开源库:

因为我之前安装了opencv 2.4.10,所以这里借用 http://blog.csdn.net/zyb19931130/article/details/53842791的内容。表示感谢。

(1)从github上下载安装脚本:https://github.com/jayrambhia/Install-OpenCV

(2)进行Ubuntu/2.4目录,对所有脚本增加可执行权限

[python] view plain copy

  1. sudo chmod +x *.sh  

(3)安装依赖项

[python] view plain copy

  1. sudo ./dependencies.sh  

(4)安装opencv 2.4.9

[python] view plain copy

  1. sudo sh ./opencv2_4_9.sh 

第二:从caffe项目主页把caffe项目clone下来:

[python] view plain copy

  1. git clone --recursive https://github.com/BVLC/caffe.git  

然后:

[python] view plain copy

  1. cd caffe  
  2. cp Makefile.config.example Makefile.config  

由于是仅CPU安装,修改Makefile相关配置:

[plain] view plain copy

  1. 去掉注释CPU_ONLY :=1  
  2. 注释掉CUDA有关的行:  
  3. #CUDA_DIR := /usr/local/cuda  
  4. #CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \  
  5. #        -gencode arch=compute_20,code=sm_21 \  
  6. #        -gencode arch=compute_30,code=sm_30 \  
  7. #        -gencode arch=compute_35,code=sm_35 \  
  8. #        -gencode arch=compute_50,code=sm_50 \  
  9. #        -gencode arch=compute_50,code=compute_50  
  10. 去掉注释WITH_PYTHON_LAYER := 1  
  11. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial  
  12. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/i386-linux-gnu/hdf5/serial /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial  
  13. #TEST_GPUID := 0  

文件修改完成后,开始编译:

[python] view plain copy

  1. make all   
  2. make test  
  3. make runtest  
  4. make pycaffe  

若编译没有错误,则caffe编译成功。可以在Python环境中使用caffe。

开始在Python使用.

[python] view plain copy

  1. $cd caffe/python  
  2. $python  
  3. >>>import caffe  

出现错误:

File "caffe/io.py", line 2, in <module>
    import skimage.io
ImportError: No module named skimage.io

此时只要按照以下命令操作即可:
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags cython ipython

$ sudo apt-get update

然后回到编译caffe的目录,重新

$ make pycaffe

没报错之后,重新进行下面操作。

  1. $cd caffe/python  
  2. $python  
  3. >>>import caffe  

到这里,caffe以及Python接口都已经编译成功,配置好了。

第三:下面进行Faster-rcnn Python版的安装。

下载项目,里面包含的caffe--rcnn与第一部分的通用的caffe并不相同。

[python] view plain copy

  1. git clone --recursive  https://github.com/rbgirshick/py-faster-rcnn.git  

安装cython和easydict:

[python] view plain copy

  1. sudo pip install cython  
  2. sudo pip install easydict   

编译cython

到/py-faster-rcnn/lib/目录下修改setup.py文件,然后在/py-faster-rcnn/lib/目录下make,修改如下:

  1. #CUDA = locate_cuda()  //第一处
  2.  
  3. #self.set_executable('compiler_so', CUDA['nvcc'])  //第二处
  4.  
  5.     #Extension('nms.gpu_nms',  //第三处,就是把cuda,gpu部分修改
  6.         #['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],  
  7.         #library_dirs=[CUDA['lib64']],  
  8.         #libraries=['cudart'],  
  9.         #language='c++',  
  10.         #runtime_library_dirs=[CUDA['lib64']],  
  11.         # this syntax is specific to this build system  
  12.         # we're only going to use certain compiler args with nvcc and not with  
  13.         # gcc the implementation of this trick is in customize_compiler() below  
  14.         #extra_compile_args={'gcc': ["-Wno-unused-function"],  
  15.         #                    'nvcc': ['-arch=sm_35',  
  16.         #                             '--ptxas-options=-v',  
  17.         #                             '-c',  
  18.         #                             '--compiler-options',  
  19.         #                             "'-fPIC'"]},  
  20.         #include_dirs = [numpy_include, CUDA['include']]  
  21.     #),

编译py-faster-rcnn自带的caffe:

到/py-faster-rcnn/caffe-fast-rcnn/目录下,把Makefile.config.exampe复制并重命名为Makefile.config文件,修改Makefile.config文件

(和第一部分中的修改一样)和CMakeLists.txt文件(OFF改成ON),修改如下

[python] view plain copy

  1. caffe_option(CPU_ONLY  "Build Caffe without CUDA support" ON) # TODO: rename to USE_CUDA

然后

  1. cd ~/py-faster-rcnn/caffe-fast-rcnn  
  2. make -j8&& make pycaffe  

第四:测试demo:

首先下载训练好的模型,放在data文件下:

[plain] view plain copy

  1. cd ~/py-faster-rcnn  
  2. ./data/scripts/fetch_faster_rcnn_models.sh  
  3.  


然后修改一些文件:

A:修改/py-faster-rcnn/lib/fast_rcnn/config.py文件(True改成False)
# Use GPU implementation of non-maximum suppression
__C.USE_GPU_NMS = False

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/fast_rcnn/nms_wrapper.py文件(注释该引用,并将False改成True)
#from nms.gpu_nms import gpu_nms
def nms(dets, thresh, force_cpu=True)

最后,运行demo:

[plain] view plain copy

  1. cd ~/py-faster-rcnn  
  2. ./tools/demo.py --cpu  

但是cpu还是比较慢的。且容易内存溢出。如果我们换成zf网络模型(默认为VGG16)需要

           ./tools/demo.py   --cpu  --net zf

猜你喜欢

转载自blog.csdn.net/jx18080136806/article/details/81121155
今日推荐