windows下配置caffe-matlab接口
一、環(huán)境說明
也是安裝順序。特別強(qiáng)調(diào)的是除VS2015以外,其他軟件的安裝路徑都最好不要包含空格。
1、Windows 64位系統(tǒng)。
2、Visual Studio 2015(VS2015, 對應(yīng)VC14)。
3、Matlab 2017a。Matlab的版本倒不是很重要,只要支持Matlab 2015a之后的版本都應(yīng)該支持。所以如果安裝了其他版本的Matlab,可以先不用安裝2017a。安裝完之后要把其中的bin目錄和runtime\bin目錄加入環(huán)境變量Path。
4、CMake 3.14。安裝時要選擇將CMake添加到環(huán)境變量Path,然后下面的路徑就會自動添加到環(huán)境變量Path。
C:\Program Files\CMake\bin5、Miniconda2的Python2.7版本。安裝的時候記得勾選add anaconda to environment path。然后下面的路徑就會自動添加到環(huán)境變量Path。安裝完conda之后,記得把conda的源換成國內(nèi)的源,否則下載庫會特別慢。
D:\Libs\MiniConda D:\Libs\MiniConda\Library\mingw-w64\bin D:\Libs\MiniConda\Library\usr\bin D:\Libs\MiniConda\Library\bin D:\Libs\MiniConda\Scripts安裝完成后,打開命令行,輸入cmake和python --version,檢查cmake是否工作以及python版本是否正確。如果Python的版本不是2.7,請?jiān)诃h(huán)境變量中刪除其他Python版本的路徑。
二、編譯Caffe-Windows
1、下載資源
- Caffe-Windows
打開https://github.com/BVLC/caffe/tree/windows,下載源碼(可直接點(diǎn)擊下載)。 - libraries_v140_x64_py27_1.1.0.tar.bz2
這個是caffe要依賴的庫,點(diǎn)擊下載。v140對應(yīng)VS2015,x64對應(yīng)系統(tǒng)架構(gòu),py27對應(yīng)python版本。下載完成之后,打開libraries_v140_x64_py27_1.1.0.tar.bz2所在目錄,按住Shift鍵,右鍵單擊空白處,然后選擇“在此處打開powershell窗口”,打開命令行,執(zhí)行下面的命令:
執(zhí)行上面的命令就是把libraries_v140_x64_py27_1.1.0.tar.bz2復(fù)制到%USERPROFILE%\.caffe\dependencies\download這個目錄里面去。%USERPROFILE%是當(dāng)前用戶的目錄。可在命令行中使用echo %USERPROFILE%來查看。
2、編輯CMakeLiss.txt
- 解壓caffe-windows,打開caffe-windows\CMakeLiss.txt,在:
之前加入如下幾行:
# ---[Install directory: D:\Libs\Caffe set(CMAKE_INSTALL_PREFIX "D:/Libs/Caffe")# ---[Set Matlab_DIR set(Matlab_DIR "D:/Program Files/MATLAB/R2017a")CMAKE_INSTALL_PREFIX 指定Caffe的安裝路徑,Matlab_DIR 指定Matlab的根目錄。
- 打開caffe-windows\cmake\Utils.cmake,把357行的:
改為:
# message(FATAL_ERROR "Logic error. Need to update cmake script")3、編輯build_win.cmd
- 打開caffe-windows\scripts\build_win.cmd,如下就是編譯選項(xiàng)部分:
在if DEFINED APPVEYOR之前添加如下幾行:
:: Default values set WITH_NINJA=0 set BUILD_MATLAB=1 set CPU_ONLY=1 set PYTHON_VERSION=2 set BUILD_PYTHON_LAYER=1 if DEFINED APPVEYOR (echo Setting Appveyor defaultsif NOT DEFINED MSVC_VERSION set MSVC_VERSION=14if NOT DEFINED WITH_NINJA set WITH_NINJA=0...WITH_NINJA:不使用NINJA編譯;BUILD_MATLAB:編譯Matlab模塊,CPU_ONLY:不適用CUDA加速;PYTHON_VERSION:指定python版本。BUILD_PYTHON_LAYER:編譯pycaffe模塊。
- 然后設(shè)置conda的安裝目錄,把
修改為
:: Set python 2.7 with conda as the default pythonif !PYTHON_VERSION! EQU 2 (set CONDA_ROOT=D:\Libs\MiniConda)D:\Libs\MiniConda是Conda的安裝路徑。
- 然后在
后面添加一行
if ERRORLEVEL 1 (echo ERROR: Configure failedexit /b 1 )exit /b 1:: Lint ...exit /b 1是退出cmd的命令,添加這行的目的是觀察cmake的結(jié)果。
4、執(zhí)行build_win.cmd
- 安裝pycaffe的依賴:
在執(zhí)行這一步之前,建議先把conda的源換成國內(nèi)的源。
- 進(jìn)入caffe-windows\scripts目錄,空白處按住shift+點(diǎn)鼠標(biāo)右鍵,然后打開powershell,輸入:
對,build_win.cmd就是要執(zhí)行兩遍,因?yàn)榈谝槐榈陌惭b目錄不正確。輸出類似為(我把需要相同的部分標(biāo)記出來, #后面就是我的注釋):
...... # 需要找到Matlab -- Found Matlab: D:/Program Files/MATLAB/R2017a/extern/include (found version "9.2") found components: MAIN_PROGRAM MX_LIBRARY -- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.19.1.windows.1") -- -- ******************* Caffe Configuration Summary ******************* -- General: -- Version : 1.0.0 -- Git : unknown -- System : Windows -- C++ compiler : C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- Release CXX flags : /MD /O2 /Ob2 /DNDEBUG /DWIN32 /D_WINDOWS /W3 /GR /EHsc -- Debug CXX flags : /MDd /Zi /Ob0 /Od /RTC1 /DWIN32 /D_WINDOWS /W3 /GR /EHsc -- Build type : Release # Release模式 -- -- BUILD_SHARED_LIBS : 0 # 需要相同 -- BUILD_python : 1 # 需要相同 -- BUILD_matlab : 1 # 需要相同 -- BUILD_docs : -- CPU_ONLY : 1 # 需要相同 -- USE_OPENCV : ON # 需要相同 -- USE_LEVELDB : ON # 需要相同 -- USE_LMDB : ON # 需要相同 -- USE_NCCL : 0 # 需要相同 -- ALLOW_LMDB_NOLOCK : OFF # 需要相同 -- -- Dependencies: -- BLAS : Yes (Open) # 需要相同 -- Boost : Yes (ver. 1.61) # 需要相同 -- glog : Yes # 需要相同 -- gflags : Yes # 需要相同 -- protobuf : Yes (ver. 3.1.0) # 需要相同 -- lmdb : Yes (ver. 0.9.70) # 需要相同 -- LevelDB : Yes (ver. 1.18) # 需要相同 -- Snappy : Yes (ver. 1.1.1) # 需要相同 -- OpenCV : Yes (ver. 3.1.0) # 需要相同 -- CUDA : No # 需要相同 -- -- Python: # 這里需要找到Python -- Interpreter : D:/Libs/MiniConda/python.exe (ver. 2.7.15) -- Libraries : D:/Libs/MiniConda/libs/python27.lib (ver 2.7.15) -- NumPy : D:/Libs/MiniConda/lib/site-packages/numpy/core/include (ver 1.13.1) -- -- Matlab: -- Matlab : Yes (, # 需要找到Matlab -- Octave : No -- -- Install: -- Install path : D:/Libs/Caffe # 需要相同 -- -- Configuring done -- Generating done ......得到上面的結(jié)果之后,刪除在build_win.cmd添加的那行exit /b 1,然后重新執(zhí)行build_win.cmd,開始編譯依賴庫。編譯完成后,把下面的幾條加入環(huán)境變量Path。
%USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\bin %USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\lib %USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\x64\vc14\bin %USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\x64\vc14\lib %USERPROFILE%\.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\x64\vc14\staticlib5、編譯Caffe
打開caffe-windows\script\Caffe.sln,使用VS2015打開。把編譯模式切換為Release模式,然后右鍵單擊INSTALL子項(xiàng)目,右鍵單擊,選擇“生成”,然后就開始編譯Caffe了,編譯完會自動安裝到D:\Libs\Caffe。
編譯完成后,把D:\Libs\Caffe里面的bin、lib、matlab+caffe\private和matlab+caffe\private\Release加入到環(huán)境變量Path。下面是我添加的環(huán)境變量:
至此,caffe編譯完成。
三、使用Caffe
1、Matlab
在.m文件的最前面加入如下代碼:
PATH_TO_CAFFE_MATLAB='D:/Libs/Caffe/matlab/'; addpath(genpath(PATH_TO_CAFFE_MATLAB));PATH_TO_CAFFE_MATLAB是前面install的安裝路徑。添加上面的代碼之后,Matlab就能找到Caffe。還有最關(guān)鍵的一步是,把D:\Libs\Caffe\matlab+caffe\private\Release\caffe_.mexw64復(fù)制到和.m文件同一級目錄下,否則會出現(xiàn)如下錯誤:
-
在matlab中使用caffe接口
經(jīng)過編譯后,會生成build文件夾。在網(wǎng)上看的教程大多是在caffe的根目錄下生成,不過我的是在script/目錄下,即build_cmd同目錄下生成的。經(jīng)過刪掉重新生成后,還是在script下,考慮到build里的很多設(shè)置是相對路徑,就不動了。
在matlab中添加路徑
里面添加caffe的matlab接口路徑現(xiàn)在,應(yīng)該可以使用了,調(diào)整matlab當(dāng)前路徑為caffe/matlab/demo/文件夾下,有claasification_demo.m文件可以進(jìn)行測試,如果無錯即配置完成。
-
Caffe 深度學(xué)習(xí)框架是支持 opencl gpu 計(jì)算加速的,為了在 msys2/mingw 環(huán)境下可以工作我做了少量修改 ?https://github.com/zhujiang73/caffe-windows-opencl??下圖是基于 OpenCL Caffe 做的畫框識圖,我只有一塊入門級小顯卡 GPU 版程序的圖像識別速度是 CPU 版的三倍左右.?
????
?
?????綜合考慮開發(fā)效率,運(yùn)行速度,和可移植性,選擇 msys2/mingw 作為開發(fā)環(huán)境,caffe 代碼的可移植性很好稍加修改就能在 mingw 環(huán)境下編譯。??????msys2集成了unix 風(fēng)格的shell 環(huán)境和 mingw 編譯工具,可以在windows 下寫 gcc 風(fēng)格的程序, ?結(jié)合msys2/mingw 版的emacs 就是一個很好的開發(fā)環(huán)境。?http://msys2.github.io/?
??????這兩天剛搞好 caffe 的 python 接口,雖然我認(rèn)為 msys2/mingw 比較好用,但是目前大多數(shù)軟件在 windows 下會優(yōu)先考慮 msvc 可移植,由于mingw 是 gcc 但不是unix 是 win 但不是msvc 比較小眾,所以很多軟件在 mingw ?下需要做些修改才能編譯,我把修改過的 caffe msys2/mingw 版放在:https://github.com/zhujiang73/caffe-windows-opencl?支持 opencl gpu 加速,支持 python 接口,算是比較完整了。caffe 這個“深度學(xué)習(xí)工具”雖然比較老但是比較適合機(jī)器視覺任務(wù),我目前只實(shí)驗(yàn)了cnn 等比較經(jīng)典的算法,下一步該實(shí)驗(yàn) rcnn 等改進(jìn)算法了,caffe 的缺點(diǎn)是框架不太靈活可能需要定制一些模塊才能實(shí)現(xiàn)新算法。
?
總結(jié)
以上是生活随笔為你收集整理的windows下配置caffe-matlab接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: std::make_unique和 st
- 下一篇: maven识别包下的xml