项目的需要,终究还是用到了深度学习,Caffe无疑是我这种菜鸟最好的入门平台,然鹅,事情并没有想象的那么简单!!!单是编译caffe的库就已经把我折腾得灰头土脸了,搜了很多caffe的编译教程,一步一步得去操作,没有一个编译通过的,起初是CMake不通过,不甘心,又花了两天时间逐个编译出caffe的依赖库,总算CMake通过了,生成vs2013编译工程后,总算可以Build了,各种语法错误,简直让人心力交瘁。用微软版的免依赖库版,也是各种编译错误。就在要放弃的时候,又重新开始尝试了一下,仔细分析了CMake过程中所报的错误,逐个解决,CMake通过!vs2013通过!Build通过!Install成功!欧耶!!!
还好没放弃,在此,将编译过程,以及遇到的问题和解决方案分享给大家,希望对各位能有所帮助!
1、环境准备
1.1 安装cuda(https://developer.nvidia.com/cuda-downloads)。
1.2 安装cuDNN(https://developer.nvidia.com/cudnn,需要注册,这里下载v5版,直接解压到安装目录即可,记得添加环境变量)。
1.3 安装python(https://www.python.org/downloads/,这里安装的是python2.7)。
1.4 安装cmake(https://cmake.org/download/,安装最新版本的即可)。
已经安装的直接跳到第二步!
2、下载源码包
下载window版本的caffe源码包(https://github.com/BVLC/caffe/tree/windows)。
注意下载页面下方的Windows Setup项,如下图,可以按照这个要求准备环境。
3、CMake编译
将源码包拷贝到编译目录下(我用的是D:\Libraries\caffe),解压到当前目录。新建build_64文件夹作为CMake的编译目录,新建msvc2013_64作为安装目录。
打卡CMake,分别添加源文件目录和编译目录。Configure,选择Visual Studio 12 2013 Win64作为生成工具。finish,报错(如果没有报错直接跳过即可),如下:
肿么办,不着急,仔细看出错的原因,是在向C:\Users\Administrator\.caffe\dependencies\download\中下载以依赖库libraries_v120_x64_py27_1.1.0.tar.bz2时出错,再看出错的位置,位于打源文件cmake文件夹下的WindowsDownloadPrebuiltDependencies.cmake文件,打开如下:
第6行给出了下载依赖库libraries_v120_x64_py27_1.1.0.tar.bz2的位置,即(https://github.com/willyd/caffe-builder/releases),如下图所示,选择对应的依赖库。
将下载的依赖库libraries_v120_x64_py27_1.1.0.tar.bz2拷到C:\Users\Administrator\.caffe\dependencies\download\路径下。同时修改WindowsDownloadPrebuiltDependencies.cmake文件,将下载命令部分(即58-79行)注释掉,并保存。
继续Configure,依然会报错,如下:
不过这个不是什么大问题,只要将Atlas_BLAS的相关路径添加进来即可。继续configure,OK通过。
将CMAKE_INSTALL_PREFIX目录设为此前新建的文件夹msvc2013_64的绝对路径,作为安装目录,继续Configure,再Generator。
4、VS2013编译与安装
generate成功以后,在build_64文件夹下,会生成如下众多文件,打开Caffe.sln。
分别在Debug和Release环境下,先BUILD->Build Solution,再将INSTALL设为启动项,BUILD->Project Only->Build Only Install。
编译安装成功,在msvc2013_64文件夹下,会看到如下文件夹:
5、环境配置
5.1 在VS2013中的配置
首先,设置环境变变量,将安装文件夹下的bin文件夹目录添加到环境变量路径中。
然后,在编译文件夹下添加caffe.props文件(具体位置和名称可以根据需要设定),并向该文件中添加如下内容(主要是头文件和静态库),保存。在vs2013中使用时caffe时,只需要将改文件添加到工程的property manager中即可。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<IncludePath>D:\Libraries\caffe\msvc2013_64\include;$(IncludePath)</IncludePath>
<LibraryPath Condition="'$(Platform)'=='X64'">D:\Libraries\caffe\msvc2013_64\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup>
<Link Condition="'$(Configuration)'=='Debug'">
<AdditionalDependencies>caffe-d.lib;caffeproto-d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<Link Condition="'$(Configuration)'=='Release'">
<AdditionalDependencies>caffe.lib;caffeproto.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>
5.2 在python2.7中的配置
编译完成后,将源文件夹caffe-windows下python文件夹中的caffe文件夹(里面含有_caffe.pyd)整体拷贝到python安装目录(如C:\Python27)下的\Lib\site-packages文件夹中,即可。
最后,编译的过程中遇到问题,欢迎提出和分享~
2017.07.15