visual studio +libtorch +cuda 11.3 配置pytorch C++环境

visual studio +libtorch +cuda 11.3 配置pytorch C++环境

1、首先进入pytorch官网下载对应版本的libtorch,如果你需要安装GPU版本那么在前面你需要提前在本地下载安装好相应版本的cuda环境,,安装cpu版本则不需要配置GPU。现在最新版本为1.12并且cuda是11.3官网上一般只提供最新版本 当前我们教程中用的版本是1.11,cuda是11.3 后续我会将所有东西上传到我的网盘里面欢迎大家下载。提取码:7y2e

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第1张图片

2、下载完以后将其解压到本地 注意解压路径不要有中文路径不要有中文 建议解压到某个盘的根目录:

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第2张图片

3、配置环境变量 找到libtorch 中的bin 目录和lib目录将其添加到path环境变量中

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第3张图片

打开项目属性中 点击VC++目录

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第4张图片

包含目录中添加

C:\libtorch\include\torch\csrc\api\include
C:\libtorch\include

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第5张图片

并在库目录中添加:

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第6张图片

然后在连接器 附加依赖项中 添加lib目录下所有lib结尾的文件

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第7张图片

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第8张图片

由于1.11版本有bug 所以需要在强制链接cuda 的lib 函数 因此需要在连接器的命令行中输入:

/INCLUDE:“?ignore_this_library_placeholder@@YAHXZ”

其他版本的如果cuda不能用也可以尝试配一下指令详情参加这篇博客

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第9张图片

测试:

首先打开自己的jupyter notebook 插入以下代码进行测试和运行 ,注意让你pytorch的版本尽量和libtorch保持一致,运行后会训练生成一个pt权重文件

from torchvision.models import resnet34
import torch.nn.functional as F
import torch.nn as nn
import torch
import cv2

#read a picture, convert to [1,3,224,224] float tensor
image = cv2.imread("flower.jpg")
image = cv2.resize(image,(224,224))
input_tensor = torch.tensor(image).permute(2,0,1).unsqueeze(0).float()/225.0

#define resnet34 and load ImageNet pretrained
model = resnet34(pretrained=True)
model.eval()
#check outputs
output = model(input_tensor)
output = F.softmax(output,1)
print("predicted class:{}th,prob:{}".format(torch.argmax(output),output.max()))

#generate .pt
#使用GPU训练
#model=model.to(torch.device(0))

model.eval()
#使用GPU创建测试样例
#var=torch.ones((1,3,224,224)).to(torch.device(0))
var=torch.ones((1,3,224,224))
#traced_script_module = torch.jit.trace(model, var)
traced_script_module = torch.jit.trace(model,var)
traced_script_module.save("resnet341.pt")

在这里插入图片描述

然后下载这个.pt的经过脚本转换的权重文件自己创建一个visual studio项目 在这里除了需要按照我们这个来配置pytorch 还需要配置opencv 配置opencv的教程大家可以去看我上一篇博客,

我的文件夹大致是这样的大家将下载好的pt权重文件和测试图像放在项目文件里面

visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第10张图片

然后在visualstudio 中写下如下代码 路径需要同学们自己根据自己路径来进行更改


#include 
#include 
#include 
#include 
#include  
using namespace std;
using namespace cv;


int main()
{
	//定义使用cuda
	auto device = torch::Device(torch::kCUDA,0);
	//torch::Device device(torch::kCPU);
	//读取图片
	auto image = imread("C:\\Users\\Administrator\\Desktop\\C++练习\\opencv\\opencv\\flower.jpg");
	imshow("Image", image);
	imwrite("test.jpg", image);
	waitKey(0);
	//缩放至指定大小
	resize(image, image, Size(224, 224));
	//转成张量
	auto input_tensor = torch::from_blob(image.data, { image.rows, image.cols, 3 }, torch::kByte).permute({ 2, 0, 1 }).unsqueeze(0).to(torch::kFloat32) / 225.0;
	//加载模型
	auto model = torch::jit::load("C:\\Users\\Administrator\\Desktop\\C++练习\\opencv\\opencv\\resnet34.pt");  //cpu版本
	//auto model = torch::jit::load("C:\\Users\\Administrator\\Desktop\\C++练习\\opencv\\opencv\\resnet341.pt");
	model.to(device);
	model.eval();
	//前向传播
	auto output = model.forward({ input_tensor.to(device) }).toTensor();
	output = torch::softmax(output, 1);
	cout << "模型预测结果为第" << torch::argmax(output) << "类,置信度为" << output.max() << endl;
	waitKey(0);

运行后会先弹窗出现一个图像,关掉后,然后控制台按下enter健后出现如下的控制台
visual studio +libtorch +cuda 11.3 配置pytorch C++环境_第11张图片

你可能感兴趣的:(深度学习,图像识别,pytorch,visual,studio,c++)