Libtorch+VS2017+Opencv环境配置攻略

Pytorch目前是Facebook开发的深度学习框架,该框架具有环境搭建简单,接口方便等优点。该框架下具有两套巨口(python训练和预测接口和C++对应预测接口)。本文今天给大家介绍如何在VS2017环境下调用python训练好的模型文件进行预测。

 

 

我的系统和软件环境(本文默认你已经正确安装了以下的环境):

  • 1. Windows10 专业版
  • 2. CUDA10.1, CUDNN7.5.1
  • 3. Visual studio2017
  • 4. pytorch和libtorch,版本为1.0.1这里强调一下,pytorch的的版本和libtorch需要对应,否则一定会出现pytorch训练好的模型,C++的libtorch无法调用的情况。具体怎么将pytorch训练好的模型转换成C++对应的接口,将在其他篇幅进行介绍,网上也有很多。
  • 可以使用如下的方式查看自己pytorch的版本。
  • Libtorch+VS2017+Opencv环境配置攻略_第1张图片
  • 5. opencv
  • 6. cmake

使用cmake配置环境的方式

  • 第一步:在电脑上安装CMake工具,并配相应的环境变量,进入cmd命令行键入:cmake --version。查看对应的版本:
  • 新建一个main.cpp函数,使用最简单的libtorch框架写几句话即可,代码如下:
  • #include 
    #include "torch/script.h"
    #include 
    #include 
    #include 
    #include 
    #include 
    
    using namespace std; 
    
    int main()
    {
        // 读取我们的权重信息
        std::shared_ptr module = torch::jit::load("./models/test.pt");
        module->to(at::kCUDA);
    
        assert(module != nullptr);
    
        // 建立一个输入,维度为(1,3,224,224),并移动至cuda
        std::vector inputs;
        inputs.push_back(torch::ones({1, 3, 224, 224}).to(at::kCUDA));
    
    // Execute the model and turn its output into a tensor.
        at::Tensor output = module->forward(inputs).toTensor();
    
        std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << '\n';
    }

     

  • 新建一个makelist文件用于执行Cmake编译,信息如下:
  • cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
    project(test)
    
    find_package(Torch REQUIRED)
    find_package(OpenCV REQUIRED)
    
    if(NOT Torch_FOUND)
        message(FATAL_ERROR "Pytorch Not Found!")
    endif(NOT Torch_FOUND)
    
    message(STATUS "Pytorch status:")
    message(STATUS "    libraries: ${TORCH_LIBRARIES}")
    
    message(STATUS "OpenCV library status:")
    message(STATUS "    version: ${OpenCV_VERSION}")
    message(STATUS "    libraries: ${OpenCV_LIBS}")
    message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
    
    
    add_executable(test test.cpp)
    target_link_libraries(test ${TORCH_LIBRARIES} ${OpenCV_LIBS})
    set_property(TARGET test PROPERTY CXX_STANDARD 11)

     

  • 新建一个build目录,并将libtorch和opencv的源代码放在同级的目录下,在cmd命令行进入到build目录下,最终的目录结构如下:

Libtorch+VS2017+Opencv环境配置攻略_第2张图片

  • 在命令行键入如下命令:
    cmake -DCMAKE_PREFIX_PATH=K:\libtorch_test\opencv\build\x64\vc15\lib;K:\libtorch_test\libtorch -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 15 Win64" ..

    其中:    K:\libtorch_test\opencv\build\x64\vc15\lib;: 表示opencv库的路径

    K:\libtorch_test\libtorch:libtorch的路径

    Visual Studio 15 Win64:使用visual studio2017 x64

  • 运行成功后,进入build目录下,此时会生成如下信息:

Libtorch+VS2017+Opencv环境配置攻略_第3张图片

  • 双击打开test.sln使用VS2017编译test即可。
  • 由于opencv 和libtorch太大了,上传不了,可以将下载好的opencv和libtorch按照上面的目录进行放置,注意编译的时候需要在VS环境下将对应的oepncv和libtorch目录改成你工程所在盘的目录。由于大家可能不一定能下载到libtorch对应1.0.1的版本,我下面放了两个下载地址,一个是工程的下载地址和libtorch1.0.1的下载地址,opencv网上很多版本随便。
  • 工程下载地址:https://download.csdn.net/download/xiaolintyd/11673507
  • libtorch1.0.1下载地址:https://pan.baidu.com/s/1nJuOfe74zEAwIxnO2yE-FA 提取码:vvro

你可能感兴趣的:(Pytorch)