云浮市网站建设_网站建设公司_改版升级_seo优化
2026/1/18 3:06:37 网站建设 项目流程

YOLO11支持哪些任务?检测/分割/姿态全都有

1. 引言

YOLO11 是 Ultralytics 推出的最新一代 YOLO 系列模型,作为实时目标检测领域的持续演进成果,它在保持高速推理能力的同时,进一步拓展了多任务支持能力。与前代 YOLOv8 类似,YOLO11 并非单一模型,而是一套统一架构下的多任务计算机视觉解决方案。

本文将围绕YOLO11 支持的核心任务类型展开系统性分析,并结合实际部署环境(基于提供的镜像文档和参考博文),深入解析其在目标检测、实例分割、姿态估计等任务中的实现方式与工程实践要点。文章不涉及网络结构原理推导,重点聚焦于功能特性、使用流程与可落地的技术方案。


2. YOLO11 支持的任务概览

YOLO11 延续了 YOLOv8 的多任务设计思想,在一个统一的框架下支持多种主流视觉任务。通过切换模型头(Head)结构和训练数据格式,同一主干网络可以灵活适配不同下游任务。

2.1 支持的核心任务类型

任务类型功能描述输出内容
目标检测(Detection)定位图像中物体的位置并分类边界框(Bounding Box)、类别标签、置信度
实例分割(Segmentation)在检测基础上提供像素级轮廓掩码边界框 + 每个实例的二值掩码(Mask)
姿态估计(Pose Estimation)检测人体关键点及其连接关系边界框 + 关键点坐标(如17个COCO关键点)
图像分类(Classification)对整张图像进行类别预测图像级类别标签与置信度
OBB(旋转框检测)检测带角度的矩形框,适用于倾斜目标中心点、宽高、角度、类别

这些任务共享相同的骨干网络(Backbone)和特征金字塔结构(Neck),仅在输出头部分存在差异,因此具备高度一致的预处理、后处理逻辑,极大简化了多任务系统的开发与部署。


3. 多任务实现机制解析

3.1 统一输入预处理流程

无论执行何种任务,YOLO11 的输入预处理流程保持一致:

  • 尺寸归一化:采用 letterbox 或 warpAffine 方式将输入图像缩放到固定分辨率(如 640×640),避免变形。
  • 颜色空间转换:BGR → RGB。
  • 归一化处理:像素值从 [0, 255] 映射到 [0.0, 1.0]。
  • Tensor 转换:HWC → CHW,转为 PyTorch 张量格式。

该流程已在ultralytics/engine/predictor.py中标准化,确保所有任务共用同一套前处理代码,提升工程一致性。

def preprocess(self, im): if not isinstance(im, torch.Tensor): im = np.stack(self.pre_transform(im)) im = im[..., ::-1].transpose((0, 3, 1, 2)) # BGR to RGB, HWC to CHW im = torch.from_numpy(np.ascontiguousarray(im)) im = im.to(self.device) im = im.half() if self.model.fp16 else im.float() im /= 255.0 # 归一化 return im

提示:此预处理逻辑对所有任务通用,开发者只需实现一次即可复用。


3.2 分支化后处理逻辑

尽管输入处理统一,但不同任务的输出解码方式有所不同,主要体现在后处理阶段:

3.2.1 目标检测(Detection)

输出维度为[batch, num_boxes, 4 + num_classes],其中:

  • 前 4 项为(cx, cy, w, h),表示边界框中心与宽高;
  • num_classes项为各类别的置信度得分。

后处理步骤包括:

  1. 解码边界框(decode boxes)
  2. 应用 NMS(Non-Max Suppression)去除重叠框
  3. 映射回原始图像坐标系
results = model(img) boxes = results[0].boxes.data.tolist() # 获取检测框
3.2.2 实例分割(Segmentation)

除检测头外,额外输出掩码头(Mask Head),输出包含:

  • 检测框信息(同上)
  • 掩码原型(mask prototypes)与每个实例的掩码系数

最终通过矩阵乘法生成高分辨率二值掩码,并裁剪至对应边界框区域。

masks = results[0].masks.data # shape: [n, h, w]
3.2.3 姿态估计(Pose Estimation)

输出包含:

  • 检测框
  • 关键点热图或直接坐标回归结果(通常为 17×3,含 x, y, 可见性)

关键点会自动关联到所属的人体检测框上,便于可视化与后续动作识别。

keypoints = results[0].keypoints.data # shape: [n, 17, 3]
3.2.4 图像分类(Classification)

仅输出全局类别概率分布,无定位信息。

