1、首先去github上下载微软的caffe。https://github.com/Microsoft/caffe解压文件到任意位置,我自己的是放在D:\caffe-master。
2、安装Python.这里使用的是WinPython集合包,请下载64位版本https://sourceforge.net/projects/winpython/files/WinPython_2.7/2.7.10.3/安装WinPython。我这里是安装在d:\WinPython-64bit-2.7.10.3。
3、安装Matlab 2014a,我这里是安装在C:\ProgramFiles\MATLAB\R2014a。
1、打开caffe-master文件夹,复制CommonSettings.props.example,再将CommonSettings.props.example重命名为CommonSettings.props得到(props格式的文件)。用文本格式(写字板)打开CommonSettings.props,将
和
中的false改为true;将PythonDir中的路径改为 winpython的路径(注意是你安装winPython的路径),如果是安装的是anaconda,可以改为C:\Anaconda,确保下一级中有python.exe即可;
将MatlabDir中的路径改为你matlab的安装路径即可。
改完如下图所示:
打开CommonSettings.props的配置.问题往往出现在这里:
1
2 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ImportGroup Label="PropertySheets" />
4 <PropertyGroup Label="UserMacros">
5 <BuildDir>$(SolutionDir)..\BuildBuildDir>
6
7 <CpuOnlyBuild>falseCpuOnlyBuild>(用Cpu设为true,用Gpu设为false)
8 <UseCuDNN>trueUseCuDNN>(用Gpu设为true)
9 <CudaVersion>7.5CudaVersion>
10
13 <PythonSupport>truePythonSupport>(装Python设为true,否则,false)
14
16 <MatlabSupport>trueMatlabSupport>(装matlab设为true,否则,false)
17 <CudaDependencies>CudaDependencies>
18
19
21 <CudaArchitecture>compute_30,sm_30;compute_35,sm_35;compute_52,sm_52CudaArchitecture>(不改也行)
22
23
24 <CuDnnPath>C:\cuDNNCuDnnPath>(添加你解压的cudnn的路径,路径下的文件夹应该是cuda,貌似不改也行,可以试试)
25 <ScriptsDir>$(SolutionDir)\scriptsScriptsDir>
26 PropertyGroup>
27 <PropertyGroup Condition="'$(CpuOnlyBuild)'=='false'">
28 <CudaDependencies>cublas.lib;cuda.lib;curand.lib;cudart.libCudaDependencies>
29 PropertyGroup>
30
31 <PropertyGroup Condition="'$(UseCuDNN)'=='true'">
32 <CudaDependencies>cudnn.lib;$(CudaDependencies)CudaDependencies>
33 PropertyGroup>
34 <PropertyGroup Condition="'$(UseCuDNN)'=='true' And $(CuDnnPath)!=''">
35 <LibraryPath>$(CuDnnPath)\cuda\lib\x64;$(LibraryPath)LibraryPath>
36 <IncludePath>$(CuDnnPath)\cuda\include;$(IncludePath)IncludePath>
37 PropertyGroup>
38
39 <PropertyGroup>
40 <OutDir>$(BuildDir)\$(Platform)\$(Configuration)\OutDir>
41 <IntDir>$(BuildDir)\Int\$(ProjectName)\$(Platform)\$(Configuration)\IntDir>
42 PropertyGroup>
43 <PropertyGroup>
44 <LibraryPath>$(OutDir);$(CUDA_PATH)\lib\$(Platform);$(LibraryPath)LibraryPath>
45 <IncludePath>$(SolutionDir)..\include;$(SolutionDir)..\include\caffe\proto;$(CUDA_PATH)\include;$(IncludePath)IncludePath>
46 PropertyGroup>
47 <PropertyGroup Condition="'$(PythonSupport)'=='true'">
48 <PythonDir>C:\Miniconda2\PythonDir>改为 withpython的路径(注意是你安装winPython的路径),如果是安装的是anaconda,可以改为C:\Anaconda,确保下一级中有python.exe即可
49 <LibraryPath>$(PythonDir)\libs;$(LibraryPath)LibraryPath>
50 <IncludePath>$(PythonDir)\include;$(IncludePath)IncludePath>
51 PropertyGroup>
52 <PropertyGroup Condition="'$(MatlabSupport)'=='true'">
53 <MatlabDir>C:\Program Files\MATLAB\R2014aMatlabDir>(添加matlab的安装路径,装哪个盘都可以)
54 <LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)LibraryPath>
55 <IncludePath>$(MatlabDir)\extern\include;$(MatlabDir)\toolbox\distcomp\gpu\extern\include;$(IncludePath)IncludePath>
56 PropertyGroup>
57 <ItemDefinitionGroup Condition="'$(CpuOnlyBuild)'=='true'">
58 <ClCompile>
59 <PreprocessorDefinitions>CPU_ONLY;%(PreprocessorDefinitions)PreprocessorDefinitions>
60 ClCompile>
61 ItemDefinitionGroup>
62 <ItemDefinitionGroup Condition="'$(UseCuDNN)'=='true'">
2、如果你用的是Microsoft的caffe,在用vs2013生成matcaffe的解决方案时,最后出现了错误:
“无法打开包括文件: “gpu/mxGPUArray.h”: No such file or directory”
那么请在第55行,添加路径:
$(MatlabDir)\toolbox\distcomp\gpu\extern\include;
当然你的matlab版本不要低于2012b,否则这个目录下可能什么都没有;
3、在系统变量和matlab中分别添加了路径。但在用matlab测试caffe的样例bvlc_reference_caffenet.caffemodel时出现了错误:
未定义函数或变量 ‘caffe_’。
出错 caffe.set_mode_cpu (line 5)
caffe_(‘set_mode_cpu’);
出错 classification_demo (line 71)
caffe.set_mode_cpu();
4、打开caffe-master\windows\Caffe.sln 对libcaffe和caffe项目做如下设置:项目→属性→C/C++→常规→将警告视为错误 设置为否 如果不设置的话在编译boost库的时候会由于文字编码的警告而报错, (把“警告等级”调整为等级3),这一步很重要。 选择编译环境为Release,x64(其他环境同理)。 首先编译libcaffe,在libcaffe上右键生成就可以了。(第一次编译会自动下载NugetPackages包,里面有16个文件,这个过程需要连接VPN,且以后每次生成解决方案都要连接VPN,否则报错)libcaffe编译成功后再编译caffe,所有编译成功和运行需要的dll文件都会存储在caffe_master\Build\x64\Release下 至此,Windows版的Caffe编译就成功了。建议最好是把所有的都编译一遍,一共好像是16个,因为后续的caffe学习中会用到。
在用vs2013生成解决方案时,连接VPN会自动下载第三方包源 NugetPackages,如果你的网络环境不够畅通,请在这里下载链接:http://wangpan.baidu.com/s/1dFl1cp7 密码:d6e3,然后将其解压在与caffe-master同一个父文件夹下。
5、编译出错:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 7.5.targets(160,9): error MSB4062: 未能从程序集 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\Nvda.Build.CudaTasks.v7.5.dll 加载任务“Nvda.Build.CudaTasks.SanitizePaths”。未能加载文件或程序集“Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 请确认 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。
解决方法:下载安装.NET Framework 3.5即可解决
思路:win10系统缺少Microsoft.NET Framework 3.5,百度下载安装即可,win7系统自带Microsoft.NET Framework 3.5。具体可参考博客:http://blog.csdn.net/amusi1994/article/details/53368876
error : 无法打开包括文件: “numpy/arrayobject.h”: No such file.
解决方法:下载匹配python的numpy,比如小C的numpy-1.14.0-cp27-none-win_amd64.whl放在D:\WinPython\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\Scripts目录下,然后在命令行模式下输入命令
pip3.4 install D:\WinPython\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\Scripts\numpy-1.14.0-cp27-none-win_amd64.whl
会提示安装成功,然后在python下import numpy不报错表示安装成功。
6、但是caffe-master\examples下的sample现在还都用不了。因为所有的脚本都是Linux下的sh文件。因为caffe的指令都是.sh文件,在windows下是无法直接运行.sh文件的,需要通过cygwin(UNIX模拟环境)来运行。打开http://www.cygwin.com/,下载cygwin对应于自己windows操作系统的版本:32位或64位(cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件, 它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对Cygwin产生了兴趣。),按照提示安装软件。
Cygwin下载:
点击install Cygwin进入:
点击set-x86_64.exe开始下载:
此处需要选择一个服务器,之后就是从该服务器下载对应的安装所需的模块文件了。
因此,此处如果选择的服务器不合适的话,尽管你的网络本身速度很快,但是此处下载速度很慢。
所以,此处需要选择一个速度比较快的服务器。
对于国内来说,连接很多国外的服务器,速度一般都很慢。
不过,目前已经的,口碑较好的,速度较快的服务器,是近几年刚出现的163的服务器。
所以,此处对于多数人,最好的选择就是选择163的服务器。
如果你的选择其他的服务器,而且服务器列表中也找不到163的话,那么可以自己手动添加:
在Use URL处,输入:http://mirrors.163.com/cygwin/
注意:这里选的python跟上面安装的withpython不一样,这里的python只是为了服务Cygwin,编译caffe用到的是上面安装的withpython安装包。
Cygwin中模块的各种分类
先来说说,那一堆的列表。
可以看到,其有Accesibility,Base,Devel,Editors,Math等很多的部分。
此处,对于安装Cygwin来说,就是安装各种各样的模块而已。
具体安装什么模块,则是根据你自己的需要,去选择不同的模块。
而对于大多数人,尤其是不熟悉的人,其实,最核心的,要记住的一点,那就是,记住一定要安装Devel这个部分的模块,其中包含了各种开发所用到的工具或模块。
一般必须安装的有3个模块:
binutils
gcc-core
gcc-g++
gcc-mingw-core
gcc-mingw-g++
gdb
但对于选择出这些很麻烦,一旦选错即安装失败,建议把binutils、gcc、gdb模块全选,即点击相应模块的Devel-Default中的Default。
而对于其他部分的设置,如果不熟悉,那么可以直接使用默认配置即可
可以看到,有很多n/a的标示,其表示Not Avalibale不可用,此处即为不安装的意思,对应的模块的前面也写的是Skip,同样是跳过安装此模块的意思。
而对应方括号中间打叉,表示的是选择安装该模块
而想要安装某单个模块,比如gdb模块的话,那么就是对着那个skip前面的图标,点击一下,然后就可以看到gdb模块被选中了,表示安装此模块
很明显,如果想要对几十个,几百个模块都想要安装的话,如果都要一个个点击,那岂不是累死了。
对此,cygwin早就想好了,给我们提供了更方便的设置,那就是,对于此Devel分类下面的所有的模块,如果你想要都安装,那么可以点击Devel后面的那个Default:
那么Default就会变成Install,同时,其下所有的模块,也都变成选择安装了:
7、 安装wget( wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。wget名称的由来是”World Wide Web”与”get”的结合。)。这个软件用于从互联网获取资源。下载后解压到任意目录即可,然后将wget的目录加入到系统环境变量Path内,确保可以被shell脚本找到。我这里是安装在E:\Program Files (x86)\GnuWin32。
7.1、 安装wget www.2cto.com
网址:http://gnuwin32.sourceforge.net/packages/wget.htm
下载http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-setup.exe
双击安装
7.2、系统环境变量,新建
GNU_HOME=C:\Program Files\GnuWin32
7.3、path添加
==========分割线==============
;%GNU_HOME%\bin
==========分割线==============
7.4、下载整站:
用wget下载东西,的确很方便,它会自动重连并断点续传。让人很放心。
经常要下载一个网站或网站的某个目录。
www.2cto.com
下载一个目录,例如下载网站www.example.com/目录mydir下的所有内容
命令如下:
wget -r -p -k -np -nc -e robots=off http://www.example.com/mydir/
如果要想下载整个网站,最好去除-np参数。
wget -r -p -k -nc -e robots=off http://www.example.com/mydir/
-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递 归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才 需要指定此参数。
-nc 不下载已经存在的文件
-np 表示不追溯至父目录,不跟随链接,只下载指定目录及子目录里的东西;
-p 下载页面显示所需的所有文件。比如页面中包含了图片,但是图片并不在/yourdir目录中,而在/images目录下,有此参数,图片依然会被正常下 载。
-k 修复下载文件中的绝对连接为相对连接,这样方便本地阅读。
-o down.log 记录日记到down.log
-e robots=off 忽略robots.txt
8、最后还需要将python的路径添加到系统的环境变量中,即D:\WinPython-64bit-2.7.10.3\python-2.7.10.amd64。然后重启计算机使得环境变量生效。
其实后续还有许多软件和需要依赖的第三方库要安装,这里就不一一说了。