項目的需要,終究還是用到了深度學習,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