probs = results[0].probs.data # top-5 probabilities
3.2.5 OBB(旋转框检测)

输出为[cx, cy, w, h, angle, conf, class],支持倾斜文本、航空影像等场景。


4. 部署实践:基于 YOLO11 镜像的多任务运行

根据提供的镜像文档,用户可通过 Jupyter 或 SSH 方式进入 YOLO11 开发环境,快速验证各类任务。

4.1 环境准备

首先进入项目目录:

cd ultralytics-8.3.9/

确保已下载对应任务的预训练权重文件,例如:

  • yolo11s.pt(检测)
  • yolo11s-seg.pt(分割)
  • yolo11s-pose.pt(姿态)
  • yolo11s-cls.pt(分类)

4.2 各任务调用示例

4.2.1 目标检测
from ultralytics import YOLO model = YOLO("yolo11s.pt") results = model("ultralytics/assets/bus.jpg") for r in results: print(r.boxes) # 打印检测框 r.save("result_detect.jpg") # 保存结果图
4.2.2 实例分割
model = YOLO("yolo11s-seg.pt") results = model("ultralytics/assets/zidane.jpg") for r in results: print(r.masks) # 打印掩码 r.plot(boxes=False) # 只显示掩码 r.save("result_seg.jpg")
4.2.3 姿态估计
model = YOLO("yolo11s-pose.pt") results = model("ultralytics/assets/bus.jpg") for r in results: print(r.keypoints) # 打印关键点 r.save("result_pose.jpg")
4.2.4 图像分类
model = YOLO("yolo11s-cls.pt") results = model("ultralytics/assets/dog.jpg") for r in results: print(r.probs) # 打印分类概率 r.save("result_cls.jpg")

5. ONNX 导出与跨平台部署

为了实现高性能推理(如 TensorRT 加速),需将模型导出为 ONNX 格式。以下以检测任务为例说明导出方法。

5.1 修改源码适配 ONNX 导出

为兼容 TensorRT,需做如下修改:

修改ultralytics/engine/exporter.py
# 第400行附近 output_names = ["output"] # 统一输出节点名 dynamic = {"images": {0: "batch"}} # 仅 batch 动态
修改ultralytics/nn/modules/head.py
# forward 函数中 return y.permute(0, 2, 1) if self.export else (y, x) # 调整维度顺序

5.2 执行导出脚本

from ultralytics import YOLO model = YOLO("yolo11s.pt") success = model.export(format="onnx", dynamic=True, simplify=True)

执行后生成yolo11s.onnx,可用 Netron 查看结构:

  • 输入:images,shape[batch, 3, 640, 640]
  • 输出:output,shape[batch, 8400, 84]

注意:分割、姿态等任务导出方式相同,只需更换模型文件即可。


6. C++ 部署集成方案

参考tensorRT_Pro-YOLOv8项目,可实现 YOLO11 的高效 C++ 部署。

6.1 编译配置

支持 CMake 和 Makefile 两种方式,需设置以下路径:

lean_tensor_rt := /opt/TensorRT-8.4.1.5 lean_cudnn := /usr/local/cudnn8.4.0.27-cuda11.6 lean_opencv := /usr/local lean_cuda := /usr/local/cuda-11.6 lean_protobuf := /home/jarvis/protobuf

6.2 源码修改要点

编辑app_yolo.cpp文件:

// 注释掉其他测试 // test(Yolo::Type::V8, TRT::Mode::FP32, "yolov8s"); // 启用 YOLO11 测试 test(Yolo::Type::V11, TRT::Mode::FP32, "yolo11s"); // 自定义类别(可选) static const char *cocolabels[] = {"person", "car", "dog"};

6.3 编译与运行

make yolo -j64

成功编译后生成.trtmodel文件,并输出推理结果图像至指定目录。


7. 总结

YOLO11 作为新一代一体化视觉模型,全面支持五大核心任务:

  • 目标检测
  • 实例分割
  • 姿态估计
  • 图像分类
  • 旋转框检测(OBB)

其优势在于:

  1. 统一架构:共用 Backbone 与预处理流程,降低维护成本;
  2. 接口一致:Python API 使用方式完全相同,易于切换任务;
  3. 部署友好:ONNX 导出逻辑统一,便于跨平台加速;
  4. 生态完善:依托 Ultralytics 生态,支持训练、验证、导出全流程。

对于开发者而言,只需掌握一套基础流程,即可快速构建涵盖检测、分割、姿态等多种能力的 AI 应用系统。结合提供的 YOLO11 镜像环境,更可实现“开箱即用”的开发体验。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询