Windows下安装caffe
-黄日辰
1. 下载Caffe-windows版本
为了避免任何不必要的麻烦,请选择从Microsoft的GitHub主页下载caffe(https://github.com/Microsoft/caffe),工具为VS2013,CUDA7.5,
2. Caffe编译
注意1:对于win10的用户在编译会出现这样的错误
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomiz-ations\CUDA7.5.targets(160,9): error MSB4062: 未能从程序集 C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\Nvda.Build.CudaTasks.v7.5.dll加载任务“Nvda.Build.CudaTasks.San-itizePaths”。未能加载文件或程序集“Microsoft.Build.Utilities.v3.5, Ver-sion=3.5.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 请确认<UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。
解决方法:
下载安装NET Framework 3.5,重启
注意2:编译的时候会出现如下错误
解决方法:
在编译前打开libcaffe的属性,将C/C++下的“将警告视为错误”选为否,如下图所示
a) 进入caffe-master文件夹中的Windows文件夹,复制文件CommonSetti-ngs.props.example并且改名为CommonSettings.props如下图所示
b) Microsoft提供的caffe是默认是使用CUDA(v7.5)和cuDNN(v4 or v5)的,不使用Python,Matlab注意对应自己电脑上的版本,如果想使用或者不使用这几个选项,可以通过CommonSettings.props进行修改
c) 在CommonSettings.props中添加你的cuDNN的路径,如下图所示。
如果编译完会报如下错误,然后把上图中的CuDnnPath中的路径删掉在重新编译一遍就ok。好奇葩
d) 使用GPU-Z或者参考下对照表,确认自己的GPU(我是980)支持计算能力为多少(我的为52),并在如下图所示的地方加入自己显卡计算能力的参数
e) 添加CUDA的路径
f) 选择release 或者 debug x64进行编译
g) 编译libcaffe
h) 等几分钟,出现如下图所示的信息,说明libcaffe编译通过。
i) 最后对多个项目进行编译
3. Caffe测试
a) 经典数据集MMIST测试,caffe需要把数据格式转为lmdb或leveldb进行读取,Linux下caffe提供转换的代码,但是windows下并没有,随便Google下载一个人家转好的,并放在路径caffe-master\examples\mnist即可。
b) 打开lenet_solver.prototxt文件检查下最后一行是不是GPU模式,如果不是,改成GPU。打开lenet_train_test.prototxt文件。把如下图所示的地方修改为从网上下载好的leveldb或者lmdb格式的文件名。
c) 在caffe的根目录下,新建一个run_mnist.bat文件,输入以下代码
F:\caffe-master\Build\x64\Release\caffe.exetrain --solver=F:/caffe-master/examples/mnist/lenet_solver.prototxt
pause
保存,双击运行,进行训练截图以及测试结果如下图
同样的步骤编译debug模式的caffe,测试如下图
4. VS建立caffe工程
a) Microsoft提供的caffe会自动下载第三方依赖,所以会非常方便,建立caffe工程和opencv类似,新建一个文件夹caffe_3rdParty,在内部分别建立bin include lib三个子文件,把NugetPackages(如下图所示)文件夹中的*.dll文件放入到bin文件夹中,把*.h文件放入到include中,把*.lib文件放入到lib文件夹中,并且把caffe_3rdParty中的bin文件添加环境变量中。新建一个VS工程,在属性管理器新建一个caffe_release.props文件(如下图)分别把这个三文件夹路径包含进去(类似于opencv的配置操作),并把同样把CUDA中的lib includebin文件路径添加到VS工程中。添加的时候要注意NugetPackages 文件中的debug release x86 x64不同文件夹.。设置好caffe_release.props对其备份,以便下次直接添加这个文件。
b) 测试..\examples\cpp_classification\classification.cpp,在...exampl-es\cifar10下新建一个classification .bat文件,谷歌下人家训练好的模型放在..\ex-amples\cpp_classification\下,加快测试速度。这里采用4000次迭代的模型。
c) 复制classification.cpp到自己工程,运行程序,得到如图结果.采用的训练了500次的模型,测试图为一只狗,从结果中可知500次的模型还是没有收敛的,效果并不好