yolov11

概述

科技发展日新月异,2024 年是 YOLO (You Only Look Once)模型的一年。继 2023 年 Ultralytics 发布 YOLOv8 之后,今年我们又有了 YOLOv9 和 YOLOv10,而后Ultralytics 宣布推出YOLO11 在他们的 YOLO Vision 2024 (YV24) 活动上,随着更新迭代,yolo已经来到最新版本yolo11

YOLO是一个快速、有效的目标检测算法,其核心优势在于速度和实时性,适用于大多数需要快速处理的应用场景。随着YOLO版本的不断更新,其精度和鲁棒性也得到了显著提升,特别是在处理多尺度物体、小物体检测、以及其他复杂场景下,YOLO逐渐成为目标检测领域的主流工具。

Yolov11模型结构介绍

YOLOv11 引入了更高效的架构,其中包括C3K2 SPFFC2PSA等高级注意力机制。YOLOv11 旨在增强小物体检测并提高准确性,同时保持 YOLO 一贯的实时推理速度。

模型结构

Backbone

conv

   它处理给定的 c、h、w,通过 2D 卷积层,然后是 2D 批量标准化层,最后使用 SiLU 激活函数

Bottle Neck

这是带有shortcut参数的卷积块序列,这将决定您是否要获取残差部分。它类似于 ResNet 块,如果shortcut设置为 False,则不会考虑任何残差。

C2F(YOLOv8)

C2F 块(跨阶段局部聚焦,CSP-Focus)源自 CSP 网络,特别注重效率和特征图保存。此块包含一个 Conv 块,然后将输出分成两半(通道被分开),并通过一系列“n”个 Bottle Neck 层进行处理,最后将每个层输出与最终的 Conv 块连接起来。这有助于增强特征图连接,而无需冗余信息。

C3K2

YOLOv11 使用C3K2 块来处理主干网络不同阶段的特征提取。较小的 3x3 内核可以实现更高效的计算,同时保留了模型捕获图像中基本特征的能力。YOLOv11 主干网络的核心是C3K2 块,它是早期版本中引入的 CSP(跨阶段部分)瓶颈的演变。C3K2 块通过分割特征图并应用一系列较小的核卷积(3x3)来优化网络中的信息流,这些较小的核卷积比较大的核卷积更快、计算成本更低。通过处理较小的独立特征图并在几次卷积后合并它们,与 YOLOv8 的 C2f 块相比,C3K2 块可以用更少的参数改进特征表示。

C3K 块包含与 C2F 块类似的结构,但这里不会进行拆分,输入通过 Conv 块,然后是一系列带有连接的“n”个瓶颈层,最后是 Conv 块。

C3K2 使用 C3K 块来处理信息。它在开始和结束时有 2 个 Conv 块,后面跟着一系列 C3K 块,最后将 Conv 块输出与最后一个 C3K 块输出连接起来,最后以最终的 Conv 块结束。此块专注于利用 CSP 结构来保持速度和准确性之间的平衡。

Neck

YOLOv11 保留了SPFF 模块,该模块旨在以不同的比例池化来自图像不同区域的特征。这提高了网络捕获不同大小物体(尤其是小物体)的能力,而这一直是早期 YOLO 版本的一大挑战。

SPFF 池化特征使用多个最大池化操作(具有不同的内核大小)来聚合多尺度上下文信息。此模块可确保模型识别即使是小物体,因为它可以有效地结合不同分辨率的信息。 SPFF 的加入确保 YOLOv11 能够保持实时速度,同时增强其跨多个尺度检测物体的能力。

Head

与早期的 YOLO 版本类似,YOLOv11 使用多尺度预测头来检测不同大小的物体。 检测头使用backbone和neck生成的特征图输出三个不同尺度(低、中、高)的检测框。 检测头根据图像中不同的粒度水平输出三个特征图的预测结果。 这种方法可确保以更精细的细节检测到较小的物体,而较大的物体则由更高级别的特征捕捉到。

Attention Mechanisms

YOLOv11 的重大创新之一是增加了 C2PSA 模块(跨阶段部分空间注意力)。 该功能块引入了注意力机制,通过强调特征图中的空间相关性,提高模型对图像中重要区域的关注度,例如较小或部分遮挡的物体。

Position-Sensitive Attention

该类封装了对输入张量应用位置敏感注意力和前馈网络的功能,从而增强了特征提取和处理能力。 该层包括用注意力层处理输入层,并将输入和注意力层的输出进行合并,然后通过一个前馈神经网络,接着是 Conv Block,然后是 Conv Block(无激活),然后将 Conv Block 的输出和第一个接触层的输出进行合并。

 C2PSA

