YOLOv5部署到Windows的C++(使用LibTorch)

YOLOv5部署到Windows的C++(使用LibTorch)

前言

由于项目需要,我们要将YOLOv5部署到Windows上的C++程序使用,本文使用LibTorch将YOLOv5部署到Visual Studios 2019上。

准备内容

首先我们下载准备好需要的内容:

配置环境

配置 OpenCV 和 LibTorch 环境,二者配置内容大体一致(以下路径地址按个人安装路径调整)。

  1. 配置系统环境变量:
    在系统环境变量中分别添加 OpenCV 和 LibTorch 的路径
    Opencv:
    D:\opencv\build\x64\vc15\bin
    Libtorch:
    D:\libtorch\lib

  2. VS2019 新建 C++ 空项目;

  3. 项目属性 -> VC++目录 -> 包含目录:
    Opencv:
    D:\opencv\build\include
    D:\opencv\build\include\opencv2
    Libtorch:
    D:\libtorch\include
    D:\libtorch\include\torch\csrc\api\include

  4. 项目属性 -> VC++目录 -> 库目录:
    Opencv:
    D:\opencv\build\x64\vc15\lib
    Libtorch:
    D:\libtorch\lib

  5. 项目属性 -> 链接器-> 输入-> 附加依赖项:
    Opencv:
    将D:\opencv\build\x64\vc15\lib文件中的 .lib 文件放入附加依赖项里面,两个版本和你项目版本一致:
    opencv_world452d.lib(Debug)
    opencv_world452.lib(Release)
    Libtorch:
    将D:\libtorch\lib中的 .lib 文件全部放入附加依赖项里面。

  6. 项目属性 -> C/C++ -> 附加包含目录:
    D:\opencv\build\include
    D:\libtorch\include
    D:\libtorch\include\torch\csrc\api\include

  7. 项目属性 -> C/C++ -> 常规 SDL检查 改为

  8. 项目属性 -> C/C++ -> 语言 -> 符合模式 符合模式 改为

  9. 项目属性 -> 调试 -> 环境:
    Opencv:
    D:\opencv\build\x64\vc15\lib;
    Libtorch:
    D:\libtorch\lib;

  10. 测试OpenCV:
    运行以下代码检查是否正确配置OpenCV:

    #include <opencv2/opencv.hpp>
    int main() {
          
          
    	cv::Mat img = cv::imread("图片路径");
    	cv::imshow("", img);
    	cv::waitKey(0);
    	return 0;
    }
    
  11. 测试LibTorch:
    运行以下代码检查是否正确配置LibTorch:

    #include <torch/torch.h>
    #include <iostream>
    int main() {
          
          
    	std::cout << "cuda::is_available():" << torch::cuda::is_available() << std::endl;
    	torch::Tensor tensor = torch::rand({
          
           3, 4 });
    	std::cout << tensor << std::endl;
    }
    

编译

  1. 打开 Libtorch-Yolov5 中的 CMakeLists.txt,在以下两行中给出 OpenCV 和 LibTorch 的路径:
    set(OpenCV_DIR D:/opencv/build)
    set(Torch_DIR D:/libtorch/share/cmake/Torch/)
  2. 打开CMD
    mkdir build	# 建立build文件夹
    cd build		# 进入build文件夹
    cmake ..		# 编译
    

YOLOv5 检测

  • 将 D:/libtorch-yolov5/weights 中的coco.names中的类别名称改为自己的数据集类别名称,训练好的权重文件可放于此文件夹(.pt 权重文件先使用 yolov5 的 export.py 转化为 .torchscript.pt 文件);
  • D:/libtorch-yolov5/src 中的文件就是检测函数 detector.cpp 和主函数 main.cpp,具体内容按照个人需求更改。

可能遇到的问题

  • 无法打开源文件 opencv2/opencv.hpp 或 torch/torch.h: 环境未配置好。
  • 编译时找不到 OpenCV 或者 LibTorch 的文件: 检查 CMakeLists.txt 中的路径地址是否填写正确,注意斜杠方向,是否有注释符号,是否添加到系统环境变量。
  • 编译时找不到 CUDA: CUDA 未正确安装或未添加到系统环境变量中。
  • 推理速度缓慢 或 模型加载缓慢: 检查 pytorch 版本以及 CUDA 版本是否对应正确。

猜你喜欢

转载自blog.csdn.net/lucifer479/article/details/120743124