首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >YOLO26模型TensorRT10.x 推理详解

YOLO26模型TensorRT10.x 推理详解

作者头像
OpenCV学堂
发布2026-05-11 15:30:09
发布2026-05-11 15:30:09
1090
举报

点击上方蓝字关注我们

微信公众号:OpenCV学堂

关注获取更多计算机视觉与深度学习知识

YOLO26系列模型

YOLO26 基于深度学习和 计算机视觉领域的最新进展构建,具备端到端NMS 推理和优化的边缘部署能力。其精简的设计使其适用于各种应用场景,并能轻松适配从边缘设备到云 API 的不同硬件平台。对于稳定的生产工作负载,YOLO26 和 YOLO11 均值得推荐。

对象检测部署

YOLO26对象检测模型,基于COCO数据集训练,支持80个类别对象检测,相比YOLO11,它的输出框的总数目更少,更适配边缘端侧部署。ONNX格式的YOLO26对象检测预训练模型的输入与输出格式如下:

其中输出格式为300x6, 300表示输出框的数目,6个数据中前面四个x,y,w,h后面两个是得分跟类别。

推理部分实现代码:

代码语言:javascript
复制
std::shared_ptr<YOLO26TRTDetector> detector(new YOLO26TRTDetector());
detector->initConfig("D:/python/yolov5-7.0/yolo26n.engine", 0.4, 0.25f);
cv::VideoCapture capture("D:/images/video/play_scoers.mp4");
cv::Mat frame;
std::vector<DetectResult> results;
while (true) {
bool ret = capture.read(frame);
if (frame.empty()) {
break;
	}
	detector->detect(frame, results);
for (DetectResult dr : results) {
		cv::Rect box = dr.box;
		cv::putText(frame, classNames[dr.classId], cv::Point(box.tl().x, box.tl().y - 10), cv::FONT_HERSHEY_SIMPLEX, .5, cv::Scalar(0, 0, 0));
	}
	cv::imshow("YOLO26对象检测 + TensorRT10.8 - OpenCV学堂", frame);
char c = cv::waitKey(1);
if (c == 27) { // ESC 退出
break;
	}
// reset for next frame
	results.clear();
}

演示效果如下

姿态评估部署

YOLO26姿态评估模型,基于COCO数据集训练,支持识别人体的17关键节点,是一个非常轻量化的人体姿态评估模型。ONNX格式的YOLO26姿态评估预训练模型的输入与输出格式如下:

其中输出格式为300x57, 300表示输出框的数目,57个数据,前面6个数据跟对象检测输出完全一致,后面的51个数据是个17个关键点x,y,v信息。

代码语言:javascript
复制
鼻子
左眼
右眼
左耳
右耳
左肩
右肩
左手肘
右肘
左手腕
右腕
左髋
右髋
左膝
右膝
左脚踝
右脚踝

推理部分TensorRT相关的关键代码:

代码语言:javascript
复制
cv::Mat blob = cv::dnn::blobFromImage(image, 1 / 255.0, cv::Size(this->input_w, this->input_h), cv::Scalar(0, 0, 0), true, false);
cudaMemcpyAsync(buffers[0], blob.ptr<float>(), 3 * this->input_h * this->input_w * sizeof(float), cudaMemcpyHostToDevice, stream);
// 推理
context->executeV2(buffers);
// 显存到内存
cudaMemcpyAsync(prob.data(), buffers[1], this->output_h * this->output_w * sizeof(float), cudaMemcpyDeviceToHost, stream);

前处理跟后处理与YOLO11完全相似,唯一不同的是当导出为end2end模式时候,不需要做NMS而已。

客户端代码部分

代码语言:javascript
复制
std::shared_ptr<YOLO26TRTPose> detector(new YOLO26TRTPose());
detector->initConfig("D:/python/yolov5-7.0/yolo26n-pose.engine", 0.25f);
cv::VideoCapture capture("D:/images/video/test_sam.mp4");
cv::Mat frame;
std::vector<DetectResult> results;
while (true) {
bool ret = capture.read(frame);
if (frame.empty()) {
break;
	}
	detector->detect(frame);
//for (DetectResult dr : results) {
//	cv::Rect box = dr.box;
//	cv::putText(frame, classNames[dr.classId], cv::Point(box.tl().x, box.tl().y - 10), cv::FONT_HERSHEY_SIMPLEX, .5, cv::Scalar(0, 0, 0));
//}
	cv::imshow("YOLO26姿态评估+ TensorRT10.8 - OpenCV学堂", frame);
//cv::imshow("YOLO26对象检测 + TensorRT10.8 - OpenCV学堂", frame);
char c = cv::waitKey(1);
if (c == 27) { // ESC 退出
break;
	}
// reset for next frame
	results.clear();
}

演示效果如下:

结论

YOLO26模型 特有的双头导出设计,综合考虑了多种场景部署需求,在端侧场景中导出时强烈推荐直接设置为NMS之后的头版本。亲测证明,相比YOLO11,推理速度更快,更加匹配端侧视觉任务需求。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档