什么是caffe
Caffe是一个深度学习框架,具有表达力强、速度快和模块化的思想,由伯克利视觉学习中心(BVLC)和社区贡献者开发。Yangqing Jia在加州大学伯克利分校攻读博士期间创建了这个项目。
为什么选择caffe?
富有表现力的架构鼓励应用和创新使用Caffe,可以在配置中定义模型和优化,不需要硬编码。通过设置一个GPU机器训练标记在CPU和GPU之间转换,接着调配商品化集群系统或移动设备来完成。
代码的可扩展性让开发更加活跃在Caffe项目的第一年,它就被开发者fork超过1000次,由他们完成许多重要的修改并反馈回来。多亏那些贡献者,这个框架在代码和模型两方面都在追踪最先进的技术。
速度使Caffe完美的用于研究实验和工业开发使用一个NVIDIA K40 GPU Caffe每天可以处理超过60M的图像。推理过程为1ms/一幅图像,而学习过程为4ms/一幅图像。我们相信Caffe是现在可使用最快的ConvNet应用。
社区在视觉、速度和多媒体方面,Caffe已经有能力用于学术研究项目、启动原型,甚至大规模的工业应用。
软件需要
1、vs或vs,其他版本不行,博主使用的vs社区版
2、cmake3.4或者更高版本,博主使用过cmake3.9.2和3.14.2,都可以使用,下载地址在下方,选择cmake-3.14.2-win64-x64.zip即可,下载完后,需要在环境变量的path中添加cmake的.exe文件的位置,如下图所示,环境配置的相似方法在我的另一篇博客配置CUDA8.0和CUDA5.1中有说明。
/Kitware/CMake/releases
3、GPU配置所需的CUDA8.0和CUDNN5.1的下载和环境配置在我的另一篇博客
/qiongyaoxinpo/article/details/89036658
4、使用python接口导入caffe,还需要下载anaconda,caffe支持的python版本为2.7和3.5,因此,博主下载的为python3.5版本的anaconda3,之前是在清华镜像下载,不过.4.16清华镜像似乎已经挂了,这里就不给出下载地址了。
5、notepad++,使用notepad++来查看代码十分方便
caffe环境配置
caffe环境配置其实很简单,只要按照github官网上的要求一步一步来就可以了,这里对官网的指令进行了翻译并介绍了自己的实践与成功经历。github官网如下
/BVLC/caffe/tree/windows
1、同时按下win+r,输入cmd后打开cmd prompt,然后cd到你想下载caffe并运行的地方,例如想下载在F盘的caffe文件夹下,则按如下图操作即可
之后在该目录下依次输入
F:\caffe>git clone /BVLC/caffe.gitF:\caffe>cd caffeF:\caffe\caffe>git checkout windowsF:\caffe\caffe>scripts\build_win.cmd
2、找到F:\caffe\caffe\scrpts文件夹中的build_win.cmd文件,使用notepad++打开,进行如下修改,修改完成后,再运行一次F:\caffe\caffe>scripts\build_win.cmd命令即可进行caffe在windows环境下的文件生成,因为其原本是在ubantu系统下建立的。
3、进入F:\caffe\caffe\build文件夹下,打开Caffe.sln文件,按如下操作,release和x64,生成解决方案
4、编译完成后可以在F:\caffe\caffe\build\tools\Release文件夹中找到caffe.exe文件,可以在F:\caffe\caffe\build\examples\mnist\Release中找到convert_mnist_data.exe,如下图所示,caffe.exe文件是用于使用c++进行训练的程序,convert_mnist_data.exe是用来将mnist手写体数据转换成caffe可以使用的数据格式,值得注意的是caffe中不包含训练数据。
5、在开始调用caffe进行训练样本之前,首先得获取数据,数据在手写体官网可以直接下载,也可以通过下方传送门进行下载
/exdb/mnist/,一共需要下载4个文件,将所有压缩文件下载于F:\caffe\caffe\data\mnist中,并解压出来,如下图所示
6、在F:\caffe\caffe\examples\mnist文件夹中,创建create_mnist.bat的文件,使用notepad++打开后,输入程序,程序如下,其实是对create_mnist.sh的改写,因为.sh只能在linux环境下运行。按照自己的文件位置,分别修改如下4条语句即可,保存完毕后,进入cmd prompt命令行界面,在caffe根目录F:\caffe\caffe下运行如下语句:examples\mnist\create_mnist.bat,运行完毕后即可在F:\caffe\caffe\examples\mnist中发现2个可以进行训练的数据集,如下图所示
1、set EXAMPLE=F:\caffe\caffe\examples\mnist
2、set DATA=F:\caffe\caffe\data\mnist
3、set BUILD=F:\caffe\caffe\build\examples\mnist\Release
4、set exename=convert_mnist_data.exe
@echo off & setlocal enabledelayedexpansion:: This script converts the mnist data into lmdb/leveldb format,:: depending on the value assigned to %BACKEND%.:: 在caffe 根目录运行examples\mnist\create_mnist.bat%~d0cd %~dp0echo %cd%echo currentpath: %~dp0:: 网络定义文件的位置,生成lmdb文件也在这里set EXAMPLE=F:\caffe\caffe\examples\mnist:: 测试数据的位置set DATA=F:\caffe\caffe\data\mnist:: 工程文件生成的位置::set cfg=Debug::set BUILD=..\..\build\x64\examples\mnist\%cfg%::set exename=convert_mnist_data-d.exe:: 发布文件所在位置,即vs工程中运行INSTALL后,文件的安装位置set BUILD=F:\caffe\caffe\build\examples\mnist\Release:: 可发布的release版本lmdb生成工具set exename=convert_mnist_data.exe:: 生成数据类型set BACKEND=lmdbecho "Creating !BACKEND! start":: 删除存在的数据库目录,如果目录存在,会运行失败IF EXIST %EXAMPLE%\mnist_train_%BACKEND%. echo rmdir /S /Q %EXAMPLE%\mnist_train_%BACKEND%.IF EXIST %EXAMPLE%\mnist_train_%BACKEND%. rmdir /S /Q %EXAMPLE%\mnist_train_%BACKEND%.IF EXIST %EXAMPLE%\mnist_test_%BACKEND%. echo rmdir /S /Q %EXAMPLE%\mnist_test_%BACKEND%.IF EXIST %EXAMPLE%\mnist_test_%BACKEND%. rmdir /S /Q %EXAMPLE%\mnist_test_%BACKEND%.:: 生成训练数据库::echo %BUILD%\%exename% %DATA%\train-images.idx3-ubyte ^%DATA%\train-labels.idx1-ubyte %EXAMPLE%\mnist_train_%BACKEND% --backend=%BACKEND%%BUILD%\%exename% %DATA%\train-images.idx3-ubyte %DATA%\train-labels.idx1-ubyte %EXAMPLE%\mnist_train_%BACKEND% --backend=%BACKEND%:: 生成测试数据库::echo %BUILD%\%exename% %DATA%\t10k-images.idx3-ubyte ^%DATA%\t10k-labels.idx1-ubyte %EXAMPLE%\mnist_test_%BACKEND% --backend=%BACKEND%%BUILD%\%exename% %DATA%\t10k-images.idx3-ubyte %DATA%\t10k-labels.idx1-ubyte %EXAMPLE%\mnist_test_%BACKEND% --backend=%BACKEND%echo "Create !BACKEND! Done.":: 根据example\mnist\下面的*.sh运行测试::mkdir build\x64\log\::build\x64\install\bin\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt > build\x64\log\lenet_solver.log 2>&1endlocal&goto :EOF:EOF
7、开始使用caffe对mnist训练集进行测试,进行cmd prompt命令行,cd至caffe根文件F:\caffe\caffe,然后运行如下语句,caffe训练开始!如下图
F:\caffe\caffe>build\tools\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt
8、在将caffe模型导入python中前,需要对python进行设置环境配置,打开anaconda prompt,输入如下3条语句,下载完毕后,将F:\caffe\caffe\python中的caffe文件夹复制到D:\anaconda3\Lib\site-packages中即可。
conda config --add channels conda-forgeconda config --add channels willydconda install --yes cmake ninja numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz
8、运行anaconda3,import caffe成功!至此,完毕。