经过朋友指导,终于成功在windows7上成功编译了caffe,这里将编译过程记录
如果不需要cuda版本的caffe,本步跳过
具体安装方法见: 安装visual studio 2013
如果不需要cuda版本的caffe,本部分可以跳过
安装方法与theano安装(二)windows安装visual studio 2010及cuda中的cuda安装方法一致,只不过是版本号不同而已
如果你的本机没有安装python,并且你需要配置pycaffe,那么,请按照win7系统安装python,并按照Pycharm集成开发环境安装python
安装完python后,再安装一下protobuf,因为后面编译pycaffe时有需要:
如果你的本机没有安装matlab ,并且你需要配置matcaffe,那么,请安装matlab,具体安装方法请自行查阅
在github上下载的window caffe把呢你自带一个配置文件的例子,在进行编译之前,需要先更改该文件内容
将该文件夹(即.\windows)下的CommonSettings.props.example文件复制一份儿,并将复制的文件命名为CommonSettings.props
-
caffe-windows自带的配置文件CommonSettings.props.example中与我们后面要进行的编译密切相关的就是如下部分
例子中所有配置参数都是默认值
CpuOnlyBuild
:是否使用CPU
UseCuDNN
:是否使用CuDNN
赋值,即下载的CuDNN的路径CudaVersion
:CUDA的版本
PythonSupport
:是否支持python
MatlabSupport
:是否支持matlab
配置文件部分设置如下:
<PropertyGroup Label="UserMacros">
<BuildDir>$(SolutionDir)..\BuildBuildDir>
<CpuOnlyBuild>trueCpuOnlyBuild>
<UseCuDNN>falseUseCuDNN>
<CudaVersion>7.5CudaVersion>
<PythonSupport>falsePythonSupport>
<MatlabSupport>falseMatlabSupport>
<CudaDependencies>CudaDependencies>
<CudaArchitecture>compute_35,sm_35;compute_52,sm_52CudaArchitecture>
<CuDnnPath>CuDnnPath>
<ScriptsDir>$(SolutionDir)\scriptsScriptsDir>
PropertyGroup>
<PropertyGroup Condition="'$(CpuOnlyBuild)'=='false'">
<CudaDependencies>cublas.lib;cuda.lib;curand.lib;cudart.libCudaDependencies>
PropertyGroup>
<PropertyGroup Condition="'$(UseCuDNN)'=='true'">
<CudaDependencies>cudnn.lib;$(CudaDependencies)CudaDependencies>
PropertyGroup>
<PropertyGroup Condition="'$(UseCuDNN)'=='true' And $(CuDnnPath)!=''">
<LibraryPath>$(CuDnnPath)\cuda\lib\x64;$(LibraryPath)LibraryPath>
<IncludePath>$(CuDnnPath)\cuda\include;$(IncludePath)IncludePath>
PropertyGroup>
<PropertyGroup>
<OutDir>$(BuildDir)\$(Platform)\$(Configuration)\OutDir>
<IntDir>$(BuildDir)\Int\$(ProjectName)\$(Platform)\$(Configuration)\IntDir>
PropertyGroup>
<PropertyGroup>
<LibraryPath>$(OutDir);$(CUDA_PATH)\lib\$(Platform);$(LibraryPath)LibraryPath>
<IncludePath>$(SolutionDir)..\include;$(SolutionDir)..\include\caffe\proto;$(CUDA_PATH)\include;$(IncludePath)IncludePath>
PropertyGroup>
<PropertyGroup Condition="'$(PythonSupport)'=='true'">
<PythonDir>C:\Miniconda2\PythonDir>
<LibraryPath>$(PythonDir)\libs;$(LibraryPath)LibraryPath>
<IncludePath>$(PythonDir)\include;$(IncludePath)IncludePath>
PropertyGroup>
<PropertyGroup Condition="'$(MatlabSupport)'=='true'">
<MatlabDir>C:\Program Files\MATLAB\R2014bMatlabDir>
<LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)LibraryPath>
<IncludePath>$(MatlabDir)\extern\include;$(IncludePath)IncludePath>
PropertyGroup>
配置文件部分设置如下:
<PropertyGroup Label="UserMacros">
<BuildDir>$(SolutionDir)..\BuildBuildDir>
<CpuOnlyBuild>falseCpuOnlyBuild>
<UseCuDNN>tureUseCuDNN>
<CudaVersion>7.5CudaVersion>
<PythonSupport>truePythonSupport>
<MatlabSupport>trueMatlabSupport>
<CudaDependencies>CudaDependencies>
<CudaArchitecture>compute_35,sm_35;compute_52,sm_52CudaArchitecture>
<CuDnnPath>D:\software\caffe-vs\cuda-cuDNNCuDnnPath>
<ScriptsDir>$(SolutionDir)\scriptsScriptsDir>
PropertyGroup>
<PropertyGroup Condition="'$(CpuOnlyBuild)'=='false'">
<CudaDependencies>cublas.lib;cuda.lib;curand.lib;cudart.libCudaDependencies>
PropertyGroup>
<PropertyGroup Condition="'$(UseCuDNN)'=='true'">
<CudaDependencies>cudnn.lib;$(CudaDependencies)CudaDependencies>
PropertyGroup>
<PropertyGroup Condition="'$(UseCuDNN)'=='true' And $(CuDnnPath)!=''">
<LibraryPath>$(CuDnnPath)\cuda\lib\x64;$(LibraryPath)LibraryPath>
<IncludePath>$(CuDnnPath)\cuda\include;$(IncludePath)IncludePath>
PropertyGroup>
<PropertyGroup>
<OutDir>$(BuildDir)\$(Platform)\$(Configuration)\OutDir>
<IntDir>$(BuildDir)\Int\$(ProjectName)\$(Platform)\$(Configuration)\IntDir>
PropertyGroup>
<PropertyGroup>
<LibraryPath>$(OutDir);$(CUDA_PATH)\lib\$(Platform);$(LibraryPath)LibraryPath>
<IncludePath>$(SolutionDir)..\include;$(SolutionDir)..\include\caffe\proto;$(CUDA_PATH)\include;$(IncludePath)IncludePath>
PropertyGroup>
<PropertyGroup Condition="'$(PythonSupport)'=='true'">
<PythonDir>D:\File Program\Anaconda\PythonDir>
<LibraryPath>$(PythonDir)\libs;$(LibraryPath)LibraryPath>
<IncludePath>$(PythonDir)\include;$(IncludePath)IncludePath>
PropertyGroup>
<PropertyGroup Condition="'$(MatlabSupport)'=='true'">
<MatlabDir>D:\File Program\Matlab\MatlabDir>
<LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)LibraryPath>
<IncludePath>$(MatlabDir)\extern\include;$(IncludePath)IncludePath>
PropertyGroup>
注:事实上,对cuDNN路径的配置有两种方案:
- 方案1:将cuDNN v4的压缩包内的bin、include、lib中的文件分别放置在%CUDA_PATH% (即cuda的安装路径)的相应目录中
- 方案2:将 .\windows\CommonSettings.props文件中的CuDnnPath设置为该解压缩路径,例如,将cuDNN解压后文件放置在D:\software\caffe-vs\cuda-cuDNN
中,那么,在CommonSettings.props中,令
,即上面提到的方法
首先编译libcaffe项目(其他的项目依赖于libcaffe项目)
这里有两个需要注意的地方:
(1)编译过程中,可能会出现错误
error C2220: 警告被视为错误 - 没有生成“object”文件
错误的原因是编译过程中出现了警告,而导致编译无法进行,此时,需要进行如下修改:
即:设置项目属性,不要将警告视为错误
右键->项目属性->C/C++->常规->将警告视为错误 设为否
另外,有一次在另外一个机器上出现了同样的问题,但按照上述方法却未解决,是因为文件的代码页为英文,而我的系统中的代码页为中文,解决方案:利用VS打开出错的文件->重新保存->重启vs->重新编译libcaffe->问题解决。
(2)caffe编译过程中,需要一些依赖包,在有网络的情况下,当编译第一个项目libcaffe时,程序会自动从网路下载这些依赖包,下载到与caffe-windows文件夹同级的NugetPackages文件夹中,下图所示即为程序自动下载的依赖包
但在没有网络情况下,需要事先将这些依赖包下载好,并将它们的路径在vs的管理NuGet程序包中进行设置:工具->选项->NuGet Package Manager->程序包源->利用右侧的加号添加本地的package
…
手动添加这些package地址后,还需要手动对这些NuGet Package进行安装
(3)另外,第二次编译过程出现如下错误
发现是下载的NegetPackages\glog.0.3.3.0下载缺少两个文件:
同样,在caffe项目处右键生成
直接在项目pycaffe
右键,点击生成即可
直接在项目matcaffe
右键,点击生成即可
后来经过仔细查询,发现,原来是因为配置文件CommonSettings中的matlabDir不小心填写错误了,才会导致上面两个问题!将此处改正,上面2个问题成功解决,matcaffe编译成功
<PropertyGroup Condition="'$(MatlabSupport)'=='true'">
<MatlabDir>D:\Program Files\MATLAB\R2014bMatlabDir>
<LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)LibraryPath>
<IncludePath>$(MatlabDir)\extern\include;$(IncludePath)IncludePath>
PropertyGroup>
接下来,再依次编译其他项目,同样的方法
classification
:用来分类compute_image_mean
:计算均值convert_cifar_dat
:对cifat数据集进行转换convert_mnist_data
:对mnist数据集进行转换为了测试编译好的caffe能否正常使用,需要进行测试,主要利用mnist数据集进行分类问题的测试
(2)修改配置文件
进入文件夹D:\software\caffe-vs\caffe-windows\examples\mnist
,即examples路径下的mnist文件夹
① 打开lenet_solver.prototxt
设置网络配置文件路径,这里使用了绝对路径,相对路径还没有尝试
② 打开lenet_train_test.prototxt
(3)运行caffe程序,具体地
① 打开cmd命令行,cd到caffe-windows的.\Build\x64\Debug
路径下,在该路径下,可以直接执行caffe.exe
D:\software\caffe-vs\caffe-windows\Build\x64\Debug
或者,为了方便,可以将caffe的路径添加到环境变量Path中,这样,cmd就可以直接识别caffe命令了
② 运行caffe
caffe train -solver lenet_solver.prototxt
注意,因为上一步已经将D:\software\caffe-vs\caffe-windows\Build\x64\Debug
路径添加到环境变量PATH中了,所以,这里可以直接使用caffe.exe
下面两步主要配置cuDnn、python和matlab,具体配置时,应该在4.5之前进行
如果已经编译好pycaffe,那么,为了能够在python使用caffe,还需要在python中进行一些相关配置
如果已经编译好matcaffe,那么,为了能够在matlab使用caffe,还需要在matlab中进行一些相关配置
添加环境变量
\Build\x64\Release\matcaffe
路径添加到matlab的搜索路径中\Build\x64\Release
路径添加到环境变量PATH中After you have built solution with Matlab support, in order to use it you have to:
add the generated matcaffe folder to Matlab search path, and
add \Build\x64\Release to your system path.
最后来张图
注:发现一篇写的比较好的博客
http://m.blog.csdn.net/article/details?id=50819464