Win 10 VS 2017使用Caffe詳細まとめ
20703 ワード
本リンク
https://blog.csdn.net/fengtaoO08/article/details/83023428
1はじめに
本明細書では、Win 10システムにcaffeをインストールおよび構成します.ネットワーク上の多くの記事とは異なり、本稿ではVS 2017環境でCUDA 9をコンパイルする.0バージョンのcaffe.実際、本明細書の構成プロセスは、より高いバージョンのCUDAのインストールプロセスと同様であり、読者は参照することができる.
2シンボル規則
本明細書では、caffeをインストールする準備をしているディレクトリパスを
3システム環境 OS:Windows 10 x64 CPU:Intel Core i7-8700K 3.70GHz GPU:Nvidia GEFORCE GTX 1080 Ti Memory RAM:8GB x2
4プリインストール Microsoft Visual Studio Community 2017 version 15.8 Anaconda3 version 4.3.30 with Python 3.6.5 Nvidia CUDA 9.0 cuDNN v7.3.1 for CUDA 9.0 Git v2.19.1 OpenCV 3.4.1 MatLab 2018a
5 caffeの取得
caffeのインストール準備中のディレクトリで次のコマンドを実行します.
6 caffeのコンパイル
この節は最も煩雑な一歩である.
6.1 VC++2017バージョン15.4 v 14.11ツールセット
新しいVS 2017 15.8に付属するVC++ツールセットバージョンはCUDA 9.0と深刻な互換性の問題があり、このバージョンのツールセットを直接使用してCUDA 9.0をコンパイルすると多くのわけのわからないエラーが発生し、ネット上で解決方法を見つけるのは難しい.ただし、古いバージョンのVS 2017を再インストールする必要はありません.古いVC++2017バージョン15.4 v 14をインストールして使用するだけです.11ツールセットはCUDA 9.0をコンパイルすればよい.
6.1.1 VC++ツールセットのインストール
VS Installerを開き、インストールを修正し、インストールオプションの
6.1.2 VC++ツールセットの構成
VS 2017インストールパスで
6.2 buildの構成win.cmd
編集ファイル
6.2.1修正70~99行
自分の必要に応じて70~99行の内容を修正してコンパイルを構成する.参考までに個人構成は以下の通りです.
6.2.2 112行目を挿入
112行に次のコードを挿入します.
6.2.3 158行目の変更
158行の
次のように変更
6.3 WindowsDownloadPrebuiltDependenciesを変更します.cmake
ここで、1911はMSVCコンパイラのバージョン番号であり、VC++2017のバージョン15.4 v 14に対応する.11ツールセット、27はpythonバージョン番号です.
6.4 Cudaを修正する.cmake
6.4.1注記90~104行
は90~104行を以下のように注釈する
6.4.2 104行目を挿入
104行目に挿入
ここで、61は私のGTX 1080 TiグラフィックスカードのGPU計算能力を表しています.
6.5 Anaconda python環境の構成
プロジェクトの必要性のため、本明細書でインストールしたcaffeはpython 2.7環境でコンパイルされますが、本機でインストールしたAnaconda 3はpython 3.6がデフォルトでインストールされているため、python 2.7を作成する仮想環境を使用する必要があります.ここでは使用するAnacondaのコマンドについてのみ説明しますが、他の仮想環境を管理するコマンドは読者が自分で検索してください.
6.5.1 python 2.7仮想環境の作成
コマンドライン実行
6.5.2 python 2.7仮想環境のアクティブ化
コマンドライン実行
アクティブ化に成功すると、コマンドラインの前に
6.5.3 pycaffeのインストールに必要なパッケージ
本明細書ではcaffeのpythonインタフェースをインストールする必要があるため、pycaffeに必要なパッケージを先にインストールする必要があります.コマンドライン実行
インストールが完了するまで待機します.
6.6 build_の実行win.cmd
コマンドライン実行ファイル
自動生成されたopencvとその他ライブラリのプロファイルがVS 2017と一致しないため、手動で修正する必要があります.
6.7 OpenCVConfigを修正する.cmake
編集
6.8 nvccを修正する.hpp
編集
6.9 build_を再実行win.cmd
コマンドラインで
これは符号化文字の問題によるものであり、他の非乱符号化警告と同様に、コンパイルプロセスに影響を及ぼさず、処理する必要はない.約10分でコンパイルが終了し、エラー数が0の場合はコンパイルに成功します.
7 caffeのpythonインタフェース
実行コマンド
エラーが報告されていない場合は、インストールに成功したことを示します.
8 caffeのMatlabインタフェース
は、
次に、Link:bvlc_からインタフェースが成功したかどうかをテストします.reference_caffenet.caffemodelは
https://blog.csdn.net/fengtaoO08/article/details/83023428
1はじめに
本明細書では、Win 10システムにcaffeをインストールおよび構成します.ネットワーク上の多くの記事とは異なり、本稿ではVS 2017環境でCUDA 9をコンパイルする.0バージョンのcaffe.実際、本明細書の構成プロセスは、より高いバージョンのCUDAのインストールプロセスと同様であり、読者は参照することができる.
2シンボル規則
本明細書では、caffeをインストールする準備をしているディレクトリパスを
%CAFFE_DIR%
で表します.D:\Caffe\
のような実際のパスに置き換えてください. 本明細書では、Windowsユーザー名を%USER_NAME%
で表すため、WindowsユーザーフォルダパスはC:\Users\%USER_NAME%
であるため、読者自身が実際のパスに置き換えてください.3システム環境
4プリインストール
5 caffeの取得
caffeのインストール準備中のディレクトリで次のコマンドを実行します.
git clone https://github.com/BVLC/caffe.git
cd caffe
git checkout windows
6 caffeのコンパイル
この節は最も煩雑な一歩である.
6.1 VC++2017バージョン15.4 v 14.11ツールセット
新しいVS 2017 15.8に付属するVC++ツールセットバージョンはCUDA 9.0と深刻な互換性の問題があり、このバージョンのツールセットを直接使用してCUDA 9.0をコンパイルすると多くのわけのわからないエラーが発生し、ネット上で解決方法を見つけるのは難しい.ただし、古いバージョンのVS 2017を再インストールする必要はありません.古いVC++2017バージョン15.4 v 14をインストールして使用するだけです.11ツールセットはCUDA 9.0をコンパイルすればよい.
6.1.1 VC++ツールセットのインストール
VS Installerを開き、インストールを修正し、インストールオプションの
でVC++ 2017 15.4 v14.11
を選択してインストールします.6.1.2 VC++ツールセットの構成
VS 2017インストールパスで
vcvars64.bat
所在ディレクトリを検索し、参照パスはC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\
である.パスの下にあるvcvars64.bat
をコピーし、vcvars64_VC1411.bat
と名前を変更します.@call "%~dp0vcvarsall.bat" x64 -vcvars_ver=14.11 %*
6.2 buildの構成win.cmd
編集ファイル
vcvars64_VC1411.bat
は、以下のように修正して保存する.6.2.1修正70~99行
自分の必要に応じて70~99行の内容を修正してコンパイルを構成する.参考までに個人構成は以下の通りです.
:: Change the settings here to match your setup
:: Change MSVC_VERSION to 12 to use VS 2013
:: 【 VS2017,MSVC_VERSION=15】
if NOT DEFINED MSVC_VERSION set MSVC_VERSION=15
:: Change to 1 to use Ninja generator (builds much faster)
:: 【 Ninja】
if NOT DEFINED WITH_NINJA set WITH_NINJA=0
:: Change to 1 to build caffe without CUDA support
:: 【 GPU 】
if NOT DEFINED CPU_ONLY set CPU_ONLY=0
:: Change to generate CUDA code for one of the following GPU architectures
:: [Fermi Kepler Maxwell Pascal All]
if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto
:: Change to Debug to build Debug. This is only relevant for the Ninja generator the Visual Studio generator will generate both Debug and Release configs
if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release
:: Set to 1 to use NCCL
if NOT DEFINED USE_NCCL set USE_NCCL=0
:: Change to 1 to build a caffe.dll
if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0
:: Change to 3 if using python 3.5 (only 2.7 and 3.5 are supported)
:: 【 Anaconda python, python2.7 ,PYTHON_VERSION=2】
if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=2
:: Change these options for your needs.
:: 【 python 】
if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1
if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1
:: 【 matlab 】
if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=1
:: If python is on your path leave this alone
if NOT DEFINED PYTHON_EXE set PYTHON_EXE=python
:: Run the tests
if NOT DEFINED RUN_TESTS set RUN_TESTS=0
:: Run lint
if NOT DEFINED RUN_LINT set RUN_LINT=0
:: Build the install target
if NOT DEFINED RUN_INSTALL set RUN_INSTALL=0
6.2.2 112行目を挿入
112行に次のコードを挿入します.
if "%MSVC_VERSION%"=="15" (
set CMAKE_GENERATOR=Visual Studio 15 2017 Win64
)
6.2.3 158行目の変更
158行の
%CAFFE_DIR%\caffe\scripts\build_win.cmd
値を、batch_file
節で修正されたファイル6.1.2
の絶対パスに修正します.set batch_file=!VS%MSVC_VERSION%0COMNTOOLS!..\..\VC\vcvarsall.bat
次のように変更
set batch_file=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64_VC1411.bat
6.3 WindowsDownloadPrebuiltDependenciesを変更します.cmake
vcvars64_VC1411.bat
ファイルを編集し、14行目に挿入set(DEPENDENCIES_URL_1911_27 "${DEPENDENCIES_URL_BASE}/v${DEPENDENCIES_VERSION}/${DEPENDENCIES_NAME_1900_27}${DEPENDENCIES_FILE_EXT}")
set(DEPENDENCIES_SHA_1911_27 "17eecb095bd3b0774a87a38624a77ce35e497cd2")
ここで、1911はMSVCコンパイラのバージョン番号であり、VC++2017のバージョン15.4 v 14に対応する.11ツールセット、27はpythonバージョン番号です.
6.4 Cudaを修正する.cmake
%CAFFE_DIR%\caffe\cmake\WindowsDownloadPrebuiltDependencies.cmake
ファイルを編集し、以下のように修正して保存します.6.4.1注記90~104行
は90~104行を以下のように注釈する
# if(${CUDA_ARCH_NAME} STREQUAL "Fermi")
# set(__cuda_arch_bin "20 21(20)")
# elseif(${CUDA_ARCH_NAME} STREQUAL "Kepler")
# set(__cuda_arch_bin "30 35")
# elseif(${CUDA_ARCH_NAME} STREQUAL "Maxwell")
# set(__cuda_arch_bin "50")
# elseif(${CUDA_ARCH_NAME} STREQUAL "Pascal")
# set(__cuda_arch_bin "60 61")
# elseif(${CUDA_ARCH_NAME} STREQUAL "All")
# set(__cuda_arch_bin ${Caffe_known_gpu_archs})
# elseif(${CUDA_ARCH_NAME} STREQUAL "Auto")
# caffe_detect_installed_gpus(__cuda_arch_bin)
# else() # (${CUDA_ARCH_NAME} STREQUAL "Manual")
# set(__cuda_arch_bin ${CUDA_ARCH_BIN})
# endif()
6.4.2 104行目を挿入
104行目に挿入
set(__cuda_arch_bin "61")
ここで、61は私のGTX 1080 TiグラフィックスカードのGPU計算能力を表しています.
%CAFFE_DIR%\caffe\cmake\Cuda.cmake
でNvidiaのすべてのグラフィックスカードの計算能力を検索し、グラフィックスカードの計算能力の数値に変更すればいいです.6.5 Anaconda python環境の構成
プロジェクトの必要性のため、本明細書でインストールしたcaffeはpython 2.7環境でコンパイルされますが、本機でインストールしたAnaconda 3はpython 3.6がデフォルトでインストールされているため、python 2.7を作成する仮想環境を使用する必要があります.ここでは使用するAnacondaのコマンドについてのみ説明しますが、他の仮想環境を管理するコマンドは読者が自分で検索してください.
6.5.1 python 2.7仮想環境の作成
コマンドライン実行
conda create -n py27 python=2.7
6.5.2 python 2.7仮想環境のアクティブ化
コマンドライン実行
activate py27
アクティブ化に成功すると、コマンドラインの前に
https://developer.nvidia.com/cuda-gpus
と表示されます.なお、後述するコマンドラインコマンドは、この仮想環境で実行されます.6.5.3 pycaffeのインストールに必要なパッケージ
本明細書ではcaffeのpythonインタフェースをインストールする必要があるため、pycaffeに必要なパッケージを先にインストールする必要があります.コマンドライン実行
conda install --yes numpy scipy protobuf six scikit-image pyyaml pydotplus graphviz
インストールが完了するまで待機します.
6.6 build_の実行win.cmd
コマンドライン実行ファイル
(py27)
は、caffe依存ライブラリを自動的にダウンロードしますが、openCV構成エラーが表示され、エラー印刷フラグメントは次のようになります....
Call Stack (most recent call first):
cmake/Dependencies.cmake:114 (find_package)
CMakeLists.txt:80 (include)
CMake Error at cmake/Dependencies.cmake:114 (find_package):
Found package configuration file:
C:/Users/%USER_NAME%/.caffe/dependencies/libraries/OpenCVConfig.cmake
but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be
NOT FOUND.
Call Stack (most recent call first):
CMakeLists.txt:80 (include)
-- Configuring incomplete, errors occurred!
See also "%CAFFE_DIR%/caffe/build/CMakeFiles/CMakeOutput.log".
See also "%CAFFE_DIR%/caffe/build/CMakeFiles/CMakeError.log".
ERROR: Configure failed
...
自動生成されたopencvとその他ライブラリのプロファイルがVS 2017と一致しないため、手動で修正する必要があります.
6.7 OpenCVConfigを修正する.cmake
編集
%CAFFE_DIR%\caffe\scripts\build_win.cmd
、86行挿入保存elseif(MSVC_VERSION EQUAL 1911)
set(OpenCV_RUNTIME vc14)
6.8 nvccを修正する.hpp
編集
C:\Users\%USER_NAME%\.caffe\dependencies\libraries\OpenCVConfig.cmake
、ファイル全体を次のように置き換えて保存// (C) Copyright Eric Jourdanneau, Joel Falcou 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org for most recent version.
// NVIDIA CUDA C++ compiler setup
#ifndef BOOST_COMPILER
# define BOOST_COMPILER "NVIDIA CUDA C++ Compiler"
#endif
#if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__)
# define BOOST_CUDA_VERSION __CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__
#else
// We don't really know what the CUDA version is, but it's definitely before 7.5:
# define BOOST_CUDA_VERSION 7000000
#endif
// NVIDIA Specific support
// BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device
#define BOOST_GPU_ENABLED __host__ __device__
// A bug in version 7.0 of CUDA prevents use of variadic templates in some occasions
// https://svn.boost.org/trac/boost/ticket/11897
// This is fixed in 7.5. As the following version macro was introduced in 7.5 an existance
// check is enough to detect versions < 7.5
#if BOOST_CUDA_VERSION < 7050000
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif
// The same bug is back again in 8.0:
#if (BOOST_CUDA_VERSION > 8000000) && (BOOST_CUDA_VERSION < 8010000)
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif
// Most recent CUDA (8.0) has no constexpr support in msvc mode:
#if defined(_MSC_VER)
# define BOOST_NO_CXX11_CONSTEXPR
#endif
#ifdef __CUDACC__
//
// When compiing .cu files, there's a bunch of stuff that doesn't work with msvc:
//
#if defined(_MSC_VER)
# define BOOST_NO_CXX14_DIGIT_SEPARATORS
# define BOOST_NO_CXX11_UNICODE_LITERALS
#endif
//
// And this one effects the NVCC front end,
// See https://svn.boost.org/trac/boost/ticket/13049
//
#if (BOOST_CUDA_VERSION >= 8000000) && (BOOST_CUDA_VERSION < 8010000)
# define BOOST_NO_CXX11_NOEXCEPT
#endif
#endif
6.9 build_を再実行win.cmd
コマンドラインで
C:\Users\%USER_NAME%\.caffe\dependencies\libraries\include\boost-1_61\boost\config\compiler
vcc.hpp
を実行し、コンパイルを円滑に行います.コンパイル中に大量の警告が出力されます.その中には多くの文字化けが含まれています.次のようにします....
d:
vida gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(4417): warning C4819:
(936) Unicode [%CAFFE_DIR%\caffe\scripts\build\src\caffe\caffe.vcx
proj]
d:
vida gpu computing toolkit\cuda\v9.0\include\crt\math_functions.h(5319): warning C4819:
(936) Unicode [%CAFFE_DIR%\caffe\scripts\build\src\caffe\caffe.vcx
proj]
...
これは符号化文字の問題によるものであり、他の非乱符号化警告と同様に、コンパイルプロセスに影響を及ぼさず、処理する必要はない.約10分でコンパイルが終了し、エラー数が0の場合はコンパイルに成功します.
7 caffeのpythonインタフェース
%CAFFE_DIR%\caffe\scripts\build_win.cmd
パスの下の%CAFFE_DIR%\caffe\python
フォルダをAnacondaの仮想環境caffe
のpy27
パスの下、参照パスsite-packages
にコピーします. D:\Anaconda3_64\envs\py27\Lib\site-packages
仮想環境で、実行コマンドはpythonコマンド編集モードに入ります.python
実行コマンド
import caffe
エラーが報告されていない場合は、インストールに成功したことを示します.
8 caffeのMatlabインタフェース
は、
py27
パスの下の%CAFFE_DIR%\caffe\matlab\+caffe\private\Release
をcaffe_.mexw64
ディレクトリの下にコピーする. システム環境変数%CAFFE_DIR%\caffe\matlab\+caffe\private\
にPATH
を追加MatLabで%CAFFE_DIR%\caffe\scripts\build\install\bin
タブを選択し、
ボタンをクリックして以下のMATLAB検索パスを追加%CAFFE_DIR%\caffe\scripts\build\install\bin
%CAFFE_DIR%\caffe\scripts\build\install
次に、Link:bvlc_からインタフェースが成功したかどうかをテストします.reference_caffenet.caffemodelは
からbvlc_reference_caffenet.caffemodel
フォルダの下にダウンロードし、MatLabでスクリプト%CAFFE_DIR%\caffe\models\bvlc_reference_caffenet
を実行します.成功すると、1000クラスの確率ベクトルが印刷され、282クラス(tabby,tabby cat)の確率は0.2985です.