YOLOv5部署到Windows的C++(使用LibTorch)
- 前言
- 准备内容
- 配置环境
- 编译
- YOLOv5 检测
- 可能遇到的问题
前言
由于项目需要,我们要将YOLOv5部署到Windows上的C++程序使用,本文使用LibTorch将YOLOv5部署到Visual Studios 2019上。
准备内容
首先我们下载准备好需要的内容:
- Visual Studios 2019
- LibTorch (要和你的Pytorch版本对应,Debug 和 Release 版本均可,和后续C++版本统一即可)
- OpenCV
- Libtorch-Yolov5
- Cmake
- CUDA & cuDNN
配置环境
配置 OpenCV 和 LibTorch 环境,二者配置内容大体一致(以下路径地址按个人安装路径调整)。
-
配置系统环境变量:
在系统环境变量中分别添加 OpenCV 和 LibTorch 的路径
Opencv:
D:\opencv\build\x64\vc15\bin
Libtorch:
D:\libtorch\lib
-
VS2019 新建 C++ 空项目;
-
项目属性 -> VC++目录 -> 包含目录:
Opencv:
D:\opencv\build\include
D:\opencv\build\include\opencv2
Libtorch:
D:\libtorch\include
D:\libtorch\include\torch\csrc\api\include
-
项目属性 -> VC++目录 -> 库目录:
Opencv:
D:\opencv\build\x64\vc15\lib
Libtorch:
D:\libtorch\lib
-
项目属性 -> 链接器-> 输入-> 附加依赖项:
Opencv:
将D:\opencv\build\x64\vc15\lib文件中的 .lib 文件放入附加依赖项里面,两个版本和你项目版本一致:
opencv_world452d.lib(Debug)
opencv_world452.lib(Release)
Libtorch:
将D:\libtorch\lib中的 .lib 文件全部放入附加依赖项里面。
-
项目属性 -> C/C++ -> 附加包含目录:
D:\opencv\build\include
D:\libtorch\include
D:\libtorch\include\torch\csrc\api\include
-
项目属性 -> C/C++ -> 常规 SDL检查 改为 否
-
项目属性 -> C/C++ -> 语言 -> 符合模式 符合模式 改为 否
-
项目属性 -> 调试 -> 环境:
Opencv:
D:\opencv\build\x64\vc15\lib;
Libtorch:
D:\libtorch\lib;
-
测试OpenCV:
运行以下代码检查是否正确配置OpenCV:
#include <opencv2/opencv.hpp>
int main() {
cv::Mat img = cv::imread("图片路径");
cv::imshow("", img);
cv::waitKey(0);
return 0;
}
-
测试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;
}
编译
- 打开 Libtorch-Yolov5 中的 CMakeLists.txt,在以下两行中给出 OpenCV 和 LibTorch 的路径:
set(OpenCV_DIR D:/opencv/build)
set(Torch_DIR D:/libtorch/share/cmake/Torch/) - 打开CMD
mkdir build
cd 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 版本是否对应正确。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)