
点击上方蓝字关注我们
微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
YOLO26系列模型
YOLO26 基于深度学习和 计算机视觉领域的最新进展构建,具备端到端NMS 推理和优化的边缘部署能力。其精简的设计使其适用于各种应用场景,并能轻松适配从边缘设备到云 API 的不同硬件平台。对于稳定的生产工作负载,YOLO26 和 YOLO11 均值得推荐。

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

其中输出格式为300x6, 300表示输出框的数目,6个数据中前面四个x,y,w,h后面两个是得分跟类别。
推理部分实现代码:
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信息。
鼻子
左眼
右眼
左耳
右耳
左肩
右肩
左手肘
右肘
左手腕
右腕
左髋
右髋
左膝
右膝
左脚踝
右脚踝推理部分TensorRT相关的关键代码:
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而已。
客户端代码部分
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,推理速度更快,更加匹配端侧视觉任务需求。