【Libtorch 一】libtorch+win10环境配置

一、Libtorch下载

针对自己的pytorch+cuda版本,可从下面的文章中获取Debug或Release版本下对应的libtorch文件。

windows系统下各种LibTorch下载地址

下载后的libtorch可按如下目录放置,分别为release和debug版本:
在这里插入图片描述

我个人对libtorch的配置总结了两种方式,下面分别对每种配置方式进行介绍,每种方式亲测有效。

二、LibTorch配置

2.1 通过VSIXTorch来配置

2.1.1.安装VSIXTorch

VSIXTorch下载:VSIXTorch.vsix
下载安装完成后下图:
在这里插入图片描述

2.2.2 VS 2019直接创建TorchProject

如下图所示:
在这里插入图片描述

点击创建工程后,会跳出项目配置窗口,将之前下载的debug和release版本的libtorch文件分别填入。
在这里插入图片描述

点击OK,创建的TorchProject默认加载了example-app.cpp示例源文件。
在这里插入图片描述

在debug或release下点击运行时会出现如下错误信息:
在这里插入图片描述
这是由VS 2019智能感知引擎进行代码语法判断时引起的,它会尽可能做到和编译器相同的判断,但是因为资源所限,也会存在误判的情况。此处脚本内容语法上并无错误,所以头文件抛出的异常信息为:
“C++ 错误过多,导致 IntelliSense 引擎无法正常工作。其中一些错误可能在编辑器中不可见。”

有的文章指出直接将工程项目属性的IntelliSense禁用 (如下图),但带来的一个问题时,下次创建一个新工程时,在编写代码时不会出现代码智能引导,所以不推荐使用这种方法。
在这里插入图片描述
还有文章指出在【项目->属性->配置属性->C/C+±>预处理器->预处理器定义】中加“_XKEYCHECK_H”来解决,但我在尝试添加后并没有解决。

最终,我是将上图中所示的原来的【生成IntelliSense】修改为【仅生成】便可解决此问题。如果还有错误显示,如下所示:(没有的可忽略)
在这里插入图片描述
将Windows SDK版本修改为本机现有的版本,如下所示
在这里插入图片描述

此时编译运行文件成功,终端显示如下:
在这里插入图片描述

如果想利用libtorch C++来加载DL模型验证输出结果,可以直接修改示例源文件example-app.cpp为:

#include <torch/script.h>
#include <iostream>
#include <memory>

int main() {
    torch::jit::script::Module module;
    try {
        module = torch::jit::load("/path/to/resnet18_ts.pt");  //加载自己的torchscript模型
    }
    catch (const c10::Error& e) {
        std::cerr << "error loading the module\n";
        return -1;
    }

	std::cout << "ok\n";

    std::vector<torch::jit::IValue> inputs;
    inputs.push_back(torch::ones({ 1, 3, 224, 224 }));
    at::Tensor output = module.forward(inputs).toTensor();
    std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << std::endl;
}

运行结果:
在这里插入图片描述

这种配置方式下,还带来一个问题,就是debug或release模式下编译完成的项目工程文件夹中会生成大量的链接库文件,它们均来自libtorch,这势必导致占用很大空间容量。

因此依据opencv的配置方式,我尝试将libtorch也进行了类似的配置,发现同样有效,即下面的配置方式。

2.2 直接在VS 2019中配置

创建“空项目”工程,在属性管理器中【添加新项目属性表】
在这里插入图片描述

此处配置libtorch-release(x64)版本。为了避免后续创建工程频繁配置,可将配置的属性表文件Libtorch.PropertySheet.props存储在一个config文件夹下。如果下次创建新的工程,在属性管理器中直接【添加现有属性表】,选择在config文件夹下已经配置好的属性表。
在这里插入图片描述

打开项目属性表文件,在【附加包含目录】中添加
D:\libtorch-win-shared-with-deps-1.8.0+cu111\libtorch\include
D:\libtorch-win-shared-with-deps-1.8.0+cu111\libtorch\include\torch\csrc\api\include
在这里插入图片描述

在【附加库目录】中添加
D:\libtorch-win-shared-with-deps-1.8.0+cu111\libtorch\lib
在这里插入图片描述

在【附加依赖项】中添加D:\libtorch-win-shared-with-deps-1.8.0+cu111\libtorch\lib文件夹下所有的 *.lib文件。
在这里插入图片描述
完成上述配置后,在计算机【环境变量–系统变量】中添加
D:\libtorch-win-shared-with-deps-1.8.0+cu111\libtorch\bin
D:\libtorch-win-shared-with-deps-1.8.0+cu111\libtorch\lib
到Path中。

此外,libtorc加载GPU模型时,还需在打开工程项目属性页配置CUDA命令行:

/INCLUDE:"?ignore_this_library_placeholder@@YAHXZ" 

在这里插入图片描述

此时完成所有配置,运行example-app.cpp成功编译。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Win10 C++ libtorch调用YOLOv8的步骤如下: 1. 首先,确保你已经安装好了适用于C++的libtorch。你可以从官方网站下载并按照指导进行安装。确保你选择的是与你的操作系统和编译器版本相匹配的libtorch。 2. 下载并配置YOLOv8的模型文件和权重。YOLOv8是一种目标检测算法,它使用预先训练的权重和模型来进行目标检测。你可以在网上找到YOLOv8的预训练权重和模型文件。确保你已经下载了它们并将它们存放在适当的位置。 3. 创建一个C++项目,并在项目中包含libtorch的头文件路径和库文件路径。你需要在项目属性中设置这些路径,以便编译器能够正确地找到libtorch,并将其链接到你的项目中。 4. 在你的C++代码中,包含YOLOv8和libtorch的头文件。你需要包含YOLOv8模型和权重加载的相关头文件,以及libtorch的头文件。 5. 在代码中加载YOLOv8的模型和权重。使用libtorch的加载模型函数,将YOLOv8的模型和权重文件加载到内存中。 6. 准备待检测的图像数据。将要检测的图像数据转换为libtorch中的张量格式。确保输入的图像数据与YOLOv8的模型输入尺寸一致。 7. 将图像输入模型进行推理。使用加载的YOLOv8模型对图像进行前向传递,得到目标检测结果。 8. 解析模型的输出结果。通过处理模型的输出张量,可以得到目标的位置、类别和置信度等信息。 9. 根据解析后的结果,进行目标的绘制和展示。你可以使用C++图形库或其他绘图工具来绘制检测到的目标,在图像上标注目标的位置和类别等信息。 以上步骤大致描述了在Win10平台上使用C++和libtorch调用YOLOv8目标检测模型的过程。具体实现可能因实际情况而有所区别,请根据你的项目需求进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值