- 背景
a) 最近在尝试将Pytorch模型部署为Cmodel,综合实验了ONNX和LibTorch方法,其中ONNX模型推理见之前系列文章(OpenCV----YOLOv7目标检测模型推理、OpenCV----YOLOv5目标检测模型推理 (兼容YOLACT)等),存在一些模型可以导出为ONNX但OpenCV的readNet读取错误的情况(主要原因是部分算子不太支持),因此,LibTorch成为了备选方案之一。由于LibTorch是官方Pytorch的部署模型之一,更新也比较及时,特记录一下配置过程。 - 软件环境
LibTorch 1.12.1 Release版本 (GPU版本依赖于CUDA 11.6和CUDANN)
VSCode+CMake
VS Studio 2022
系统环境变量添加:path\to\libtorch\lib
- VSCode + LibTorch CPU版本配置(LibTorch GPU兼容CPU版本)
1)测试代码
2)CMakeLists.txt (编译方法参见另一篇博客VSCode配置之Opencv4x终极奥义)#include<torch/script.h> #include<torch/torch.h> using namespace std; int main() { torch::Tensor output; cout << "cuda is_available: " << torch::cuda::is_available() << endl; torch::DeviceType device = at::kCPU; if (torch::cuda::is_available()) device = at::kCUDA; output = torch::randn({ 3,3 }).to(device); cout << output << endl; return 0; }
3)输出结果cmake_minimum_required(VERSION 3.17) set(CMAKE_PREFIX_PATH path/to/libtorch/share/cmake/Torch/) find_package( Torch REQUIRED) set(CMAKE_CXX_STANDARD 14) add_executable(test test.cpp) target_link_libraries(test ${TORCH_LIBRARIES})
- VS2022 LibTorch GPU版本配置
1)测试代码(同上)
2)项目属性表配置#include<torch/script.h> #include<torch/torch.h> using namespace std; int main() { torch::Tensor output; cout << "cuda is_available: " << torch::cuda::is_available() << endl; torch::DeviceType device = at::kCPU; if (torch::cuda::is_available()) device = at::kCUDA; output = torch::randn({ 3,3 }).to(device); cout << output << endl; return 0; }
C/C++目录 -> 附加包含目录新增
链接器 -> 常规 -> 附加库目录新增path\to\libtorch\include\torch\csrc\api\include; path\to\libtorch\include;
链接器 -> 输入 -> 附加依赖项path\to\libtorch\lib
链接器 -> 命令行 -> 其它选项新增 (用于CUDA推理)c10.lib c10_cuda.lib torch_cpu.lib torch_cuda.lib torch_cuda_cu.lib torch_cuda_cpp.lib -INCLUDE:?warp_size@cuda@at@@YAHXZ
3)输出结果/INCLUDE:?warp_size@cuda@at@@YAHXZ /INCLUDE:?_torch_cuda_cu_linker_symbol_op_cuda@native@at@@YA?AVTensor@2@AEBV32@@Z
- 小结
可以看到,VSCode+CMake简单配置即可实现VS2022一系列复杂的配置过程,对于代码编写更友好,由于VSCode断点调试较复杂,必要时还是需要VS Studio的辅助,尤其是针对新的库,调试能力必不可少。
VSCode配置之LibTorch(GPU)极简配置 & VS2022 LibTorch(GPU)验证
于 2022-10-15 10:21:44 首次发布