Win10 VS2019 LibTorch环境配置及使用教程

LibTorch环境配置及使用教程

一.环境配置

操作系统:Win10
软件版本:VS2019,CUDA10.1,LibTorch1.6.0的Release版本包

1.新建VS工程,空项目或是控制台应用都可以,选择Release x64编译模式。

Win10 VS2019 LibTorch环境配置及使用教程_第1张图片

Release模式

2.将LibTorch库的lib文件夹下的dll都放到bin文件中。

注意:这一步可有可无,因为下载的LibTorch包,默认是将dll放在lib文件夹中的。

3.工程中配置LibTorch库的路径,右击工程,点击属性

Win10 VS2019 LibTorch环境配置及使用教程_第2张图片
(1)找到C/C++目录->常规->附加包含目录,添加LibTorch的include相关的的路径。

Win10 VS2019 LibTorch环境配置及使用教程_第3张图片
(2)找到链接器-常规-附加库目录,添加LibTorch的lib文件路径。

Win10 VS2019 LibTorch环境配置及使用教程_第4张图片
(3)找到链接器-输入,添加LibTorch的lib文件名称。

Win10 VS2019 LibTorch环境配置及使用教程_第5张图片

(4)将存放LibTorch库的dll文件的根目录放在环境变量中,或是将dll拷贝到工程名->x64->Release目录下。

注意:右击工程名,说明配置的这个包只在这个工程下才能用,如果想每次新建工程都能用的话,可以将路径配置在属性管理器->Release|x64-Microsoft.Cpp.x64.user下,这种方法适合于一些通用的库的配置,例如OpenCV,个人建议Libtorch单独在工程下配置为好,可以区分不同的版本信息。

二.使用教程:模型转换

利用Libtorch做推理,需要先将Python的模型序列化成LibTorch可以导入的模型,方法如下:

model = torch.load('..\\model.pth')  #导入Pyhon保存的模型
example = torch.rand(1, 1, 256, 256).cuda() #设置输入数据大小
traced_script_module = torch.jit.trace(model, example) #通过跟踪将模型转成序列化模型 
traced_script_module.save('..\\model.pt') #保存转换后的模型

注意:model.pth是将模型和参数一起保存的,不是单纯的保存参数。

三.使用教程:Demo示例

下面是一个从输入图像,到导入模型,到推理,再到最终的后处理的demo示例,仅供参考。

#include 
#include  
#include 
#include 
#include 
#include 
using namespace std;
using namespace cv;
Mat img= imread("path"); //读取图像
torch::jit::script::Module module = torch::jit::load(modelpath); //导入模型
//第一步:图像预处理
Mat preprocess_img = PreProcess(img); //图像预处理操作,可以根据自己的需求定义
//第二步:推理
torch::TensorOptions option(torch::kFloat32); //设置tensor格式
at::Tensor img_tensor = torch::from_blob(preprocess_img.data, { 1, preprocess_img.rows, preprocess_img.cols, 1 }, option); //将Mat矩阵图像转成float类型的tensor
img_tensor = img_tensor.permute({ 0, 3, 1, 2 }); //切换图像维度
tenImgTensor = img_tensor.toType(torch::kFloat32).cuda(); //数据放入GPU中
vector<torch::jit::IValue> input; 
input.push_back(img_tensor); //将tensor转成C++的vector类型
at::Tensor output = module.forward(input).toTensor(); //前向推理,生成tensor结果
// 第三步:后处理
Mat result = PostProcess(output);  //图像后处理操作

你可能感兴趣的:(环境配置,pytorch,深度学习)