Windows 10 Visual Studio 2015 配置 Caffe
筆記本是雙顯卡,讀研的時(shí)候成功的在Ubuntu下配置好了一次Caffe,并且完成了深度學(xué)習(xí)的實(shí)驗(yàn),前不久因?yàn)橐粋€(gè)小的問題,導(dǎo)致NVIDIA驅(qū)動(dòng)出了問題,以后再也沒有在Ubuntu下成功配置好Caffe,不浪費(fèi)時(shí)間在雙顯卡配置上了,轉(zhuǎn)移到Windows下,正好也方便整理筆記。
首先是我的安裝過程中需要注意的問題,其實(shí)大部分問題都是閱讀完整個(gè)文檔都可以解決,但是通常不喜歡閱讀英文文檔,或者一眼帶過,很容易丟掉一些細(xì)節(jié),介紹完我的安裝步驟和問題,我順手翻譯了一下官方的文檔。
我的安裝步驟
1 Clone倉庫,并修改當(dāng)前路徑到caffe目錄,切換到Windows分支:
C:\Projects> git clone https://github.com/BVLC/caffe.git C:\Projects> cd caffe C:\Projects\caffe> git checkout windows- 1
- 2
- 3
- 1
CMake出錯(cuò),我安裝了兩個(gè)CMake,一個(gè)是2.8,一個(gè)是3.7,前者是編譯Qt用的,并且還在使用,不想刪掉,在Win10的環(huán)境變量中支持排序,將CMake3.7排在前面,就解決了CMake版本的問題,其實(shí)這里完全可以刪掉2.8,但是我想留著以后編譯Qt4.X的時(shí)候使用。?
3 繼續(xù)編譯,Ninja找不到,我本機(jī)沒有安裝Ninja,但是在build_win.cmd批處理文件中默認(rèn)是使用Ninja,把編譯選項(xiàng)修改就可以了if NOT DEFINED WITH_NINJA set WITH_NINJA=0?
4 繼續(xù)編譯,下載依賴項(xiàng)失敗,手動(dòng)打開Python下載依賴項(xiàng)的腳本,會(huì)看到下面的代碼:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
對(duì)應(yīng)不同的編譯器版本和Python版本,選擇一個(gè)合適的,我這里是140和3.5,手動(dòng)下載依賴項(xiàng),并拷貝到scripts\build目錄下,解壓到當(dāng)前文件夾,就會(huì)出現(xiàn)一個(gè)libraries的目錄,這就是所有的依賴項(xiàng)(還有OpenCV都在里面),繼續(xù)編譯,如果編譯器和Python的版本都是對(duì)的,那么就會(huì)編譯成功,大約需要16分鐘。
下面是翻譯的文檔,參考Caffe-Windows項(xiàng)目:
Windows Caffe聲明
Caffe的Windows版本是一個(gè)實(shí)驗(yàn)性的、社區(qū)版,是由Guillaume Dumont (@willyd)這個(gè)人主持開發(fā)的,目前正在開發(fā)過程中。?
這是Caffe倉庫的一個(gè)分支,分支名是Windows,這個(gè)分支就是提供一個(gè)在Windows上的Caffe框架。
預(yù)編譯的二進(jìn)制文件
在appveyor 上的持續(xù)化集成CI環(huán)境編譯構(gòu)建生成的二進(jìn)制文件也可以下載,根據(jù)不同的配置有如下幾個(gè)版本。
-
Visual Studio 2015, CPU only, Python 3.5:?Caffe Release
-
Visual Studio 2015, CUDA 8.0, Python 3.5:?Caffe Release
-
Visual Studio 2015, CPU only, Python 2.7:?Caffe Release,?Caffe Debug
-
Visual Studio 2015,CUDA 8.0, Python 2.7:?Caffe Release
-
Visual Studio 2013, CPU only, Python 2.7:?Caffe Release,?Caffe Debug
這些鏈接是關(guān)聯(lián)的CI環(huán)境生成的文件,應(yīng)該會(huì)發(fā)生變化,需要下載的請(qǐng)關(guān)注Caffe的Github
Windows 配置Caffe
需求
- Visual studio 2013或者2015
- CMake3.4或者更高版本(用于支持Visual Studio 和 Ninja)
依賴選項(xiàng)
- Python用于支持pycaffe,選擇Anaconda Python 2.7 or 3.5 x64 (or Miniconda),直接安裝Anaconda,過程簡(jiǎn)單
- MATLAB用于支持Matcaffe
- CUDA 7.5或者8.0,8.0的話需要使用Visual Studio 2015
- cnDNN v5
保證CMake和Python都已經(jīng)添加到環(huán)境變量了,如果有多個(gè)CMake版本的話,保證CMake3.4或者更高版本的變量值排在低版本的前面,系統(tǒng)會(huì)找到第一個(gè)符合的版本,若是低版本的沒有使用,可以去除低版本的環(huán)境變量,現(xiàn)在Windows10 支持調(diào)整環(huán)境變量順序。
配置并且編譯Caffe
最快的方式在Windows上上手Caffe,只需要在Windows的命令行中執(zhí)行下面的命令(假設(shè)C:\Projects是我們創(chuàng)建的目錄,用來編譯Caffe):
:: 從GitHub上clone 倉庫 C:\Projects> git clone https://github.com/BVLC/caffe.git :: 跳轉(zhuǎn)到目錄中 C:\Projects> cd caffe :: 切換到Windows分支(遠(yuǎn)程分支,在本地創(chuàng)建并關(guān)聯(lián)到遠(yuǎn)程分支), C:\Projects\caffe> git checkout windows :: Edit any of the options inside build_win.cmd to suit your needs C:\Projects\caffe> scripts\build_win.cmd- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
上面的代碼Windows可以存儲(chǔ)到支持的腳本文件,冒號(hào)表示注釋,擴(kuò)展名是.cmd,也可以直接在命令行中輸入。
其中build_win.cmd也是一個(gè)腳本文件,這個(gè)腳本用來下載依賴項(xiàng),創(chuàng)建Visual Studio工程文件(或者Ninja構(gòu)建文件),并且構(gòu)建發(fā)布的配置,默認(rèn)情況下,所有需要的DLL都必須拷貝到用到他們的二進(jìn)制文件旁邊(如果可能的話,可以創(chuàng)建硬鏈接),如果期望禁用這個(gè)選項(xiàng),需要修改這個(gè)腳本文件中關(guān)于CMake的配置選項(xiàng),將-DCOPY_PREREQUISITES=0。預(yù)編譯的二進(jìn)制庫文件,也提供了一個(gè)prependpath.bat批處理文件,這個(gè)批處理文件可以臨時(shí)的修改環(huán)境變量,讓需要的DLL都可以找到。
下面是一些比較復(fù)雜的在構(gòu)建Caffe過程中一些步驟的描述:
安裝Caffe的依賴項(xiàng)
默認(rèn)情況下,CMake會(huì)根據(jù)編譯器版本和Python版本下載和解壓預(yù)編譯好的依賴項(xiàng),會(huì)在build文件夾下創(chuàng)建一個(gè)叫作libraries?的目錄,這個(gè)目錄中包含了所有的需要的依賴項(xiàng)。你也可以這樣做,根據(jù)在caffe-builder中的README自己手動(dòng)的編譯這些依賴項(xiàng)。
使用 cuDNN
使用cuDNN最簡(jiǎn)單的方式是將cuDNN解壓后的cuda目錄中的內(nèi)容拷貝到CUDA工具包的安裝目錄下,比如,如果是安裝的CUDA8.0,然后下載cudnn-8.0-windows10-x64-v5.1.zip,那么應(yīng)該將cuda目錄中的文件拷貝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0對(duì)應(yīng)的目錄下。另外,也可以定義一個(gè)CUDNN_ROOT的緩存變量用來只想解壓后的cuDNN目錄,比如,解壓目錄是C:/Projects/caffe/cudnn-8.0-windows10-x64-v5.1/cuda,那么,對(duì)應(yīng)的build_win.cmd腳本文件中的CMake的配置就會(huì)變成下面樣子(其實(shí)就是添加一個(gè)編譯選項(xiàng)),
cmake -G"!CMAKE_GENERATOR!" ^-DBLAS=Open ^ -DCMAKE_BUILD_TYPE:STRING=%CMAKE_CONFIG% ^ -DBUILD_SHARED_LIBS:BOOL=%CMAKE_BUILD_SHARED_LIBS% ^ -DBUILD_python:BOOL=%BUILD_PYTHON% ^ -DBUILD_python_layer:BOOL=%BUILD_PYTHON_LAYER% ^ -DBUILD_matlab:BOOL=%BUILD_MATLAB% ^ -DCPU_ONLY:BOOL=%CPU_ONLY% ^ -DCUDNN_ROOT=C:/Projects/caffe/cudnn-8.0-windows10-x64-v5.1/cuda ^ -C "%cd%\libraries\caffe-builder-config.cmake" ^ "%~dp0\.."- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
另外一種方式是打開CMake的GUI工具,設(shè)置變量,然后點(diǎn)擊Generate按鈕
僅對(duì)CPU構(gòu)建
如果沒有安裝CUDA,那么Caffe默認(rèn)是僅對(duì)CPU構(gòu)建,但是如果已經(jīng)安裝了CUDA,但是還是想只對(duì)CPU構(gòu)建,那么可以修改CMake的編譯選項(xiàng)-DCPU_ONLY=1。
使用Python接口
推薦使用Anaconda 或者M(jìn)iniconda這兩個(gè)Python發(fā)布版本(非常簡(jiǎn)單),為了能成功的編譯除Python接口,需要安裝下面的包:
conda install --yes numpy scipy matplotlib scikit-image pip six- 1
你也將會(huì)需要使用protobuf Python包,這個(gè)包是與預(yù)編譯的依賴項(xiàng)兼容的,這個(gè)包的安裝命令是:
conda install --yes --channel willyd protobuf==3.1.0- 1
如果已經(jīng)安裝了額Python,那么將會(huì)默認(rèn)編譯Python接口和Python層,如果你想禁用Python層和Python構(gòu)建版本,那么需要分別修改CMake的編譯選項(xiàng):-DBUILD_python_layer=0和-DBUILD_python=0。?
使用Python接口的時(shí)候,需要添加C:\Projects\caffe\python到環(huán)境變量,并把C:\Projects\caffe\python\caffe拷貝到site_packages目錄下。
使用MATLAB接口
根據(jù)前面的步驟,然后使用-DBUILD_matlab=ON的編譯選項(xiàng)。?
改變當(dāng)前路徑到C:\Projects\caffe\matlab,然后運(yùn)行下面的命令,運(yùn)行測(cè)試:
- 1
如果所有的測(cè)試都過了,可以測(cè)試是否所有的分類的demo都工作。首先,從目錄C:\Projects\caffe中運(yùn)行python scripts\download_model_binary.py models\bvlc_reference_caffenet從model zoo中下載預(yù)先訓(xùn)練好的caffemodel,然后改變當(dāng)前路徑到C:\Projects\caffe\matlab\demo,然后運(yùn)行classification_demo。
使用Ninja產(chǎn)生器
如果想更快的構(gòu)建,可以選擇使用Ninja產(chǎn)生器替換Visual Studio,為了能這樣做,在構(gòu)建腳本文件中修改選項(xiàng)set WITH_NINJA=1,通過conda命令,從GitHub上下載并且安裝Ninja:
conda config --add channels conda-forge conda install ninja --yes- 1
- 2
當(dāng)使用Ninja的時(shí)候,不會(huì)產(chǎn)生Visual Studio解決方案文件,Ninja是與make一個(gè)體系的,一個(gè)選擇是使用Visual Studio Code并且使用CMake 擴(kuò)展和C++擴(kuò)展。
構(gòu)建一個(gè)共享庫
CMake可以被用來構(gòu)建一個(gè)共享庫,不僅僅是默認(rèn)的靜態(tài)庫,為了做到這一點(diǎn),需要Follow前面的步驟,并且使用-DBUILD_SHARED_LIBS=ON編譯選項(xiàng)。需要注意的是,一些測(cè)試(具體一些是solver相關(guān)的測(cè)試)會(huì)掛掉,原因是測(cè)試的執(zhí)行文件和Caffe的庫不共享在protobuf庫中的靜態(tài)對(duì)象。
已知的問題
- GPUTimer 相關(guān)的測(cè)試總是掛掉,這個(gè)貌似是以為Unix與Windows的不同
- 構(gòu)建共享庫會(huì)掛掉測(cè)試
- 只有使用Ninja產(chǎn)生器,共享庫構(gòu)建才工作
總結(jié)
以上是生活随笔為你收集整理的Windows 10 Visual Studio 2015 配置 Caffe的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 主成分变换的实现
- 下一篇: java信息管理系统总结_java实现科