Caffe – 一个基于C++编写的深度学习框架,由于其高效性和便捷性广泛应用于CV领域。它是由贾杨清在业余时间编写的一个框架,现在是由伯特利尔大学(BVLC)来进行维护和更新。
由于它出现的比较早,刚开始得到了广泛的应用,你会在许多学术论文中看到它的身影,当然由于它的高效性,它也成为许多公司和研究所的利器,可以用来进行“模型的部署”。尽管如今出现了许多强大的深度学习框架,但是caffe仍然很受欢迎,尤其是在CV领域。
在你使用了caffe之后,你会发现它非常简单,你需要做的就是“装载并转换数据类型”“构建自己的Model””编写相应的配置文件” “编写相应的部署文件”“编写一些额外的C++代码”。最常用到的应该是.prototxt文件,它常被用来构建Model,配置模型参数,部署模型。
它提供了python和matlab接口。你可以借助方便的python和matlab来加速你的开发过程。pycaffe是对应的python接口,里面封装了一些类接口,你只需要简单的调用或者编写一些新的类接口来扩展你自己的应用。matcaffe是matlab接口,它的接口和pycaffe很像,详细的内容可以看我后面更新的一些博客。
caffe有cpu版本和gpu版本,你需要根据自己的情况,选择合适的版本,本文介绍的是gpu版本。
好了,既然你知道了caffe,并且知道了它有什么用,下面就开始的配置过程吧。(知其然,更要知其所以然!)
1. 首先你需要下载caffe,你可以选择如下的几种方式
方式一:使用Git下载
git clone https://github.com/BVLC/caffe
方式二:本机下载--即使用浏览器进行下载
方式三:使用wget
wget https://github.com/BVLC/caffe
2. 解压当前的文件;
unzip xxx.zip
3. 重命名为caffe
mv xxx xxxx # 即将文件xxx重新命名为xxxx
4. 安装依赖包:
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 libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
5. 因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config
sudo cp Makefile.config.example Makefile.config
6. 打开并修改配置文件
sudo gedit Makefile.config 或者 sudo vim Makefile.config
#打开Makefile.config文件 根据个人情况修改文件:
a.若使用cudnn,则将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
b.若使用的opencv版本是3的,则将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
c.若要使用python来编写layer,则将
#WITH_PYTHON_LAYER := 1
修改为 WITH_PYTHON_LAYER := 1
d.重要的一项 :
将 # Whatever else you find you need goes here. 下面的
1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
这是因为Ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.
注:我的建议改变a/b/c/d四项,具体的原因你会在后续的使用中体会到。
7. 修改makefile文件
打开makefile文件,做如下修改:将
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
8. 编辑/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!
9. 编译
sudo make all -j8 或者 sudo make all -j4
#-j根据自己电脑配置决定
注:
1)这个过程会花费很长的时间,你需要耐心等待。
2)这个过程可能会出现许多错误,典型错误及其解决方案如下所示:
问题一:"fatal error: hdf5.h: 没有那个文件或目录"
解决方案:
step1:在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。将:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
替换为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
stept2:在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。
将:
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
问题二:"libcudnn.so.5 cannot open shared object file: No such file or directory"
解决方案:将一些文件复制到/usr/local/lib文件夹下,注意自己CUDA的版本号!
1. sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
2. sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
3. sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
4. sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig
10. 运行测试
sudo make runtest
如果出现如下结果,表示安装成功。结果如下图所示:
11. 测试caffe是否安装成功 -- 这一步相当重要!!!
1)将终端定位到Caffe根目录
cd ~/caffe
2)下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
3)将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
4)训练网络
./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如下图所示:
运行的结果是:0.9914 相当高的精确度!!!
注:这期间会产生大量的输出,包括训练网络和测试网络的架构,参数信息,以及迭代次数,损失率loss和学习率lr,准确率accuracy等,你可以通过观察这些参数来查看训练结果。
12. 配置Pycaffe
1)安装一些依赖包
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
注:这里面安装了很多有用的工具,你会在后续的开发中使用到它。
2)sudo apt-get install protobuf-c-compiler protobuf-compiler
3) 编译依赖库
cd ~/caffe # 切换到你的caffe安装路径
make pycaffe # 编译pycaffe
4) 添加文件路径
sudo gedit /etc/profile 或者 sudo vim /etc/profile
在文件末尾添加:export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
source /etc/profile # 使得配置生效
5)测试pycaffe
python
import caffe
如果没有报错,表明Pycaffe安装成功!
13. 安装Matlab
1) 下载matlab,内容包括以下三部分:其中Crack为激活的补丁包,dvd1.iso和dvd2.iso为分包压缩的MATLAB镜像文件;
```
点击这个http://www.linuxidc.com/Linux/2013-12/93755.htm 链接关注 Linux公社官方微信,关注后回复数字142290。即可得到网友的分享密码。
如果取消关注Linux公社公众号,即使再次关注,也将无法提供本服务!
链接:http://pan.baidu.com/s/1kUD7G9p 密码:获得见上面的方法,地址失效请在下面留言。
2) 将iso镜像文件挂载到linux中,执行下面命令:
sudo mkdir /media/matlab
sudo mount -o loop [path]R2016b_glnxa64_dvd1.iso /media/matlab
# 这里 的[path]是指iso镜像的目录位置
3) 开始安装MATLAB,先回到主目录
cd ~
4) sudo /media/matlab/install
5)接下来就是安装引导的图像界面了
选择Use a File Installtion Key,点击Next;
选择I have the File Installation Key for my license,然后输入Installation Key,Installation Key可以在Crack文件夹下的readme.txt中找到;
点击Next;
再选择安装自己所需的功能,
然后就是半个小时到一个小时左右的等待了……
进度条到90%左右的时候,会有一个请弹出DVD1,插入DVD2的提示,因为是分了两个iso压缩的,按照提示弹出dvd1.iso(只需右键图标选择弹出即可),把dvd2.iso同前面一样mount上去就可以了,安装会自动继续;
安装完成之后,在MATLAB的安装目录下建一个“licenses”文件夹,将Crack文件夹中的license_standalone.lic拷贝进去(可能需要在终端sudo cp进行拷贝),同时,将Crack/R2016b/bin文件夹覆盖安装目录下的bin文件夹;
6)安装Matlab支持包
sudo apt-get install matlab-support
注:中间可选使用这款软件的用户以及重命名GCC库,我把当前用户作为了使用这款产品的用户
7) 激活Matlab
sudo matlab
打开Matlab,此时会提示进行激活,使用本地文件激活,选择“licenses”文件夹中刚刚拷贝的license_standalone.lic即可;
8)使用
matlab 或者 sudo matlab
注:参考链接:Linux安装matlab
14. 配置matcaffe
1) cd ~/caffe
2) make all matcaffe
3) 将matcaffe加入Matlab搜索路径。在Caffe的根目录启动Matlab,在Matlab命令行中输入以下指令
Addpath ./matlab
4) make mattest # 测试是否编译成功
注:在此之前需要你安装好Matlab。
注:
1)由于能力有限难免出现一些错误,还望大家多多包涵。
2)如果有任何问题,请发消息给我,大家一起学习,一起进步。
3)由于本博客是我自己原创,如果需要转载,请联系我,我会及时回复大家。谢谢。
邮箱:1575262785@qq.com
1
1