一、環境說明
也是安裝順序。特別強調的是除VS2015以外,其他軟件的安裝路徑都最好不要包含空格。
1、Windows 64位系統。
2、Visual Studio 2015(VS2015, 對應VC14)。
3、Matlab 2017a。Matlab的版本倒不是很重要,只要支持Matlab 2015a之後的版本都應該支持。所以如果安裝了其他版本的Matlab,可以先不用安裝2017a。安裝完之後要把其中的bin目錄和runtime\bin目錄加入環境變量Path。
D:\Program Files\MATLAB\R2017a\bin
D:\Program Files\MATLAB\R2017a\runtime\win64
4、CMake 3.14。安裝時要選擇將CMake添加到環境變量Path,然後下面的路徑就會自動添加到環境變量Path。
C:\Program Files\CMake\bin
5、Miniconda2的Python2.7版本。安裝的時候記得勾選add anaconda to environment path。然後下面的路徑就會自動添加到環境變量Path。安裝完conda之後,記得把conda的源換成國內的源,否則下載庫會特別慢。
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,請在環境變量中刪除其他Python版本的路徑。
二、編譯Caffe-Windows
1、下載資源
- Caffe-Windows
打開https://github.com/BVLC/caffe,下載源碼(可直接點擊下載)。 - libraries_v140_x64_py27_1.1.0.tar.bz2
這個是caffe要依賴的庫,點擊下載。v140對應VS2015,x64對應系統架構,py27對應python版本。下載完成之後,打開libraries_v140_x64_py27_1.1.0.tar.bz2所在目錄,按住Shift鍵,右鍵單擊空白處,然後選擇“在此處打開powershell窗口”,打開命令行,執行下面的命令:
cmd
md %USERPROFILE%\.caffe\dependencies\download
copy libraries_v140_x64_py27_1.1.0.tar.bz2 %USERPROFILE%\.caffe\dependencies\download
執行上面的命令就是把libraries_v140_x64_py27_1.1.0.tar.bz2複製到%USERPROFILE%\.caffe\dependencies\download這個目錄裏面去。%USERPROFILE%是當前用戶的目錄。可在命令行中使用echo %USERPROFILE%
來查看。
2、編輯CMakeLiss.txt
- 解壓caffe-windows,打開caffe-windows\CMakeLiss.txt,在:
# ---[ Caffe project
project(Caffe C CXX)
之前加入如下幾行:
# ---[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")
改爲:
message(WARNING "Logic error. Need to update cmake script")
3、編輯build_win.cmd
- 打開caffe-windows\scripts\build_win.cmd,如下就是編譯選項部分:
:: Default values
if DEFINED APPVEYOR (
echo Setting Appveyor defaults
if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14
...
在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 defaults
if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14
if NOT DEFINED WITH_NINJA set WITH_NINJA=0
...
WITH_NINJA:不使用NINJA編譯;BUILD_MATLAB:編譯Matlab模塊,CPU_ONLY:不適用CUDA加速;PYTHON_VERSION:指定python版本。BUILD_PYTHON_LAYER:編譯pycaffe模塊。
- 然後設置conda的安裝目錄,把
:: Set python 2.7 with conda as the default python
if !PYTHON_VERSION! EQU 2 (
set CONDA_ROOT=C:\Miniconda-x64
)
修改爲
:: Set python 2.7 with conda as the default python
if !PYTHON_VERSION! EQU 2 (
set CONDA_ROOT=D:\Libs\MiniConda
)
D:\Libs\MiniConda是Conda的安裝路徑。
- 然後在
if ERRORLEVEL 1 (
echo ERROR: Configure failed
exit /b 1
)
後面添加一行
if ERRORLEVEL 1 (
echo ERROR: Configure failed
exit /b 1
)
exit /b 1
:: Lint
...
exit /b 1
是退出cmd的命令,添加這行的目的是觀察cmake的結果。
4、執行build_win.cmd
- 安裝pycaffe的依賴:
conda install --yes pip
pip install ninja numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz
在執行這一步之前,建議先把conda的源換成國內的源。
- 進入caffe-windows\scripts目錄,空白處按住shift+點鼠標右鍵,然後打開powershell,輸入:
cmd
build_win.cmd
build_win.cmd
對,build_win.cmd就是要執行兩遍,因爲第一遍的安裝目錄不正確。輸出類似爲(我把需要相同的部分標記出來, #後面就是我的註釋):
......
# 需要找到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
......
得到上面的結果之後,刪除在build_win.cmd添加的那行exit /b 1
,然後重新執行build_win.cmd,開始編譯依賴庫。編譯完成後,把下面的幾條加入環境變量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\staticlib
5、編譯Caffe
打開caffe-windows\script\Caffe.sln,使用VS2015打開。把編譯模式切換爲Release模式,然後右鍵單擊INSTALL子項目,右鍵單擊,選擇“生成”,然後就開始編譯Caffe了,編譯完會自動安裝到D:\Libs\Caffe。
編譯完成後,把D:\Libs\Caffe裏面的bin、lib、matlab+caffe\private和matlab+caffe\private\Release加入到環境變量Path。下面是我添加的環境變量:
D:\Libs\Caffe\bin
D:\Libs\Caffe\lib
D:\Libs\Caffe\matlab\+caffe\private
D:\Libs\Caffe\matlab\+caffe\private\Release
至此,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。還有最關鍵的一步是,把D:\Libs\Caffe\matlab+caffe\private\Release\caffe_.mexw64複製到和.m文件同一級目錄下,否則會出現如下錯誤:
未定義函數或變量 'caffe_'。
2、Python
TODO
3、其他
請參考https://blog.csdn.net/xiamentingtao/article/details/78132836