ubantu 16.04 配置caffe问题总结
ubantu 16.04配置caffe 网上的教程很多,相信大家都会遇到了很多问题,这里记录下解决的过程,一是供大家参考,二则方便以后自己查看回忆。
依赖项
1、sudo apt-get update
2 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
3 sudo apt-get install --no-install-recommends libboost-all-dev
4 sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
5 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
为了方便,综合为一条命令:
sudo apt-get update && sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler –no-install-recommends libboost-all-dev libopenblas-dev liblapack-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
cuda和cudnn的安装
cda和cudnn的安装,去官网下载cuda,然后下载cudnn,注意的是cudnn的版本一定要与cuda的版本一致,cuda最好下载runfile,避免各种未知的错误。
- cuda安装比较简单,下载的runfile时候就有安装的命令,安装时候除了driver不要安装外,其他的直接enter或者yes即可,最后一定跑一下demo,验证通过才能肯定安装成功。nvcc -V可查看版本,最后注意配置cuda环境变量。
- cudnn安装也一样,最主要的也是最后的demo一定要验证通过,否则也和我一样后面编译caffe的时候各种错误。
编译opencv
1、mkdir build
2、cd build
3、cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
//为了方便可以把前面几步综合为一条命令:
mkdir build && cd build && cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
4、sudo make
5、sudo make install
在第3条命令时候报错如下:
CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file):
file DOWNLOAD HASH mismatch
for file: [/home/lammy/a-lammy-softwares/opencv-3.1.0/3rdparty/ippicv/downloads/
linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz]
expected hash: [808b791a6eac9ed78d32a7666804320e]
actual hash: [d41d8cd98f00b204e9800998ecf8427e]
status: [7;"Couldn't connect to server"]
Call Stack (most recent call first):
3rdparty/ippicv/downloader.cmake:110 (_icv_downloader)
cmake/OpenCVFindIPP.cmake:237 (include)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
主要原因是在下载ippicv压缩包时候网络原因未下载下来,大家可以连接vpn下载或者csdn中ippicv_linux_20151201.tgz:,下载完成了后,放在下面目录 ,继续执行第3、4、5命令即可。:
/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e
caffe安装
caffe下载:
git clone https://github.com/BVLC/caffe.git
编译caffe
进入caffe的根目录,拷贝makefile并编辑配置。
1、cp Makefile.config.example Makefile.config
2、 gedit Makefile.config
// 综合为一个命令
cp Makefile.config.example Makefile.config && gedit Makefile.config
配置Makefile.config(打开表示去掉前面的 ‘#’,注释表示 加上前面的’#‘,cpu 或者gpu只能用一个)
cpu环境:
- 注释USE_CUDNN := 1
打开 CPU_ONLY := 1
gpu:
- 打开USE_CUDNN := 1
注释 CPU_ONLY := 1
打开并配置CUDA_DIR := /usr/local/cuda
opencv
打开 OPENCV_VERSION := 3
python接口:需要配置python的lib库和include地址,并打开WITH_PYTHON_LAYER
#非annaconda
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/lib/python3.5/dist-packages/numpy/core/include
PYTHON_LIB := /usr/lib
ANACONDA_HOME := $(HOME)/anaconda
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
# $(ANACONDA_HOME)/include/python2.7 \
# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
WITH_PYTHON_LAYER := 1
注意:anconda home的配置:
1、利用conda create -n caffe-py2.7 python=2.7
创建了环境,则必须设置为 创建的环境中python的根目录:ANACONDA_HOME := $(HOME)/lammy/a-lammy-softwares/anaconda3/envs/caffe-py2.7
.
2、利用conda的根目录环境:ANACONDA_HOME := $(HOME)/lammy/a-lammy-softwares/anaconda3
matlab接口:配置matlab的安装位置
MATLAB_DIR := /usr/local
添加 hdf5库
# Whatever else you find you need goes here.
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
修改makefile文件
将
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
修改 /usr/local/cuda/include/host_config.h 文件 :
将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
编译
make all -j8
make pycaffe
配置caffe python路径,方便import caffe
export PYTHONPATH=/home/lammy/a-lammy-softwares/caffe/python
错误一:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such
file or directory
solution:这个错误一般是python的环境配置错误,我用的anaconda,因此conda的home环境配置很重要,
我修改为:
ANACONDA_HOME := /home/lammy/a-lammy-softwares/anaconda3/envs/caffe-py2.7
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
PYTHON_LIB := $(ANACONDA_HOME)/lib
注意:原来是 $(HOME),后来修改为/home/...等绝对路径
错误二:
//home/idc/anaconda3/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9'
这个错误也是安装anaconda导致的一些库找不到
solution:在makefile.config中添加:
LINKFLAGS := -Wl,-rpath,$(ANACONDA_HOME)/lib
错误三:
/usr/bin/ld: cannot find -lcblas /usr/bin/ld: cannot find -latlas collect2:
cd /usr/lib
发现只有libblas.so.3 而没有libcblas.so 和 libatlas.so 则为其创建连接:
sudo ln -s libblas.so.3 libcblas.so
sudo ln -s libblas.so.3 libatlas.so
错误四:
python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: No such file or directory
solution:sudo apt-get install python-numpy
错误五:ImportError: No module named numpy
编译的2.7,因此要激活:
source activate caffe-py2.7
python
import caffe
报错:
ImportError: No module named numpy
输入: sudo apt-get install python-numpy
安装成功仍然在,才发现,anaconda的环境无法使用安装在系统中的库
pip install python-numpy解决问题
真的不建议使用anaconda配置caffe
错误六: ImportError: No module named skimage.io
ImportError: No module named skimage.io
同错误5解决:
pip install -U scikit-image
错误7:
ImportError: No module named google.protobuf.internal
solution:pip install protobuf