【深度教程】Windows10 安裝環境配置 (Caffe2+VS2017+Windows10+x64+CPU)

Table of Content

  1. Overview
  2. 所需依賴
  3. 編譯安裝
  4. 在 VS 中引用

Overview

環境:Windows 10,64 位,僅支持 CPU,僅 C++

實測版本:Visual Studio 2017 Professional + Python 3.7.2 (Anaconda 1.9.6) + CMake 3.13.4 + Git 2.20.1

Caffe2 現僅支持 x64 版本,若需支持 GPU,有額外的配置步驟,具體請參考相關文檔

Caffe2 仍在不斷更迭,Python 以外環境的文檔還相當欠缺,本文主要基於當前版本文檔教程、技術博客及個人探索嘗試,不保證能夠應用於所有環境的所有版本配置,請知悉


所需依賴

Visual Studio

安裝 Visual Studio 2017,三種版本皆可,建議語言英文,安裝時左側必須勾選 Desktop Development with C++,右側必須勾選 C++/CLI support

通常原有的 Visual Studio 2012 可以保留,如需多版本並行,建議先安裝低版本,再安裝高版本

另外,自 Visual Studio 2015 以後,C++ 標準庫被抽離出來成爲獨立的 C Run-Time Libraries (CRT),默認路徑 C:\Program Files (x86)\Windows Kits\10\Lib

因此,在低版本 Visual Studio 2012 中,可能會丟失必需的 C++ 標準庫,工程屬性中需要額外添加 include 與 lib(x86/x64) 兩個路徑,默認 C:\Program Files (x86)\Microsoft Visual Studio\2012\VC\include 與 C:\Program Files (x86)\Microsoft Visual Studio\2012\VC\lib (\amd64)

Python

官方推薦安裝 Python 2.7.6 到 2.7.14,Python 3 現只提供實驗性支持,可通過 Anaconda 進行安裝

如果安裝 Python 2.7 版本,還需要額外安裝 VC++ Compiler

安裝必需的 Python 依賴:

pip install future hypothesis numpy protobuf six

可選的非必需 Python 依賴:

pip install flask glog graphviz jupyter matplotlib pydot python-nvd3 pyyaml requests scikit-image scipy setuptools tornado

CMake

Git

環境變量

添加系統變量中的 Path:

…\Python27 或 …\Anaconda3
…\Python27\scripts 或 …\Anaconda3\scripts
…\CMake\bin
…\Git\cmd

編譯安裝

下載源碼

推薦使用 Git 的方式 clone,因爲採用下載 .zip 的方式會丟失第三方依賴模塊,導致編譯失敗

git clone --recursive https://github.com/pytorch/pytorch.git

編譯源碼

打開 Developer Command Prompt for VS 2017

運行 ${PYTORCH_ROOT}\scripts\build_host_protoc.bat

如果需要編譯 Python 環境,編輯 ${PYTORCH_ROOT}\scripts\build_windows.bat,將 CMake 參數中的 -DBUILD_PYTHON=OFF 改爲 -DBUILD_PYTHON=ON

運行 ${PYTORCH_ROOT}\scripts\build_windows.bat

編譯需要一段較長的時間,成功後會提示 Caffe2 built successfully,且在 ${PYTORCH_ROOT}\scripts\ 下生成 Caffe2.sln 工程

生成安裝

必須以管理員身份運行 Visual Studio 2017,打開 Caffe2.sln 工程

在 Release x64 模式下生成解決方案

成功後右鍵點擊工程列表中的 INSTALL,生成項目

成功後默認會在 C:\Program Files\Caffe2\ 下安裝 Caffe2 的運行庫文件,包含 bin\ cmake\ include\ lib\ share\ 共五個文件夾

這一安裝路徑可在 ${PYTORCH_ROOT}\scripts\cmake_install.cmake 中第 5 行進行自定義

由於默認安裝庫不全,完成之後還需要將 ${PYTORCH_ROOT}\scripts\lib\Release\ 下獨有的 .lib 和 .dll 文件拷貝到 C:\Program Files\Caffe2\lib\ 下


在 VS 中引用

在 Visual Studio 2017 中新建 C++ Windows Console Application 工程,切換至 Release x64 模式,右鍵編輯工程屬性

引用目錄

在 VC++ Directories - Include Directories 中添加

C:\Program Files\Caffe2\include
C:\Program Files\Caffe2\include\c10
C:\Program Files\Caffe2\include\caffe2
C:\Program Files\Caffe2\include\google
C:\Program Files\Caffe2\include\onnx

庫目錄

在 VC++ Directories - Library Directories 中添加

C:\Program Files\Caffe2\lib

附加依賴項

在 Linker - Input - Additional Dependencies 中添加

c10.lib
caffe2.lib
Caffe2_perfkernels_avx.lib
Caffe2_perfkernels_avx2.lib
Caffe2_perfkernels_avx512.lib
caffe2_protos.lib
clog.lib
cpuinfo.lib
cpuinfo_internals.lib
foxi.lib
foxi_dummy.lib
foxi_loader.lib
libprotobuf.lib
libprotobuf-lite.lib
libprotoc.lib
onnx.lib
onnx_proto.lib
onnxifi.lib
onnxifi_dummy.lib
onnxifi_loader.lib

運行庫

將 C/C++ - Code Generation - Runtime Library 由 Multi-threaded DLL (/MD) 改爲 Multi-threaded (/MT)

SDL 檢查

將 C/C++ - General - SDL Checks 由 Yes (/sdl) 改爲 No (/sdl-)

修改源碼

爲避免 VS 中的 IntelliSense 錯誤,修改了 Caffe2\include 文件中的兩處源碼

修改了 c10\marcos\Marcos.h 中的 line 46:

//#elif __cplusplus && defined(__has_cpp_attribute)
#elif __cplusplus && defined(__clang__) && defined(__has_cpp_attribute)

註釋了 c10\util\ArrayRef.h 中的 line 273:

//using IntList C10_DEPRECATED_USING = ArrayRef<int64_t>;

編譯生成

導入頭文件:

#include "caffe2/core/flags.h"
#include "caffe2/core/init.h"
#include "caffe2/predictor/predictor.h"
#include "caffe2/utils/proto_utils.h"

在 main 函數中添加:

caffe2::NetDef net;
caffe2::TensorCPU input;

生成解決方案,應該就沒問題了

如果還有問題……那就愉快地 debug 吧……


希望能夠對大家有所幫助 ~ 轉載請註明出處 ~

BACK to TOP

References

[1] Install Caffe2 | windows & compile

[2] Windows安裝caffe2 支持GPU和CPU

[3] Caffe2的安裝

[4] Introducing the Universal CRT | Visual C++ Team Blog

[5] Window下的Caffe2編譯 - 阿丹的彩蛋

[6] Windows10下VS2017+caffe2 - HY_JT的博客

[7] caffe2 01 caffe2 win10 vs2017編譯(默認CPU版本) - 一朵花開的時間

[8] Caffe2——C++ 預測(predict)Demo - 清水汪汪

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章