linux服务器端 + cuda10 + anaconda3 + py35 + opencv3 之 caffe安装
本文算是caffe踩坑记录,折腾了两天,最终解决了,欣喜之余赶紧记录一波。
前提条件:
- 已安装cuda
, 但cudnn没有安装(因为没权限)- 更正,使用
conda install cudnn
即可安装,编译caffe的时候打开cudnn加速也是可以的
- 更正,使用
- 无法使用sudo权限
- 没有图形界面,是服务器端
0. 如何查看版本号
- 查看cuda版本
1
cat /usr/local/cuda/version.txt
- 查看cudnn版本
1
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
- 查看python版本
1
python -V
- 查看opencv版本
1
2
3进入python
import cv2
cv2.__version__
1. 安装anaconda
上官网 https://www.anaconda.com/distribution/
, 选择对应的anaconda版本,这里我选择的是linux + python 3.7 版本,使用wget进行下载:
1 | wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh |
然后进行安装 sh Anaconda3-2019.03-Linux-x86_64.sh
,注意记得修改安装路径,一般不建议装到/
里,因为linux系统挂载方式决定了/
相当于是win的C盘,最好是放在/data*/
里面。
完成后修改用户环境变量vim ~/.bashrc
,在文件末尾添加anaconda3的安装路径,例如:1
2# add anaconda env
export PATH=/data*/***/tool/anaconda3/bin:$PATH
接着更新环境变量source ~/.bashrc
2. 安装编译环境
- 新建虚拟环境
如果不想多个项目依赖冲突,还是建立个虚拟环境把各个项目给隔开吧这里1
conda create -n caffe_py35 python=3.5
-n
代表命名,python=3.5
规定python的版本号
conda env list
输出所有虚拟环境名conda activate XXX
激活XXX环境conda deactivate
关闭已激活的XXX环境conda remove -n XXX --all
删除XXX环境
因此此处键入conda activate caffe_py35
,激活python3.5环境,这是终端应该会显示(caffe_py35)xxx@xxx: xxx$
,查看python的版本号也可以发现,是py35版。
- 安装opencv
1 | conda install opencv |
这里py35对应的是opencv3,所以也不需要刻意规定opencv的版本,可通过查看opencv版本的方法判断是否成功安装。
3. 编译caffe
进入
caffe_py35
虚拟环境找个好地方把caffe源码git下来,不知道是下在release版,还是直接git好,这里我就直接git了
1
git https://github.com/BVLC/caffe.git
进入caffe目录,配置
Makefile.config
巨坑预警
这里把自带的config复制过来1
cp Makefile.config.example Makefile.config
在它的基础上进行修改。这时候你得仔细阅读其中的每一项,找到有关python和anaconda的行,进行修改操作,修改总结一下,大致有6处:
1 | # Uncomment if you're using OpenCV 3 |
1 | # CUDA architecture setting: going with all of them. |
1 | # NOTE: this is required only if you will compile the python interface. |
1 | # Uncomment to use Python 3 (default is Python 2) |
1 | # Whatever else you find you need goes here. |
这里我把我的Makefile.config
贴出来供大家参考:
1 | ## Refer to http://caffe.berkeleyvision.org/installation.html |
- make
- make clean
- make all
- make test
- make runtest
- make pycaffe
看到一切都是 - RUN OK - ,舒服了
- 添加caffe到环境变量
vim ~/.bashrc
,在末尾加入1
export PYTHONPATH=/data*/***/tool/caffe/python
- import caffe的坑
- ImportError: No module named google.protobuf.internal
到anaconda的bin文件夹下使用pip install protobuf
,千万不要直接conda install,不然会没用的。 - ImportError: No module named ‘skimage’
同样地,到anaconda的bin里面使用pip install scikit-image
- ImportError: libhdf5.so.101: cannot open shared object file: No such file or directory
到环境依赖~/.bashrc
里面进行修改,把在Makefile.config里面的libhdf5路径复制进去:记得1
export LD_LIBRARY_PATH="/data*/***/tool/anaconda3/lib":$LD_LIBRARY_PATH
source ~/.bashrc
下。
- ImportError: No module named google.protobuf.internal
4. 参考资料与致谢
- http://yingshu.ink/2017/01/12/Python3-5-Anaconda3-Caffe%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A1%86%E6%9E%B6%E6%90%AD%E5%BB%BA/
- https://blog.csdn.net/sinat_35406909/article/details/84198140
- https://blog.csdn.net/yhaolpz/article/details/71375762
- https://www.jianshu.com/p/1e405b9fe973
- https://blog.csdn.net/u011534057/article/details/51659999