一文带你了解 YOLOv11:入门操作与配置详解

Yolo历史

Yolov5

YOLOv5由Ultralytics在2020年发布,其在工业界获得了广泛应用。YOLOv5基于PyTorch框架,实现了更快的训练和推理速度。它还引入了超参数优化、集成实验跟踪和自动导出到多种部署格式的功能,方便了模型的应用和部署。

Yolov8

2023年,Ultralytics发布了YOLOv8,引入了新的特性和改进,以增强性能、灵活性和效率。YOLOv8支持全方位的视觉AI任务,包括目标检测、图像分割和姿态估计,进一步拓展了YOLO模型的应用领域。

Yolo11

Ultralytics 最新的 YOLO 模型在多个任务上实现了最先进(SOTA)的性能,包括目标检测、图像分割、姿态估计、跟踪和分类,充分发挥了其在各类人工智能应用和领域中的能力。

不同版本Yolo效果对比

不同版本的YOLO在目标检测任务上展示了不同的性能表现。随着版本的更新,模型在速度和精度方面均得到了提升。例如,YOLOv5的训练速度较快,适用于资源受限的环境,而YOLOv8和YOLOv11则进一步提升了检测精度,特别是在复杂场景中的表现更加优异。
不同版本yolo效果对比图

YOLOv11n 模型概述

YOLOv11n 是 YOLOv11 系列中的轻量级版本,参数量较少,计算资源需求较低,非常适合在资源受限的环境(如嵌入式设备、移动设备)上进行推理。虽然模型较小,但依然可以在精度和速度之间取得良好的平衡。
yolov11模型版本

YOLO11安装

下载项目代码

git clone https://github.com/ultralytics/ultralytics.git

安装相关依赖

pip install -U ultralytics

YOLO11训练

从头开始训练

yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640

基于预训练模型训练

yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

验证模型

yolo predict model=yolo11n.pt source="path/dog.jpg"

yolov11检测结果

Yolov11基本命令结构

基本语法

 yolo TASK MODE [ARGS]
TASK(任务):可选参数,指定执行的任务类型。可以是以下之一:
detect:目标检测
segment:图像分割
pose:姿态估计
classify:图像分类
obb:倾斜边界框检测

MODE(模式):必选参数,指定执行的操作模式。可以是以下之一:
train:训练模型
val:验证模型
predict:使用模型进行推理
export:导出模型到指定格式
track:跟踪
benchmark:基准测试

ARGS(参数):可选参数,以 arg=value 的形式指定,用于覆盖默认设置。例如 imgsz=320。

训练检测模型

用 10 个 epoch 训练一个检测模型,并设置初始学习率为 0.01:

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

视频推理

使用预训练的分割模型对一个 YouTube 视频进行推理,图像尺寸为 320:

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

验证模型

用批量大小为 1 和图像尺寸 640 验证一个预训练的检测模型:

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

导出模型

将 YOLO11n 分类模型导出为 ONNX 格式,图像尺寸为 224x128:

yolo export model=yolo11n-cls.pt format=onnx imgsz=224,128

实时推理 GUI

启动一个基于 Streamlit 的实时推理 GUI 界面:

yolo streamlit-predict

yolov11训练参数配置

参数默认值描述
modelNone指定训练使用的模型文件。可以是预训练的 .pt 模型文件,也可以是定义模型结构的 .yaml 配置文件。
dataNone数据集配置文件的路径(例如 coco8.yaml)。该文件包含数据集相关的参数,包括训练和验证数据的路径、类别名称和类别数量。
epochs100训练的总轮数。每个 epoch 代表对整个数据集的一次完整遍历。调整此值会影响训练时间和模型的最终性能。
timeNone最大训练时间(以小时为单位)。如果设置了该值,将优先于 epochs 参数,当到达最大时间时训练将自动停止。
patience100当验证指标没有提升时,允许继续训练的轮数。在超过该值后,将提前停止训练,以避免过拟合。
batch16批次大小。可以设定为一个整数(如 batch=16),也可以设置为 -1 表示使用 60% GPU 内存,或设置为 0.70 表示指定内存使用率。
imgsz640训练图像的目标大小,所有图像在输入模型之前都会调整为这个尺寸。
saveTrue启用保存训练检查点和最终模型权重功能。方便后续恢复训练或部署模型。
save_period-1保存模型检查点的频率(以 epoch 为单位)。设置为 -1 将禁用此功能。
cacheFalse启用数据集图像缓存功能。可以设置为 True(缓存至内存)、disk(缓存至硬盘),或 False(不缓存)。
deviceNone指定训练使用的计算设备。可以是单个 GPU(如 device=0),多个 GPU(如 device=0,1),CPU(device=cpu),或 Apple 芯片的 MPS(device=mps)。
workers8用于加载数据的工作线程数量。对于多 GPU 训练,每个 GPU 都会分配一定数量的工作线程。
projectNone训练输出保存的项目目录名称,用于有序管理不同实验结果。
nameNone当前训练运行的名称,用于在项目文件夹中创建子目录以存储训练日志和输出。
exist_okFalse若为 True,允许覆盖已存在的项目名称目录。适用于迭代实验。
pretrainedTrue是否从预训练模型开始训练。可以是布尔值或特定模型路径。
optimizer'auto'选择训练的优化器。包括 SGD、Adam、AdamW 等,或者选择 auto 根据模型配置自动选择。
verboseFalse启用详细的训练输出日志。适合在训练过程中进行调试或监控。
seed0设置训练的随机种子,确保结果的可重复性。
deterministicTrue强制使用确定性算法,确保结果可重复,但可能影响性能。
single_clsFalse在多类别数据集中,将所有类别视为一个类别。适用于二分类任务。
rectFalse启用矩形训练模式,优化批次构成以最小化填充。
cos_lrFalse使用余弦学习率调度器,随训练轮数调整学习率。
close_mosaic10在训练的最后 N 个 epoch 中禁用 mosaic 数据增强,以稳定模型性能。
resumeFalse从上次保存的检查点继续训练。
ampTrue启用自动混合精度训练,减少内存使用并加速训练。
fraction1.0使用数据集的部分数据进行训练,适用于资源有限或实验场景。
lr00.01初始学习率,通常对于 SGD 优化器为 1E-2,对于 Adam 优化器为 1E-3
lrf0.01最终学习率,是初始学习率的一个比例。
momentum0.937SGD 或 Adam 优化器的动量因子。
weight_decay0.0005L2 正则化项,防止过拟合。
warmup_epochs3.0学习率预热的轮数,逐步将学习率提升至初始值。
box7.5损失函数中 box 损失的权重。
cls0.5损失函数中分类损失的权重。
valTrue启用验证,定期评估模型在验证集上的性能。

yolov11超参配置

