本机安装在/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
- sudo chmod +x *.sh
(3)安装依赖项
[python] view plain copy
- sudo ./dependencies.sh
(4)安装opencv 2.4.9
[python] view plain copy
- sudo sh ./opencv2_4_9.sh
第二:从caffe项目主页把caffe项目clone下来:
[python] view plain copy
- git clone --recursive https://github.com/BVLC/caffe.git
然后:
[python] view plain copy
- cd caffe
- cp Makefile.config.example Makefile.config
由于是仅CPU安装,修改Makefile相关配置:
[plain] view plain copy
- 去掉注释CPU_ONLY :=1
- 注释掉CUDA有关的行:
- #CUDA_DIR := /usr/local/cuda
- #CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
- # -gencode arch=compute_20,code=sm_21 \
- # -gencode arch=compute_30,code=sm_30 \
- # -gencode arch=compute_35,code=sm_35 \
- # -gencode arch=compute_50,code=sm_50 \
- # -gencode arch=compute_50,code=compute_50
- 去掉注释WITH_PYTHON_LAYER := 1
- INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
- 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
- #TEST_GPUID := 0
文件修改完成后,开始编译:
[python] view plain copy
- make all
- make test
- make runtest
- make pycaffe
若编译没有错误,则caffe编译成功。可以在Python环境中使用caffe。
开始在Python使用.
[python] view plain copy
- $cd caffe/python
- $python
- >>>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
没报错之后,重新进行下面操作。
- $cd caffe/python
- $python
- >>>import caffe
到这里,caffe以及Python接口都已经编译成功,配置好了。
第三:下面进行Faster-rcnn Python版的安装。
下载项目,里面包含的caffe--rcnn与第一部分的通用的caffe并不相同。
[python] view plain copy
- git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
安装cython和easydict:
[python] view plain copy
- sudo pip install cython
- sudo pip install easydict
编译cython
到/py-faster-rcnn/lib/目录下修改setup.py文件,然后在/py-faster-rcnn/lib/目录下make,修改如下:
- #CUDA = locate_cuda() //第一处
- #self.set_executable('compiler_so', CUDA['nvcc']) //第二处
- #Extension('nms.gpu_nms', //第三处,就是把cuda,gpu部分修改
- #['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']]
- #),
编译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
- caffe_option(CPU_ONLY "Build Caffe without CUDA support" ON) # TODO: rename to USE_CUDA
然后
- cd ~/py-faster-rcnn/caffe-fast-rcnn
- make -j8&& make pycaffe
第四:测试demo:
首先下载训练好的模型,放在data文件下:
[plain] view plain copy
- cd ~/py-faster-rcnn
- ./data/scripts/fetch_faster_rcnn_models.sh
然后修改一些文件:
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
- cd ~/py-faster-rcnn
- ./tools/demo.py --cpu
但是cpu还是比较慢的。且容易内存溢出。如果我们换成zf网络模型(默认为VGG16)需要
./tools/demo.py --cpu --net zf