C2PSA 模块使用两个 PSA(部分空间注意力)模块,分别对特征图的不同分支进行操作,之后再将它们连接起来,这与 C2F 模块的结构类似。 这种设置可确保模型关注空间信息,同时在计算成本和检测精度之间保持平衡。 C2PSA 模块通过对提取的特征进行空间关注,完善了模型选择性关注感兴趣区域的能力。 这使得 YOLOv11 在需要精细物体细节才能进行准确检测的情况下,性能优于 YOLOv8 等以前的版本。

 准备工作

你需要安装pytorch,如果你使用cpu训练模型

pip3 install torch torchvision torchaudio

如果你使用gpu进行训练模型,需要安装cuda(CUDA是NVIDIA推出的用于GPU的并行计算框架)和cudnn(CUDA Deep Neural Network library 深度神经网络加速库)

这里给出了安装示例

pytorch-cuda-cudnn版本安装icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_51832278/article/details/143335886

安装yolo11

# Install the ultralytics package from PyPI
pip install ultralytics

一个简单示例这里我们可以用来测试

from ultralytics import YOLO

# Create a new YOLO model from scratch
model = YOLO("yolo11n.yaml")

# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolo11n.pt")

# Train the model using the 'coco8.yaml' dataset for 3 epochs
results = model.train(data="coco8.yaml", epochs=3)

# Evaluate the model's performance on the validation set
results = model.val()

# Perform object detection on an image using the model
results = model("https://ultralytics.com/images/bus.jpg")

# Export the model to ONNX format
success = model.export(format="onnx")

参数设置

部分参数可以更新以如下的方式

# Update a setting
yolo settings runs_dir='/path/to/runs'

# Update multiple settings
yolo settings runs_dir='/path/to/runs' tensorboard=False

# Reset settings to default values
yolo settings reset

如何训练自己的数据

准备数据集

将数据集文件夹的目录结构以下列格式进行规划,文件夹名不必更改

dataset/
├── train/
│   ├── images/
│   └── labels/
└── val/
    ├── images/
    └── labels/

数据集 YAML

YAML(Yet Another Markup Language,另一种标记语言)文件用于定义数据集配置。它包含有关数据集路径、类和其他相关信息的信息

文件位置

# parent
# ├── ultralytics
# └── datasets
# └── data.yaml

参考示例

比如说标注了四种类别 花、太阳、雨和你   ˶ᵒ ᵕ ˂˶


train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)    可不写

# Classes
names:
  0: 花
  1: 太阳
  2: 雨
  3: 你

标记数据

这里介绍几种标记工具

多用户协作标记

label studio 使用教程icon-default.png?t=O83Ahttps://labelstud.io/guide建议在anaconda环境下安装

安装label-studio,需要 Python 3.8 或更高版本

conda create --name label-studio
conda activate label-studio
conda install psycopg2  # required for LS 1.7.2 only
pip install label-studio

安装 Label Studio 后,使用以下命令启动服务器:

label-studio

默认网络浏览器将自动打开http://localhost:8080并启动 Label Studio

然后

  1. 使用您创建的电子邮件地址和密码进行注册。

  2. 单击“创建”以创建项目并开始标记数据。

在线标记

roborflowicon-default.png?t=O83Ahttps://roboflow.com/     网站内有细致的教程

本地标记

介意隐私的话可以用这种,labelimg 是一种本地标记平台,支持多种数据格式,

安装labelimg

pip install labelimg

运行labelimg

labelimg

可以在view中打开advanced mode 这样不必频繁点击切换

还有其他平台labelme,含有更丰富的功能,可实现分割,姿势等任务的标注功能,可用labelme2yolo 转化所需数据,这里不在赘述

训练数据

开始训练

参考:

# 从 YAML 建立新模型,从头开始训练
yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640

# 从预先训练好的 *.pt 模型开始训练
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

# 从 YAML 建立一个新模型,将预训练的权重转移到该模型并开始训练
yolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt epochs=100 imgsz=640

由以上内容的一个示例,在终端输入以下内容即可开始训练

yolo detect train data=data.yaml model=yolov10n.pt epochs=500 batch=16 imgsz=640 device=0

断点续练

我们在中止训练(ctrl+c)后可以采取以下方式从历史点继续训练

# Resume an interrupted training
yolo train resume model=path/to/last.pt

path/to/last.pt 上述内容有提到,默认在runs/detect/中 

yolo train resume model=./runs/detect/train/last.pt

预测

yolo predict model=./runs/detect/train/bset.pt source=path/to/yourimage

预测以下图片 

可以得到类似结果

 

FAQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值