参数类型默认值范围描述
hsv_hfloat0.0150.0 - 1.0调整图像的色调,基于色轮的比例引入色彩变化,帮助模型在不同的光照条件下泛化。
hsv_sfloat0.70.0 - 1.0改变图像的饱和度,影响颜色的强度,适用于模拟不同的环境条件。
hsv_vfloat0.40.0 - 1.0修改图像的亮度,帮助模型在不同光照条件下表现良好。
degreesfloat0.0-180 - +180在指定的度数范围内随机旋转图像,提高模型识别不同方向物体的能力。
translatefloat0.10.0 - 1.0将图像按图像尺寸的比例进行水平和垂直平移,帮助模型学习检测部分可见的物体。
scalefloat0.5>=0.0按比例缩放图像,模拟不同距离的物体,有助于模型适应不同的视角。
shearfloat0.0-180 - +180对图像进行剪切,模拟从不同角度查看物体的效果。
perspectivefloat0.00.0 - 0.001对图像应用透视变换,增强模型理解三维空间中物体的能力。
flipudfloat0.00.0 - 1.0以指定概率将图像上下翻转,增加数据的多样性,同时保持物体特征不变。
fliplrfloat0.50.0 - 1.0以指定概率将图像左右翻转,适用于学习对称物体,并增加数据集多样性。
bgrfloat0.00.0 - 1.0以指定概率将图像通道从 RGB 切换为 BGR,增强模型对通道错误排序的鲁棒性。
mosaicfloat1.00.0 - 1.0将四张训练图像合成一张,模拟不同场景组合和物体交互,非常适合复杂场景理解。
mixupfloat0.00.0 - 1.0将两张图像及其标签混合,创建复合图像,增加标签噪声和视觉多样性,帮助模型泛化。
copy_pastefloat0.00.0 - 1.0将一个图像中的物体复制并粘贴到另一个图像上,增加物体实例数量,帮助模型学习物体遮挡情况。
copy_paste_modestrflip-选择复制粘贴增强的方法,可以选择 “flip” 或 “mixup”。
auto_augmentstrrandaugment-自动应用预定义的增强策略(randaugment, autoaugment, augmix),通过增加视觉特征的多样性来优化分类任务。
erasingfloat0.40.0 - 0.9在分类训练过程中随机擦除图像的一部分,鼓励模型关注较不明显的特征,提高模型识别能力。
crop_fractionfloat1.00.1 - 1.0将分类图像裁剪为其原始大小的一部分,强调中央特征并适应物体的不同尺度,减少背景干扰。

数据集配置

在 YOLOv11 中,数据集配置文件(如 coco8.yaml)定义了训练、验证和测试数据的路径以及类别标签。以下是一个典型的数据集配置文件结构示例:

path: ../datasets/coco8  # 数据集的根目录
train: images/train      # 训练集图片相对于 path 的路径
val: images/val          # 验证集图片相对于 path 的路径
test:                    # 测试集图片的路径(可选)

类别映射表
names:
  0: person
  1: bicycle
  2: car
  3: motorbike
  4: aeroplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light

数据集配置说明:

path: 数据集的根目录,包含训练、验证和(可选)测试数据的文件夹路径。
train: 训练集图像的相对路径,指定图像文件夹用于模型训练。
val: 验证集图像的相对路径,用于在训练过程中评估模型性能。
test: 测试集图像的路径(可选)。如果不进行测试评估,可以省略。
names: 类别映射表,每个类别分配一个唯一的ID,并且映射到一个可识别的名称。
YOLO(You Only Look Once)是一种流行的目标检测算法,它通过单次前向传递来实现实时目标检测。在使用YOLO进行目标检测时,可以通过命令行参数来进行设置和配置。 以下是YOLO的一些常见命令行参数设置: 1. `--config` 或 `-c`:指定配置文件的路径。配置文件包含了YOLO模型的结构和超参数等信息。 2. `--weights` 或 `-w`:指定预训练模型的权重文件路径。这些权重文件通常是在大规模数据集上进行训练得到的。 3. `--input` 或 `-i`:指定输入图像或视频的路径。可以是单个图像文件或视频文件,也可以是一个包含多个图像或视频的文件夹。 4. `--output` 或 `-o`:指定输出结果的路径。可以是一个文件或文件夹,用于保存检测结果。 5. `--confidence` 或 `-conf`:设置目标检测的置信度阈值。只有当检测到的目标置信度高于该阈值时,才会被认为是有效的目标。 6. `--nms_thresh` 或 `-nms`:设置非极大值抑制(NMS)的阈值。NMS用于抑制重叠较多的检测框,保留最具代表性的目标框。 7. `--classes` 或 `-cls`:指定要检测的目标类别。可以是一个或多个类别的名称或索引。 8. `--gpu`:指定使用的GPU设备编号。如果系统中有多个GPU,可以通过该参数选择使用哪个GPU进行计算。 以上是一些常见的YOLO命令行参数设置,你可以根据具体的需求进行配置。如果还有其他问题,请继续提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SYC_MORE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值