当前位置: 首页 > 工具软件 > Caffe2 > 使用案例 >

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

郭业
2023-12-01

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)

[注] 最新版本 Visual Studio 2017 更新已修复此问题

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/net.h"
#include "caffe2/core/blob.h"
#include "caffe2/core/init.h"
#include "caffe2/core/flags.h"
#include "caffe2/core/common.h"
#include "caffe2/core/operator.h"
#include "caffe2/proto/caffe2_pb.h"
#include "caffe2/utils/proto_utils.h"
#include "caffe2/utils/string_utils.h"
#include "caffe2/predictor/predictor.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 - 清水汪汪

 类似资料: