Ubuntu18.04安装caffe
1.安装caffe
1.1. 安装依赖包
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 python-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install python-opencv
如果在安装过程中出现无法定位软件包问题则执行:
sudo apt-get update
1.2. 下载caffe
git clone git://github.com/BVLC/caffe.git
1.3. 修改caffe下文件Makefile.config
cd caffe
cp Makefile.config.example Makefile.config
修改 Makefile.config
gedit Makefile.config
1. 去掉CPU_ONLY :=1的注释
2. 注释掉CUDA有关的行:
#CUDA_DIR := /usr/local/cuda
#CUDA_DIR := /usr
#CUDA_ARCH := ....
#TEST_GPUID := 0
3. 去掉WITH_PYTHON_LAYER := 1的注释
4. 修改这一行:
# 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/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
1.4. 修改caffe下文件Makefile
gedit Makefile
1.opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
后面加入 opencv_imgcodecs
2. 找到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
注:1.3中的第四项修改和1.4中的第二项修改原因 :在安装hdf5的使用使用的是 sudo apt-get libhdf5-serial-dev(参考 [这个](https://www.jianshu.com/p/ab539e9a7955))
1.5. 编译
make all
Make test
make runtest
2.pycaffe安装
2.1. 安装依赖库
个人认为方法一好
2.1.1 方法一
查看caffe/python/requirement.txt
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0.
安装以上依赖库
cd caffe/python
for req in $(cat requirements.txt); do pip install $req; done
2.1.2 方法二
~$sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
~$sudo apt-get install protobuf-c-compiler protobuf-compiler
2.2 添加 PYTHONPATH
sudo gedit /etc/profile
export PYTHONPATH=$PYTHONPATH:/home/XXX/caffe/python:$PYTHONPATH # xxx为用户名
使上述更改生效
$ source /etc/profile
2.3编译
cd ~/caffe
make pycaffe
2.4 测试
python
import caffe
迷惑:
网上教程讲可以使用sudo apt-get install caffe-cpu 安装caffe(具体细节百度下)。这么操作之后import caffe 是成功的,但是主目录下面并没有文件夹caffe,以至于我不知如何训练。
疑问:这个安装是指安装了pycaffe吗?
接下来我使用sudo apt remove caffe-cpu 卸载了caffe。在使用源码安装的时候,安装pycaffe不用安装依赖库库直接编译pycaffe就成功了(因为卸载了caffe-cpu并不卸载它执行安装的依赖库)。
思考:
朋友安装caffe的时候出现了依赖库版本的问题浪费了很长时间,所以我觉得这条sudo apt-get install caffe-cpu或许可以用来避免这个问题。
2019.8.20补充:迷惑和疑问的解答如下:
在ubuntu18.04安装caffe 有两种方式,分为源码安装和命令行(sudo apt-get install)安装。
- 源码安装方式步骤如上所示,需要自己编译得到二进制文件(放在/build/tools)、编译pycaffe。
- 命令行安装的二进制文件放在/usr/bin文件夹下,源码安装编译得到的二进制文件都可以在这里找到,比如:caffe、convert_imageset、convert_mnist_data(生成lmdb文件)、compute_image_mean(生成均值文件)等等。有了这些东西我们已经可以进行训练了,当然我们可以下载一份caffe源码来得到其中有用的东西,但无需编译。
比如当生成均值文件时修改caffe/examples/create_imagenet.sh中用到的二进制文件的位置:
修改之前:TOOLS=build/tools $TOOLS/convert_imageset
修改之后:convert_imageset
因为/usr/bin是系统默认的path,可以直接找到,所以不需要前缀。
- 命令行安装还会安装python3版本的pycaffe(在/usr/lib/python3/disk-packets/caffe),这就是在python3中import caffe会成功的原因。
思考的进一步理解
上述思考是有道理的,这相当于一键安装了所有的依赖包。当你想要源码安装但是依赖老出问题的话,我们可以使用这个命令安装之后再卸载,这个时候所有的caffe依赖已经安装好了,编译可能就会顺利。
3. 引用
1.https://blog.csdn.net/Y_AOZHEN/article/details/84137377
2. https://blog.csdn.net/qq_24574309/article/details/78187557