前言
安装caffe与配置环境详尽教程,针对我遇到的坑提供了一些解决办法。
这里涉及的环境配置为:ubuntu16.04,cuda8.0,cudnn5,opencv3.1。
1. 安装依赖包
1 | sudo apt-get update |
2. 复制文件,修改配置文件
1 | $ sudo apt-get install git |
-
如果采用CPU模式:
# CPU_ONLY := 1
取消注释CPU_ONLY := 1
-
使用GPU:
USE_CUDNN :=1
-
使用opencv3.0
# OPENCV_VERSION := 3
修改为:OPENCV_VERSION := 3
-
若要使用python来编写layer,则需要
# WITH_PYTHON_LAYER := 1
修改为WITH_PYTHON_LAYER := 1
-
修改hdf5
将
1 | # Whatever else you find you need goes here. |
1 | INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include |
修改为
1 | INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial |
这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径
1 | caffe$ find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \; |
1 | cd /usr/lib/x86_64-linux-gnu |
- 修改nvcc
1 | sudo gedit Makefile |
将
1 | NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS) |
替换为
1 | NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) |
- 编辑
1 | sudo gedit /usr/local/cuda/include/host_config.h |
- 注释掉高版本gcc报错
1 | #error-- unsupported GNU version! gcc versions later than 4.9 are not supported! |
改为
1 | //#error-- unsupported GNU version! gcc versions later than 4.9 are not supported! |
3. 编译caffe
1 | caffe$ find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \; |
- 编译开始:
1 | $ cd .. |
- 生成数据:
1 | caffe$ cd data/mnist |
- 处理成LDB:
1 | $ cd .. |
注意要在原始caffe下进行
- 训练开始
如果CPU:
1 | caffe$ cd examples/mnist/ |
将文件最后的solver_mode:GPU
改为solver_mode: CPU
1 | $ cd .. |
- 测试数据:
1 | caffe$ cd examples/mnist/ |
编辑的内容如下:
1 | #!/usr/bin/env sh |
注意一定是两行,注意后面-前面的空格
1 | caffe$ sudo sh ./examples/mnist/test_lenet.sh |
测试成功!
1 | caffe$ sudo make pycaffe |
不要提前make!
4. 报错问题
- 如果出现错误:
1 | python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录 |
可以:
1 | sudo apt-get install python-numpy |
成功!
- 如果import caffe找不到module:
1 | sudo gedit ~/.bashrc |
在最后面添加路径:
1 | export PYTHONPATH=/home/cherrie/caffe/python:$PYTHONPATH |
对于anaconda:
1 | LD_LIBRARY_PATH=/home/cherrie/anaconda2/lib:$LD_LIBRARY_PATH |
返回终端:
1 | source .bashrc |
使环境变量立即生效
- 如果
1 | ImportError: No module named google.protobuf.internal |
安装
1 | sudo apt install python-protobuf |
在python里面
1 | import sys |
或者永久办法:
将/usr/lib/python2.7/dist-packages
里面的google文件夹
复制到
/home/cherrie/anaconda2/lib/python2.7/site-packages
下
- import cv2找不到模块
将/usr/lib/python2.7/dist-packages
里面的cv.py cv.pyc cv2.so
复制到
/home/cherrie/anaconda2/lib/python2.7/site-packages
下