继续前面tensorflow(gpu版)、torch后,我们开始安装caffe
若要安装NVIDIA显卡驱动或者安装CUDA+cudnn,参见://www.greatytc.com/p/1baf9848b7d7 (内附下载资源)
若需要安装tensorflow或者torch,参见://www.greatytc.com/p/038c6e073201
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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
2. 安装opencv,注意:我们不安装opencv3,一般用也只用opencv2,没有必要用3
下载opencv版本自选,这里选择下载opencv2.4.13,下载地址:https://opencv.org/releases.html
(1) 将下载好的文件夹解压,进入文件夹 opencv-2.4.13:
cd opencv-2.4.13
(2) 新建一个文件夹用于存放临时文件:
mkdir release
(3) 切换到该临时文件夹:
cd release
(4) 开始编译:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8 //开启线程 按照自己的配置
sudo make install
然后进行环境配置:
(1) 将opencv的库加入到路径,从而让系统可以找到:
sudo gedit /etc/ld.so.conf.d/opencv.conf
(2) 末尾加入/usr/local/lib,保存退出:
sudo ldconfig #使配置生效
sudo gedit /etc/bash.bashrc
末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出
sudo source /etc/bash.bashrc #使配置生效
到此为止,opencv的所有工作就做完了
可能有些小伙伴在终端测试时会发现问题:
ImportError: dynamic module does not define init function (PyInit_cv2)
这时候只需要通过pip安装opencv-python就好了:
pip3 install opencv-python
3. 下面我们开始安装caffe
在此确认步骤1中的步骤是否完成(重新输入步骤1中的命令以确认),安装好后方可继续
在自己想安装caffe的位置打开终端:
git clone https://github.com/BVLC/caffe.git
进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config :
cd caffe
sudo cp Makefile.config.example Makefile.config
在 caffe 目录下,修改 Makefile.config 文件:
sudo gedit Makefile.config
修改 Makefile.config 文件内容:
(1).应用 cudnn
将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
(2).应用 opencv
将
#USE_OPENCV := 0
修改为:
USE_OPENCV := 1
(3).使用 python 接口
将
#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1
(4).修改 python 路径:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
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
然后修改 caffe 目录下的 Makefile 文件:
sudo gedit 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 文件 :
sudo gedit /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!
OK ,可以开始编译了,在 caffe 目录下执行 :
make all -j8
这是如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。
编译成功后可运行测试:
sudo make runtest -j8
4. 最后我们安装 pycaffe接口环境
pycaffe 的安装是为了更方便的去使用 caffe:
cd caffe
sudo make pycaffe -j8
5. 验证
编译 pycaffe 成功后,验证一下是否可以在 python 中导入 caffe 包,首先进入 python 环境:
python
然后导入 caffe :
>>> import caffe
若不报错则表示 caffe 的 python 接口已正确编译
在终端import caffe成功,但是当使用jupytr notebook时失败的解决办法
如图,出现这种情况时,我们采取一下方式解决:
import os
import sys
caffe_root='/home/haoyev5/caffe/python' #自己的caffe路径
os.chdir(caffe_root)
sys.path.insert(0,caffe_root+'python')
第三行有些是caffe-mast文件夹下的路劲,改下就好了,但是有个弊端就是,每次使用caffe时都必须加入以上几行,略为不便
另外有些说法是这样子的:
import sys
sys.path.append('/home/haoyev5/caffe/python')
我采取了这种方式,无效,大家可以试试
另外,若遇到有关于libpng16.so的错误,如 ImportError: libpng16.so.16: cannot open shared object file: No such file or directory,按照https://blog.csdn.net/pkokocl/article/details/78756422下载安装就好了。