准备在这个专栏和大家分享一下自己学习深度学习的一些收获,也起到共同学习的作用!加油!
提到deep learning, caffe的大名自然是如雷贯耳,当然,除了caffe之外,还有很多其他的框架,如torch,mxnet...但是,就我自己这一个月的实验以及师兄的结论都是,caffe得出的实验performance要高于别的框架,可能是C++的威力吧~笑
OK,接下来准备在这个系列分享我使用和学习caffe的一些经验,首先自然是框架的配置了。这里我们分享一下在windows10和ubuntu14.04虚拟机下的Caffe配置(:
一.Windows10 CUDA7.5 VS2013环境
1.软件准备
1.我使用的是系统是win10,首先要确保下载安装好visual stdio 2013,community版本下载链接在这,2014-Nov 12 Release Notes,这里建议大家最好将VS安装在默认C盘位置,不然之后编译可能会出现各种莫名其妙的问题
2.GitHub - BVLC/caffe at windows 这是微软修改的caffe windows版本,集成了caffe编译需要的第三方库,使用起来非常方便!下载好之后解压到任意位置,我这里是放在D盘下,接下来,到windows目录下,copy一份CommonSettings.props.example到CommonSettings.props
然后用vs打开CommonSettings.props,
我这里是默认使用GPU,CUDA版本为7.5,支持python的配置,大家可以根据自己需要进行调整,GPU对应CUDA版本和CudaArchitecture大致如下图
注意如果需要使用python接口的话,推荐安装Miniconda 2.7 64-bit Windows installer(from Miniconda website)或者是Anaconda 2.7 64-bit Windows installer(Download Anaconda Now!)
然后对应修改CommonSettings.props,我这里安装的是Anaconda2
3.接下来就是一些软件的安装了,首先下载CUDA,可以根据自己的GPU版本下载对应版本的CUDA,我这里下载的是CUDA7.5:https://developer.nvidia.com/cuda-downloads
下载完成之后就可以安装了,这里也是建议安装在默认位置,等待解压完成选择默认设置,等待安装完成即可.然后是CUDNN,https://developer.nvidia.com/cudnn ,貌似需要注册之后才能下载,应该不是很费事,下载cudnn v4
下载完成后,把解压后的文件夹中的bin,lib/x64,include中的内容分别放至 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5中的bin,lib/x64,include三个子目录下,这是%CUDA_PATH%路径,如果不太确定可以去系统环境变量下查看,最后就是Anaconda2了,下载完成之后打开cmd,输入以下命令安装一些python库
conda install --yes numpy scipy matplotlib scikit-image pip
pip install protobuf
至此,所有准备工作都已经完成了!
2.Caffe编译
打开D:\caffe-windows下的caffe.sln,将编译选项切换成Release
我这里删除了一些以后一般不会用到的工程,其实最主要的是caffe,libcaffe,pycaffe这三个,加快编译速度.然后我们先编译libcaffe,一般这个不出问题整个安装就没什么问题了。
最开始VS可能会比较卡,这是在安装一些第三方库(opencv,boost之类的,microsoft用Nuget集成在了这一步),安装完成之后在D:\NugetPackages下的这些都是caffe编译所需的第三方库
然后默默等待编译完成即可,大约需要十分钟
看到这里之后,这次安装基本上已经成功了.接下来编译剩下的即可
大功告成!
3.配置和使用
编译完成后,接下来做一些简单的配置:
1.首先,编译完成后的所有文件都在D:\caffe-windows\Build\x64\Release目录下,
里面包含最重要的就是caffe.exe以及pycaffe,如果需要在别的机器上使用的话,只需要将Release文件夹拷贝过去即可,不需要再重新编译一遍
2.接下来我们做一些简单设置,首先打开环境变量设置,在user variables下新建PATH和PYTHONPATH,填写对应的文件路径,这样就可以便捷使用caffe和caffe python接口了,配置好之后我们打开cmd,先输入caffe,在python中import caffe,如果都不报错——证明你可以愉快的进入deep learning的殿堂了^_^
3.安装git for windows,对于习惯Linux系统的人使用这个会更加方便,当然你只用命令行也可以,这个是可选项
4.测试
下面我们在mnist数据集上做测试,MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burge在这里下载这四个文件,解压到D:\caffe-windows\data\mnist中
右键打开git bash here,输入:
../../Build/x64/Release/convert_mnist_data train-images.idx3-ubyte train-labels.idx1-ubyte mnist_train_lmdb
../../Build/x64/Release/convert_mnist_data t10k-images.idx3-ubyte t10k-labels.idx1-ubyte mnist_test_lmdb
这样,训练集和测试集就创建好了,将其拷贝至D:\caffe-windows\examples\mnist目录下
进入该目录,打开lenet_train_test.prototxt,修改如下
然后打开lenet_solver.prototxt,修改第二行即可,
这里暂时不对这些配置文件做解释,只是安装完之后进行的测试,ok下面打开bash:
caffe train -solver=lenet_solver.prototxt -gpu 0
接着就可以看到一大串log出现,好像很厉害的样子!
最后在测试集上的结果是99.13%!深度学习,很强势!
好了,windows下的安装配置就到这里告一段落了,训练大多数模型都已经没问题了
二.VM Ubuntu14.04下安装CPU版本的Caffe
大多数情况下,windows环境下的caffe能够完美完成Linux下caffe的功能了,但毕竟Linux是标准平台,网上的很多开源代码都是基于Linux下的caffe的,比如神经网络可视化工具deepvis,以及RGB大神的RCNN系列,而且大部分情况下只需要应用到Caffe在CPU下的版本,所以这里给出虚拟机下ubuntu14.04下安装caffe的过程
1.创建虚拟机
这里我使用虚拟机软件是VirtualBox.首先创建一个linux/ubuntu14.04/64位/4GB内存的名为caffe的虚拟机,这里内存官网建议是8GB,但是笔记本总内存才8GB,大家有条件的建议分8GB
接下来一路下一步,
创建后点击启动,选择镜像,点击启动,
下面就是创建虚拟机的一些常见操作了,贴几张关键的图吧
点击continue后,漫长的等待。。。
重启之后,我们先安装一下VBox Additions:
选择设备下的安装增强功能,在终端中输入
cd /media/<USER>/VBOXADDITIONS_4.3.16_95972 (where <USER> is your user name)
sudo ./VBoxLinuxAdditions.run
在Virtual Box Manager, 点击Settings, 然后选择常规 | 高级 | 共享剪切板 | 双向,然后选择重启,这样虚拟机就可以充满全屏了,不再是一小块
2.准备工作
首先安装必要的环境:
sudo apt-get update #更新软件列表
sudo apt-get upgrade #更新软件
sudo apt-get install build-essential #安装build essentials
sudo apt-get install linux-headers-`uname -r` #安装最新版本的kernel headers
注意:官网缺少前两步,会导致CUDA安装失败
这也是个漫长的步骤,默默等待。。。
然后下载cuda7.5:
sudo apt-get install curl
cd Downloads/
curl -O "http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_linux.run"
这又是个漫长的过程。。。如果嫌这种方式太慢,可以去官网直接下载,然后复制进虚拟机,不过这种方式有时会出现一点问题
chmod +x cuda_7.5.18_linux.run #使其可运行
sudo ./cuda_7.5.18_linux.run #运行
说明:安装的过程中会显示最终用户许可协议(EULA),很长,可以按‘q’退出阅读,然后安装的时候不要安装显卡驱动,因为虚拟机是没法使用GPU的,具体如下:
- Accept the EULA
- Do NOT install the graphics card drivers (since we are in a virtual machine)
- Install the toolkit (leave path at default)
- Install symbolic link
- Install samples (leave path at default)
然后更新相应的库路径:
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/lib' >> ~/.bashrc
source ~/.bashrc
安装必要的依赖库:
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml
sudo easy_install pillow
下载Caffe并安装Python依赖库
cd ~
git clone https://github.com/BVLC/caffe.git
cd caffe
cat python/requirements.txt | xargs -L 1 sudo pip install
漫长的等待。。。
增加符号链接
sudo ln -s /usr/include/python2.7/ /usr/local/include/python2.7
sudo ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ /usr/local/include/python2.7/numpy
然后修改Makefile.config
cp Makefile.config.example Makefile.config
用gedit打开Makefile.config(或者直接用vim在终端中打开修改也可以)
1)去掉 # CPU_ONLY: = 1 的注释
2)在PYTHON_INCLUDE下, 把/usr/lib/python2.7/dist-packages/numpy/core/include替换成/usr/local/lib/python2.7/dist-packages/numpy/core/include
3.编译Caffe
终于可以编译caffe了,这三句即可,如果前面配置一切正常,这里应该不会出错
make pycaffe
make all
make test
依然是等待。。。
4.测试
这里我们测试一下CPU下的caffe能否正常运行即可:
首先为方便使用,我们将PYTHONPATH写入.bashrc中:
echo 'export PYTHONPATH=/home/<USER>/caffe/python' >> ~/.bashrc
source ~/.bashrc
然后在终端中输入:python和import caffe
一切正常
下面测试一下mnist数据集:
cd ~/caffe
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
然后编辑examples/mnist文件夹下的lenet_solver.prototxt文件,将solver_mode模式从GPU改为CPU
./examples/mnist/train_lenet.sh
由于是使用CPU进行训练,所以速度会比较慢,大概三十分钟才能整个训练完
配置过程主要参考官方文档:Ubuntu 14.04 VirtualBox VM · BVLC/caffe Wiki · GitHub
后面如果需要的话,还会继续添加在Ubuntu14.04中的caffe配置,但目前这两种已经够用了