使用c++推理yolov8的关键点模型

依赖库

  • opencv

导出onnx

yolo export model=./runs/segment/train2/weights/best.pt imgsz=640 format=onnx opset=12

代码

</

### YOLOv8 关键点检测 C++ 部署教程 #### 1. 环境准备 为了成功部署YOLOv8关键点检测模型,需安装OpenVINO工具包并配置开发环境。确保已设置好编译器和其他依赖项以便支持C++编程[^1]。 #### 2. 加载预训练模型 通过指定路径加载已经转换成IR格式(Intermediate Representation)的YOLOv8关键点检测模型文件(.xml 和 .bin),这是由Model Optimizer处理过的版本,适用于高性能推理引擎。 ```cpp #include <openvino/openvino.hpp> // 初始化核心对象用于管理设备和执行网络 ov::Core core; // 定义模型路径 std::string model_path = "path/to/model.xml"; // 使用读取方法获取编译后的网络结构 auto model = core.read_model(model_path); ``` #### 3. 设置输入输出张量规格 根据YOLOv8关键点检测的需求调整输入图像尺寸以及定义输出层名称列表来匹配模型预期的数据流形式。 ```cpp // 获取所有输入节点的信息 const auto& params = model->inputs(); for (size_t i = 0; i < params.size(); ++i){ std::cout << "Input layer name: " << params[i].get_any_name() << "\n"; } // 输出层名, 假设为"output" std::vector<std::string> output_names{"output"}; ``` #### 4. 创建可执行实例并与硬件绑定 创建一个与特定计算资源关联起来的推断请求实体,并准备好向其中填充实际待预测样本数据前的各项准备工作。 ```cpp // 编译模型以适应目标平台特性 compiled_model = core.compile_model(model, "CPU"); // 构建异步推断请求句柄 infer_request = compiled_model.create_infer_request(); // 将输入图片分配给对应的tensor变量 infer_request.set_input_tensor(input_image_tensor); // 同样地对于期望接收的结果也做相应设定 infer_request.set_output_tensors(output_tensors); ``` #### 5. 执行推理过程 调用`start_async()`函数触发一次非阻塞式的推理操作;之后可以通过轮询方式查询状态直至完成,最后取得识别出来的关键点位置信息作为最终输出结果。 ```cpp // 开始异步推理 infer_request.start_async(); // 等待直到当前任务结束 infer_request.wait_for(ov::Duration::INFINITE); // 获取输出张量中的数据指针访问预测得分矩阵 float* keypoints_data_ptr = infer_request.get_output_tensor().data<float>(); ``` 以上就是基于OpenVINO框架下利用C++实现YOLOv8关键点检测的一个基本流程概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值