模型实战(22)之 C++ - tensorRT部署yolov8-cls 目标分类

C++ - tensorRT部署yolov8-cls 目标分类

在这里插入图片描述

  • 在检测应用场景中如果有同等类别不同形态的目标,单纯的目标检测可能达不到实用或者想要的精度,这就需要衔接一步分类
  • python环境下如何直接调用推理
  • 模型转换并导出:pt -> onnx ->.engine
  • C++ tensorrt 部署分类模型
  • 在这里插入图片描述

1.Python环境下推理

  • 直接命令行推理,巨简单
yolo segment predict model=yolov8n-seg.pt source
### YOLOv8C++环境中的部署指南与实例 YOLOv8作为最新的目标检测模型,在C++环境中部署能够充分利用硬件资源并实现高效的推理性能。为了成功部署YOLOv8模型,需遵循一系列具体步骤[^1]。 #### 准备工作 确保安装必要的依赖库,如OpenCV用于图像处理以及CUDA(如果使用GPU加速)。对于YOLOv8而言,推荐采用ONNX Runtime或TensorRT进行优化后的推理引擎支持。这些工具可以显著提升模型运行效率和兼容性。 #### 转换模型格式 将训练好的PyTorch版本YOLOv8转换成适用于C++调用的形式。通常情况下会先将其导出为ONNX文件格式,这一步骤可通过官方提供的脚本完成: ```bash python export.py --model yolov8 --output ./yolov8.onnx ``` 此命令假设`export.py`位于项目根目录下,并且已经配置好相应的参数设置来指定输入输出路径等信息。 #### 编写C++代码加载并执行预测 下面给出一段简单的C++程序片段展示如何利用ONNX Runtime加载上述生成的`.onnx`文件来进行前向传播计算得到最终的结果: ```cpp #include "onnxruntime_cxx_api.h" // ...其他头文件... int main() { Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "YoloV8"); Ort::SessionOptions session_options; // 设置线程数和其他选项... std::wstring model_path = L"./yolov8.onnx"; Ort::Session session(env, model_path.c_str(), session_options); // 定义输入张量形状及数据指针 const int64_t input_node_dims[] = {1, 3, 640, 640}; // 假设图片大小固定为640x640 float* input_tensor_values; // 需要填充实际像素值 // 创建内存信息描述符 Ort::MemoryInfo memory_info = Ort::MemoryInfo::CreateCpu( OrtArenaAllocator, OrtMemTypeDefault); // 构建输入tensor对象 Ort::Value input_tensor = Ort::Value::CreateTensor<float>( memory_info, input_tensor_values, /*element_count=*/640 * 640 * 3, input_node_dims, /*dims_size=*/4); // 获取输出节点名称列表 char** output_names_raw; size_t num_outputs; session.GetOutputNames(&output_names_raw, &num_outputs); std::vector<const char*> output_names(output_names_raw, output_names_raw + num_outputs); // 执行推理操作 auto output_tensors = session.Run( Ort::RunOptions{nullptr}, /*input_names=*/&"images", &input_tensor, /*n_inputs=*/1, output_names.data(), static_cast<int>(output_names.size())); // 处理输出结果... } ``` 这段代码展示了基本框架结构,其中省略了一些细节部分比如错误处理机制、预处理函数定义等。完整的应用开发还需要考虑更多方面,例如批量处理能力的支持、不同分辨率下的适应调整等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月醉窗台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值