YOLOv11 架构改进 & 常见指令

开发
YOLOv11 是 Ultralytics 开发的最新 YOLO 模型。这个模型在执行实时目标检测时,继续平衡准确性和效率。在之前的 YOLO 版本基础上,YOLO11 在架构和训练上提供了显著的改进。

今天我们介绍 YOLOv11,这个系列中的最新成员。YOLO 是一个在目标检测领域几乎无与伦比的算法,它产生了非常成功的结果。这个算法系列在 YOLOv5 之后由 Ultralytics 继续开发,并且每个新模型都带来了更好的性能。

YOLOv11 是 Ultralytics 开发的最新 YOLO 模型。这个模型在执行实时目标检测时,继续平衡准确性和效率。在之前的 YOLO 版本基础上,YOLO11 在架构和训练上提供了显著的改进。在保持速度的同时提高性能的最重要的架构变化是增加了 C3K2 块、SPFF 模块和 C2PSA 块。

  • C3K2 块:这是在以前版本中引入的 CSP(Cross Stage Partial)块的增强。该模块使用不同的核大小(例如 3x3 或 5x5)和通道分离策略来优化更复杂特征的提取。
  • SPFF(Spatial Pyramid Pooling Fusion)模块:它是 YOLO 版本中使用的 SPP(Spatial Pyramid Pooling)模块的优化版本。该模块允许模型通过捕获不同尺度的物体属性来更好地执行。
  • C2PSA 块:这个块通过结合通道和空间信息提供更有效的特征提取。它还与多头注意力机制一起工作,从而实现对物体更准确的感知。它优化了前一层的特征图,并用注意力机制丰富它们,以提高模型的性能。这种结构使得在复杂场景中更精确的检测成为可能,并提高了 YOLOv11 的准确性。

除了这些架构变化,YOLOv11 像 YOLOv8 一样具有多模型能力。得益于其多模型特性,YOLOv11 可以执行以下任务:

  • 目标检测:在图像中识别和定位物体。
  • 实例分割:检测物体并确定它们的边界。
  • 分类:将图像分类到预定义的类别中。
  • 姿态估计:检测和跟踪人体上的标志点。
  • 定向目标检测(OBB):检测旋转物体以提高灵敏度。

在我们开始使用之前,让我们谈谈新 YOLO 版本带来的特性。

  • 现有的主干结构已经被 C3K2 块替换,以提高特征提取能力。
  • 颈部结构已经用 SPFF 模块改进,以捕获不同大小的物体并更好地检测小物体。
  • 增加了 C2PSA 块,专注于更小或部分遮挡物体中的重要区域。
  • 通过多模型能力增加了任务数量。
  • 更容易适应各种环境,包括边缘设备。
  • 得益于其优化的架构和高效的处理能力,它可以部署在边缘设备、云平台和支持 NVIDIA GPU 的系统上。

由于这些优化和创新,YOLOv11 在实时应用中提供了性能提升。模型运行更快、更准确,提高了目标检测、样本分割和姿态估计等任务的效率。此外,兼容性得到了改善,使模型可以轻松地在不同的平台和硬件上运行(例如云或边缘设备)。在 Ultralytics (详见官网:https://docs.ultralytics.com/models/yolo11/)页面上,当他们评估 YOLOv11 与以前版本相比的性能时,他们发表了以下评论。

随着模型设计的改进,YOLO11m 在使用比 YOLOv8m 少 22% 参数的情况下,在 COCO 数据集上实现了更高的平均精度均值(mAP),使其在不牺牲准确性的情况下具有计算效率。

然而,尽管 YOLOv11 模型的性能很好并且提供了广泛的范围,但在目标检测方面,它并不像 YOLOv10 那样成功。尽管 YOLOv10 有更多的参数,YOLOv11 只实现了微小的差异(+0.1-0.5)的更好性能。在这种情况下,YOLOv10 可能仍然是我们的偏好,因为参数的过剩导致速度损失和成本。

使用 YOLOv11

使用 PyTorch 构建 YOLOv11 模型及其与其他模式的使用简要如下。

步骤 1:首先,我们需要下载 Ultralytics 库。有了这个库,我们可以运行从 YOLOv3 到 YOLOv11 的所有模型。

pip install ultralytics

步骤 2:如果你只想在一个训练好的模型中进行预测。以下代码就足够了。否则你可以跳过它。

yolo predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'py

步骤 3:如果你说不,我想训练我的模型,你可以选择你想要的模型并下载 .pt 文件。

from ultralytics import YOLO

# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")

步骤 4:然后你需要选择训练数据、训练epoch、图像大小和你的设备。

train_results = model.train(
    data="coco8.yaml",  # path to dataset YAML
    epochs=100,  # number of training epochs
    imgsz=640,  # training image size
    device="cpu",  # device to run on, i.e. device=0 or device=0,1,2,3 or device=cpu
)

步骤 5:你需要用验证数据评估和测试模型。它将验证数据从训练数据本身中分离出来,对于测试,你只需要提供你想要测试的图像的路径。

metrics = model.val()

results = model("path/to/image.jpg")
results[0].show()

步骤 6:在最后一步,我们可以导出你的模型,以便以后再次使用。如果你想用你自己的模型进行预测,只需使用步骤-2。

path = model.export(format="onnx")

YOLOv11 常用操作指令

用你自己的数据训练你的目标检测模型,具有特定的学习率和epoch:

yolo train data=coco8.yaml model=yolo11n.pt epochs=10 lr0=0.01

对于模型验证:

yolo val model=yolo11n.pt data=coco8.yaml batch=1 imgsz=640

在 YouTube 视频上测试模型的结果,图像大小为 320:

yolo predict model=yolo11n.pt source='https://youtu.be/LNwODJXcvt4' imgsz=320

使用预训练的分割模型在 YouTube 视频上预测,图像大小为 320:

yolo segment predict model=yolo11n-seg.pt source='https://youtu.be/LNwODJXcvt4' imgsz=320

将你特别训练的模型导出为 .pt 扩展名:

yolo export model=path/to/best.pt format=onnx
责任编辑:赵宁宁 来源: 小白玩转Python
相关推荐

2024-10-24 20:56:36

2024-10-07 11:12:55

2021-11-24 11:04:09

技术架构技术前线 IT管理

2024-06-06 12:24:18

预编译代码编译

2012-12-03 09:22:19

iTunes 11iCloud云服务

2010-12-07 08:57:14

Android 2.3

2021-01-18 08:25:44

Zookeeper面试分布式

2021-12-06 11:26:05

Windows 11飞行模式通知中心

2022-12-15 17:31:41

架构龙芯

2023-09-29 10:27:18

2012-03-20 09:02:00

Visual Stud

2021-12-29 06:58:41

架构师数据应用

2021-09-20 11:41:56

Windows 11硬盘空间占用微软

2022-04-29 08:20:59

微软Windows 11

2021-11-15 22:43:40

Windows 11操作系统微软

2021-09-27 14:33:01

Windows 11Windows微软

2021-07-21 05:31:39

Windows 11操作系统微软

2021-01-19 09:11:35

Zookeeper面试分布式

2022-04-28 11:19:13

WebRTC服务器架构

2015-11-10 20:20:29

点赞
收藏

51CTO技术栈公众号