参考链接:https://blog.csdn.net/u011947630/article/details/81878767
0. 编译环境
操作系统:Windows10
IDE: VS2013
GPU: NVIDIA GTX 1050Ti
1、 VS2013安装
官网地址:https://my.visualstudio.com/Downloads?q=Visual%20Studio%202013%20with%20Update%205
下载好后找一个win10+vs2013的教程,按照提示一步步安装即可。
2、matlab-R2014a安装
链接:https://pan.baidu.com/s/1NRddbqJ7i0xw64_mteeGLQ
提取码:zdfa
下载后找一个安装教程按照提示安装即可。
3、Cuda8.0安装
1)cuda8.0兼容的vs版本只有VS2013(本次安装采用)和VS2015
2)cuda8.0各个系统版本在下面的博文里:
http://blog.csdn.net/u011669700/article/details/78622872
官方下载地址:https://developer.nvidia.com/cuda-80-ga2-download-archive
选择win10版本
3)注意事项:
1.安装时选择默认路径(不要做任何修改);
2.系统检查后,在第二步许可协议处选择自定义安装;
3.安装完成后,打开命令行窗口,输入:nvcc -V如果能够显示版本信息,就表示安装成功。
4、Cudnn5.1安装
1)官网地址:https://developer.nvidia.com/rdp/cudnn-archive
可能需要注册账号,按照要求注册,然后再次打开该地址,就可以选择cudnn版本下载了
注意:要选择 Download cuDNN v5.1 (Jan 20, 2017),for CUDA 8.0下载
2)或者百度网盘下载
链接:链接:https://pan.baidu.com/s/1xBdL4yA1CYzhYofqkyruIQ
提取码:d9s8
3)下载好后解压,可以看到包含一个文件夹 cuda里面由三个子文件夹 bin、include、lib
4)然后打开本机的环境变量,找到系统变量中的CUDA_PATH的值,打开该位置
打开后文件如下:
5)可以看到,这里(路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0)也有lib,bin,include三个文件夹,于是我们需要将之前cudnn5.1解压得到的cuda文件夹里面的三个文件夹中的内容拷贝到这里的对应的lib,bin,include文件夹中(例如:cuda/bin/cudnn64_5.dll拷贝到上图中的bin里面),总共有三个文件需要拷贝,其中第三个在cuda/x64中。
到此现在我们的CUDA和cudnn就装好了~
5、caffe源代码下载+编译+测试
1)源码位置:https://github.com/microsoft/caffe
点击绿色按钮之后download zip就行了,得到一个压缩包,随便解压到一个地方就行了
2)解压后得到caffe-master目录,点进去有一个windows文件夹
3)进入windows文件夹,将其中的CommonSettings.props.example复制一份并改名为CommonSettings.props。
4)修改CommonSettings.props文件。因为先点击Caffe.sln,会自动启动vs2013,但是此时可能会出现的问题是libcaffe和test_all两个工程加载失败。原因是找不到cuda7.5因为我安装的是cuda8.0而文件默认是7.5的。
所以先修改CommonSettings.props文件后再重新启动Caffe.sln文件。
5)点击右边的CommonSettings.props,修改这么几个内容
1.第7行改成false(表示不是在CPU上面,如果采用CPU则这里无需改动,还是true)
2.第8行改成true(使用cudnn可以加快之后的运行速度,如果采用CPU则这里无需改动,还是false)
3.第9行的CUDA版本(刚才装8.0)
4.如果需要支持python或者matlab,那么对应的13、16行也要改,因为我安装了啊那conda3以及matlab,所以就修改了PythonDir和MatlabDir。
5.最后是24行,将cuda文件夹的位置填进去。(也可不需要,有没写环境搭建是成功的情况)
6.第53行这里MatlabDir是自己电脑中matlab的安装地址,如果不知道,可以右键桌面快捷方式从属性中查看。
7.第55行IncludePath也改了,直接按照我的复制就可以,$(MatlabDir)\toolbox\distcomp\gpu\extern\include;
6)双击打开caffe-master\Windows下的caffe.sln,右击pycaffe,选择‘属性’,配置一下相关文件:
7) 接下来,右键libcaffe工程,选择‘属性’,改为下面的样子:
1.然后点击确定。
2.右键libcaffe,点‘build’ 生成就行了。可能会比较慢,因为会从网上下载NugetPackages文件。如果想要运行快一点,
建议:修改libcaffe属性后,可以直接从网上下载NugetPackages文件
链接:https://pan.baidu.com/s/1yQ00H9BC5iFM4-9M2MJsGw
提取码:97s0
3.NugetPackages文件夹和caffe-master文件夹放在同一个目录下即可。
4.再右键libcaffe,点‘生成, 这样生成libcaffe.lib,但是不会从网上下载NugetPackages文件,速度比较快。
5.编译成功和运行需要的文件都会存放在Build\X64\Relase下面,如图:
前面已经提示是先编译的libcaffe,在solution上面右击选择属性(properties)。可以发现默认选择的是单任务,只编译libcaffe。这就是为什么之前默认先编译libcaffe。如下图:
接下来,可以选择更多的任务来编译。类似地,我们接下来也可以只选择caffe来编译,同样的要注意release和X64. 如图:
编译caffe中遇到问题:
原因参照链接:https://stackoverflow.com/questions/40018405/cannot-open-include-file-io-h-no-such-file-or-directory/43098806#43098806
在目录“C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt”中(windows 10 sdk,下载安装的路径为:https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)存在文件”io.h”,只需将其加入到caffe的配置include中即可:
在目录“D:\caffe\caffe-master\include”中,存在文件”caffe.hpp”,只需将其加入到caffe的配置include中即可:
Error 8534 error LNK1112: module machine type 'X86' conflicts with target machine type 'x64' D:\caffe\caffe-master\windows\caffe\msvcprt.lib(MSVCP120.dll) caffe
原因:错误的将“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib”加入到caffe的配置include中,不应添加,该目录中的库是32 位的与要编译的64位的环境平台相互冲突。
(1)安装Anaconda3后,自带Python3.5,但我们有时候还需要一个Python2.7来执行一些老的脚本程序,此时可以给Anaconda3再创建一个新的独立的python2.7的环境。调出Anaconda3的命令行工具Anaconda Prompt,如下图所示,执行命令:$ conda create -n py2 anaconda python=2.7
(2) 其中py2就是新的python2.7环境的名称,接下来提示你是否安装一大堆的包!全部选择yes!安装成功界面如下:
如何使用python2.7环境?命令如下:
Windows: activate py2
Linux and Mac OS X: source activate py2
如何结束python2.7环境:
Windows: deactivate
Linux and Mac OS X:source deactivate
想要删除指定路径下的虚拟环境,使用如下的命令:
conda remove--prefix=D:\Anaconda3\envs\py2 –all
(3) python2虚拟环境是安装在D:\Anaconda3\envs\py2目录下的!
我们现在来编译pycaffe。首先需要确认配置文件CommonSettings.props的参数中第13、48行已修改,如下:
(4)最终caffe所有的include和lib的配置如下图:
8)右键工程caffe,点击第一个‘生成’。 最后生成caffe.exe则编译成功,文件所在的位置D:\caffe\caffe-master\Build\x64\Release
9)右键——》解决方案“caffe”(16个项目),项目生成的文件就在D:\caffe\caffe-master\Build\x64\Release里面(也可以跳过步骤7直接执行这步)
下面通过一个最简单的网络结构lenet来对刚才安装的caffe进行测试。
1) 首先去官网: http://yann.lecun.com/exdb/mnist/ 下载mnist数据集。首先进入眼帘的是:
在侧边可以看见有4个文件可以下载:
下载后解压到D:\Project\caffe-master\data\mnist,如下图所示:
(2)在caffe根目录下,新建一个create_mnist.bat,里面写入如下的脚本:
此时如果立即双击该脚本文件,会报错,因为我们还没有生成convert_mnist_data.exe 这个可执行文件,因此我们又需要执行前面类似的操作,编译convert_mnist_data 这个工程,编译完成之后,在Build\x64\Release\ 中会有如下的文件:
此时我们可以双击create_mnist.bat 这个脚本文件,仍然出错,如图:
仔细检查,原来是要在data\mnist\ 里面还需要建立两个子目录,把相应的数据文件移动到子目录里。重新双击create_mnist.bat这个脚本文件,此时如图:
在D:\Project\caffe-master\examples\mnist下面生成相应的lmdb数据文件,如图:
(3)打开D:\Project\caffe-master\examples\mnist\lenet_solver.prototxt,定位到最后一行改为solver_mode:GPU,此处我们采用GPU训练。如下图所示:
接下来我们要修改 lenet_train_test.prototxt文件,先做个备份,如图:
打开文件lenet_train_test.prototxt,将其中的source选项的引号中加入“./”,如图:
(4)在caffe根目录下,新建train_mnist.bat,然后输入如下的脚本:
保存之后如图:
然后双击运行,就会开始训练,训练完毕后会得到相应的准确率和损失率。训练如下:
到此为止,我们完成了所有的环境搭建和demo测试。
7.pycaffe编译
Include和lib配置如下图:
设置编译方式为release,x64,设置pycaffe为启动项目,设置“将警告视为错误”为false否!!!设置ctrl+f5开始生成!编译完成以后,会生成一个:caffe-master\caffe-master\Build\x64\Release\pycaffe文件夹,进入以后如下图所示:
接着将那个caffe文件夹复制到python2虚拟环境根目录下:D:\Anaconda3\envs\py2\Lib\site-packages
最后,打开Anconda Prompt,切换到Python2环境(activate py2),然后就可以尝试:import caffe
出现报错!ImportError:No module named google.protobuf.internal直接在python2虚拟环境下执行pip install protobuf即可!