YOLOv11 架构改进 & 常见指令

科技   2024-10-30 10:05   中国香港  
点击上方小白学视觉”,选择加"星标"或“置顶
重磅干货,第一时间送达

今天我们介绍 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 modelmodel = 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
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


小白学视觉
哈工大在读博士的公众号,《OpenCV 4快速入门》的作者,面向初学者介绍计算机视觉基础知识、OpenCV使用、SLAM技术,深度学习等内容。
 最新文章