您的位置:首页 > Web前端

ubuntu 17.10 + caffe(CPU)环境搭建

2018-01-15 12:33 351 查看
如果需要编译Python的caffe库,需要安装Python,这里就不详述Python的安装了

1.caffe依赖库安装

可以通过apt-get 安装

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev


或者通过

源文件安装,这里我打包了所需的源文件库,自己也可以去官网下载

下载地址:http://download.csdn.net/download/yanhaiming56/10205999

① Protobuf  glog  lmdb openblas

由于我配置的是
python3.6
的接口,因此
protobuf
的版本必须大于3.0以上

以上这几个源文件都是直接解压,进入文件夹,执行:

./configure (如果这里默认安装都系统目录下,如果想安装在自己的目录,可以 执行 ./configure  --prefix="自己的目录")

make all -j8

sudo make install (如果confiure配置了prefix,就安装在了指定的目录)

② boost

这里是boost1.66

a) 解压源文件编译,执行

./bootstrap.sh

./b2

sudo ./b2 install

b) 上一步执行完毕可能没有编译boost的Python库,再次执行

./bootstrap.sh

./b2 --with-python include="pyconfig.h所在目录"(pyconfig.h所在位置,可以通过find命令去找,如果是anaconda,在anaconda/inlude/python3.6m,我这里是Python3.6,所以是Python3.6m,根据自己的Python版本去找对应的pyconfig.h所在目录)

sudo ./b2 install

③ gflags snapppy

这两个源文件使用cmake,这里我使用cmake-gui,如果没有cmake-gui就先安装

sudo apt-get install cmake

sudo apt-get install cmake-gui

在命令行直接执行cmake-gui,如图:



在where is the source code 输入源码路径,在where to build the binaries (一般在源文件目录新建一个文件夹,比如build,这样便于找到)输入构建路径,点击左下方configure,会生成配置列表,是一个name-value,其中build_shared_libs要选上,然后点击generate。

然后就是进入where to build the binaries 所指定的目录下,执行

make all -j8

sudo make install

④ hdf5

如果需要编译Python版caffe,这个要使用和Python安装的hdf5的版本一至,查看Python安装的hdf5版本,执行

pip list | grep "hdf5"

我这里已经安装最新的版本1.10.1,我提供的打包库文件源码也是1.10.1,这个是支持cmake编译的,但是我还是用了make方式编译

解压CMake-hdf5-1.10.1.tar.gz,进入CMake-hdf5-1.10.1/hdf5-1.10.1,执行

./configure --prefix="/usr/local/hdf5" (这个一定要指定目录

make all -j8

sudo make install

④ leveldb

解压这个源文件,进入源文件目录,执行
make all -j8
sudo cp out-shared/libleveldb.so.1.20 /usr/lib
sudo cp out-static/*.a /usr/lib
sudo cp -r ./include/leveldb/ /usr/local/include/
sudo ln -s /usr/lib/libleveldb.so.1.20 /usr/lib/libleveldb.so.1
sudo ln -s /usr/lib/libleveldb.so.1.20 /usr/lib/libleveldb.so

⑦ atlas-devel 

这个源码编译安装有问题,直接使用apt-get安装

sudo apt-get install liblapack-dev libatlas-base-dev


opencv

依然采用cmake-gui方式生成build





如果要编译Python库,其中,name为PYTHON3_*的配置要指定到对应的路径(如果环境变量PATH设置了Python路径,cmake会自动识别,但是library和dir不会识别到),PYTHON2_*同理
然后就是:make sudo make install

以上工作都做完执行
sudo ldconfig

Caffe编译

解压caffe,进入caffe目录

cd caffe
vi Makefile

找到
# Complete build flags
其下的
COMMON_FLAGS +=
后面加上
-I/usr/local/hdf5/include

LDFLAGS +=
后面加上
-L/usr/local/hdf5/lib


/usr/local/hdf5就是在编译安装hdf5时指定的安装目录
修改
Makefile.config


如果没有
Makefile.config
,

cp Makefile.config.example Makefile.config
vi Makefile.config

修改Makefile.config,如下:

CPU_ONLY := 1

USE_OPENCV := 1

OPENCV_VERSION := 3

#如果使用的是anaconda安装的Python设置如下

ANACONDA_HOME :=  anaconda所在目录

PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python3.6m \
$(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include

PYTHON_LIBRARIES := boost_python3 python3.6m

PYTHON_LIB := $(ANACONDA_HOME)/lib

WITH_PYTHON_LAYER := 1

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/local/hdf5/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/local/hdf5/lib

这些都配好,就可以执行

make all -j8

make test -j8

make runtest -j8

make pycaffe

在执行以上几个make时,常出现的错误

a) undefined reference to cv::imread之类的错误
该错误是因为cmake编译opencv时没有选择build_imgcodecs,并且不要选择build_world,重新安装opencv

b)
make runtest
.build_release/tools/caffe
.build_release/tools/caffe: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/HY/caffe/caffe/.build_release/tools/../lib/libcaffe.so.1.0.0)
.build_release/tools/caffe: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/lib/libopencv_core.so.3.1)
.build_release/tools/caffe: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/lib/libopencv_imgcodecs.so.3.1)
make: *** [runtest] Error 1


这个错误是因为gcc版本过低,安装更新版本的gcc,如果直接sudo apt-get install build-essential依然获取的是低版本,那就下载源码安装。

error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory  

这个错误就是找不到python库,编辑.bahsrc添加

export LD_LIBRARY_PATH="anaconda目录/lib:$LD_LIBRARY_PATH"

保存,source ~/.bashrc

c)以下错误

Warning! ***HDF5 library version mismatched error***
The HDF5 header files used to compile this application do not match
the version used by the HDF5 library to which this application is linked.
Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but
linked with a different version of static or shared HDF5 library.
You should recompile the application or check your shared library related
settings such as 'LD_LIBRARY_PATH'.
You can, at your own risk, disable this warning by setting the environment
variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.
Setting it to 2 or higher will suppress the warning messages totally.
Headers are 1.8.3, library is 1.8.17


是因为python的hdf5与系统中安装的hdf5不一致,所以这也是为什么前面hdf5安装的时候我一再强调版本和安装路径。找到和Python的hdf5同一版本的hdf5源码进行安装

最后配置Python路径

编辑.bashrc文件vi ~/.bashrc

在文件最后加上

export PYTHONPATH="caffe目录/python:$PYTHONPATH"

保存退出vi,执行source ~/.bashrc

python要用caffe还要安装protobuf

pip install protobuf

最后执行

python进入Python命令行

输入import caffe

如果没有报错,说明caffe成功安装。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: