注:此文档适用于没有root权限的服务器上安装caffe,但是对于faster-rcnn需要root权限才能完成依赖安装
注:安装caffe的过程可能十分漫长,希望大家一定要平心静气,一步一步分析问题
首先,在目标路径下克隆库并操作Makefile,并安装nccl库(faster-rcnn依赖):
git clone https://github.com/BVLC/caffe.git
cd ~/caffe
cp Makefile.config.example Makefile.config
# 这里需要安装bottom-up的依赖库,必须要sudo权限
git clone https://github.com/NVIDIA/nccl.git && cd nccl && sudo make install -j4 && sudo ldconfig
在Makefile.config里面需要对以下地方进行更改:
-
# cuDNN acceleration switch (uncomment to build with cuDNN). USE_CUDNN := 1 # 取消注释 USE_OPENCV := 0 # 遗漏了这行会报错,不过可以解决。一般opencv版本都为3以上,需要取消注释下面这句话 OPENCV_VERSION := 3 WITH_PYTHON_LAYER := 1 USE_NCCL := 1
-
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_50,code=sm_50 \ -gencode arch=compute_52,code=sm_52 \ -gencode arch=compute_60,code=sm_60 \ -gencode arch=compute_61,code=sm_61 \ -gencode arch=compute_61,code=compute_61 # 删掉了上面的这两行:-gencode arch=compute_20,code=sm_20 与 -gencode arch=compute_20,code=sm_21, 不删会报错
-
# 使用anaconda作为python目录最方便,特别针对没有root权限的情况 ANACONDA_HOME := $(HOME)/anaconda/envs/python2 # 这里可以指定自己的环境,非常方便 PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ # 可以自己手动检查一下是否存在这个目录 $(ANACONDA_HOME)/include/python2.7 \ # 这个位置如果错了,在make pycaffe会报错找不到Python.h $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include PYTHON_LIB := $(ANACONDA_HOME)/lib # 遗漏了这行也会报错
最后编译即可:
make all -j $(($(nproc) + 1)) # 使用server上的最大资源完成编译
# make runtest -j $(($(nproc) + 1))
make pycaffe -j $(($(nproc) + 1))
其中在import caffe时可能会报错,因为有些库可能没有安装,包括但并不仅限于以下:
# 以下为caffe需要用到的库
conda install scikit-image
conda install protobuf
# 以下为bottom-up需要用到的库
conda install Cython
conda install opencv
pip install easydict # 千万不能执行conda install easydict, 新版本存在莫名其妙的问题,会出bug(找了好久。。。)
pip install pyyaml==3.10 # 这条没太大影响, conda装也可以。不过建议装最旧的版本
安装完caffe后,遇到了以下错误:
- 某个.so找不到(跟opencv相关,这里问题截图找不到了,借用一下别人的)
解决方法:首先去对应的anaconda下查找是否存在该so文件(一般情况下都存在,若不存在则装opencv即可),然后需要执行这句话,添加库:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xx/anaconda3/lib
- 在import时出错:ImportError: No module named _caffe,如下所示:
解决方法:项目 python路径到环境变量即可
export PYTHONPATH=/home/xx/anaconda/python:$PYTHONPATH
本文案参考自一下作者,并特别表示感谢: