首页 > 其他分享 >Ultralytics-中文文档-十二-

Ultralytics-中文文档-十二-

时间:2024-08-08 14:08:15浏览次数:11  
标签:中文 ultralytics Ultralytics 树莓 YOLOv8 文档 Jetson model

Ultralytics 中文文档(十二)

Ultralytics YOLO 超参数调整指南

原文:docs.ultralytics.com/guides/hyperparameter-tuning/

介绍

超参数调整不仅仅是一次性设置,而是一个迭代过程,旨在优化机器学习模型的性能指标,如准确率、精确率和召回率。在 Ultralytics YOLO 的背景下,这些超参数可以从学习率到架构细节,如层数或激活函数类型。

什么是超参数?

超参数是算法的高级结构设置。它们在训练阶段之前设置,并在其间保持不变。以下是 Ultralytics YOLO 中一些常调整的超参数:

  • 学习率 lr0: 确定每次迭代中在损失函数中向最小值移动的步长大小。

  • 批处理大小 batch: 在前向传递中同时处理的图像数量。

  • 训练周期数 epochs: 一个周期是所有训练样本的完整前向和后向传递。

  • 架构细节: 如通道数、层数、激活函数类型等。

超参数调整可视化

关于 YOLOv8 中使用的所有增强超参数的完整列表,请参阅配置页面。

遗传进化和突变

Ultralytics YOLO 使用遗传算法来优化超参数。遗传算法受自然选择和遗传机制的启发。

  • 突变: 在 Ultralytics YOLO 的背景下,突变通过对现有超参数应用小的随机更改,在超参数空间中进行局部搜索,生成新的评估候选者。

  • 交叉: 虽然交叉是一种流行的遗传算法技术,但它目前在 Ultralytics YOLO 中不用于超参数调整。主要关注通过变异生成新的超参数集。

准备超参数调整

在开始调整过程之前,重要的是:

  1. 确定评估模型性能的指标:这可能是 AP50、F1 分数或其他指标。

  2. 设定调整预算:定义你愿意分配的计算资源量。超参数调整可能需要大量计算资源。

涉及步骤

初始化超参数

从一组合理的初始超参数开始。这可以是由 Ultralytics YOLO 默认设置的超参数,也可以是基于您的领域知识或先前实验的某些内容。

变异超参数

使用_mutate方法基于现有集合生成新的超参数集。

训练模型

使用变异后的超参数集进行训练。然后评估训练性能。

评估模型

使用 AP50、F1 分数或自定义指标等指标评估模型性能。

记录结果

记录性能指标及相应超参数对于将来参考非常重要。

重复

这个过程重复进行,直到达到设定的迭代次数或性能指标令人满意为止。

用法示例

这里是如何使用model.tune()方法利用Tuner类对 YOLOv8n 在 COCO8 上进行 30 个 epoch 的超参数调整,使用 AdamW 优化器,并跳过绘图、检查点和仅在最后一个 epoch 上进行验证以加快调整速度。

示例

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolov8n.pt")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False) 

结果

在成功完成超参数调整过程之后,您将获得几个文件和目录,这些文件和目录概括了调整结果。以下是每个的描述:

文件结构

下面是结果目录结构的示例。像train1/这样的训练目录包含单独的调整迭代,即使用一组超参数训练的一个模型。tune/目录包含所有单独模型训练的调整结果:

runs/
└── detect/
    ├── train1/
    ├── train2/
    ├── ...
    └── tune/
        ├── best_hyperparameters.yaml
        ├── best_fitness.png
        ├── tune_results.csv
        ├── tune_scatter_plots.png
        └── weights/
            ├── last.pt
            └── best.pt 

文件描述

best_hyperparameters.yaml

此 YAML 文件包含调整过程中找到的表现最佳的超参数。您可以使用此文件使用这些优化设置初始化未来的训练。

  • 格式: YAML

  • 用法: 超参数结果

  • 示例:

    # 558/900 iterations complete ✅ (45536.81s)
    # Results saved to /usr/src/ultralytics/runs/detect/tune
    # Best fitness=0.64297 observed at iteration 498
    # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297}
    # Best fitness model is /usr/src/ultralytics/runs/detect/train498
    # Best fitness hyperparameters are printed below.
    
    lr0:  0.00269
    lrf:  0.00288
    momentum:  0.73375
    weight_decay:  0.00015
    warmup_epochs:  1.22935
    warmup_momentum:  0.1525
    box:  18.27875
    cls:  1.32899
    dfl:  0.56016
    hsv_h:  0.01148
    hsv_s:  0.53554
    hsv_v:  0.13636
    degrees:  0.0
    translate:  0.12431
    scale:  0.07643
    shear:  0.0
    perspective:  0.0
    flipud:  0.0
    fliplr:  0.08631
    mosaic:  0.42551
    mixup:  0.0
    copy_paste:  0.0 
    

best_fitness.png

这是一个显示适应度(通常是像 AP50 这样的性能指标)随迭代次数变化的图表。它帮助您可视化遗传算法随时间的表现情况。

  • 格式: PNG

  • 用法: 性能可视化

超参数调整适应度 vs 迭代

tune_results.csv

CSV 文件包含调整过程中每次迭代的详细结果。文件中的每一行代表一次迭代,包括适应度分数、精确度、召回率以及所使用的超参数。

  • 格式: CSV

  • 用法: 追踪每次迭代的结果。

  • 示例:

     fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste
      0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0
      0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0
      0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0 
    

tune_scatter_plots.png

此文件包含从tune_results.csv生成的散点图,帮助您可视化不同超参数与性能指标之间的关系。请注意,初始化为 0 的超参数将不会被调整,例如下面的degreesshear

  • 格式: PNG

  • 用法: 探索性数据分析

超参数调整散点图

weights/

此目录包含在超参数调整过程中最后和最佳迭代期间保存的 PyTorch 模型。

  • last.pt: last.pt是训练的最后一个 epoch 的权重。

  • best.pt: 达到最佳适应度分数的迭代的best.pt权重。

利用这些结果,您可以为未来的模型训练和分析做出更加明智的决策。随时参考这些工件,了解您的模型表现如何以及如何进一步改进它。

结论

Ultralytics YOLO 的超参数调优过程通过基于变异的遗传算法方法简化但功能强大。按照本指南中概述的步骤进行操作将帮助您系统地调整模型以实现更好的性能。

进一步阅读

  1. 维基百科中的超参数优化

  2. YOLOv5 超参数演化指南

  3. 使用 Ray Tune 和 YOLOv8 进行高效的超参数调优

想要深入了解的话,你可以查看Tuner类的源代码和相关文档。如果你有任何问题、功能请求或需要进一步帮助,请随时通过GitHubDiscord联系我们。

常见问题

如何在 Ultralytics YOLO 的超参数调优过程中优化学习率?

要优化 Ultralytics YOLO 的学习率,请从设置初始学习率lr0参数开始。常见的初始值范围为0.0010.01。在超参数调优过程中,此值将进行变异以找到最佳设置。您可以利用model.tune()方法来自动化此过程。例如:

示例

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolov8n.pt")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False) 

欲了解更多详情,请查看 Ultralytics YOLO 配置页面。

在 YOLOv8 中使用遗传算法进行超参数调优的好处是什么?

Ultralytics YOLOv8 中的遗传算法提供了一种探索超参数空间的强大方法,从而实现高度优化的模型性能。其主要优势包括:

  • 高效搜索:像变异这样的遗传算法可以快速探索大量的超参数。

  • 避免局部最小值:通过引入随机性,有助于避免局部最小值,确保更好的全局优化。

  • 性能指标:它们根据 AP50 和 F1 分数等性能指标进行调整。

要了解遗传算法如何优化超参数,请查看超参数演化指南。

Ultralytics YOLO 的超参数调优过程需要多长时间?

使用 Ultralytics YOLO 进行超参数调优所需的时间在很大程度上取决于多个因素,如数据集大小、模型架构复杂性、迭代次数以及可用的计算资源。例如,对像 COCO8 这样的数据集进行 30 个 epochs 的 YOLOv8n 调优可能需要几小时到几天不等,具体取决于硬件配置。

为了有效管理调整时间,事先定义一个明确的调整预算(内部部分链接)。这有助于平衡资源分配和优化目标。

在 YOLO 超参数调优过程中应该使用哪些指标来评估模型性能?

在进行 YOLO 超参数调优时评估模型性能时,可以使用几个关键指标:

  • AP50:在 IoU 阈值为 0.50 时的平均精度。

  • F1 分数:精确率和召回率的调和平均数。

  • 精确率和召回率:这些指标表明模型在识别真正例与假正例以及假负例方面的准确性。

这些指标帮助您理解模型性能的不同方面。请参考 Ultralytics YOLO 性能指标指南,获取全面的概述。

我可以使用 Ultralytics HUB 来调整 YOLO 模型的超参数吗?

是的,您可以使用 Ultralytics HUB 来调整 YOLO 模型的超参数。该 HUB 提供了一个无代码平台,可以轻松上传数据集、训练模型并高效进行超参数调整。它实时跟踪和可视化调整进展和结果。

在 Ultralytics HUB 云训练文档中深入了解如何使用 Ultralytics HUB 进行超参数调整。

Ultralytics 文档:如何在 SAHI 中使用 YOLOv8 进行切片推理

原文:docs.ultralytics.com/guides/sahi-tiled-inference/

欢迎来到 Ultralytics 文档,学习如何与 SAHI(切片辅助超推理)一起使用 YOLOv8。本详尽指南旨在为您提供所有必要的知识,以便您将 SAHI 与 YOLOv8 结合使用。我们将深入探讨 SAHI 的定义、切片推理在大规模应用中的重要性,以及如何将这些功能与 YOLOv8 整合,从而提升目标检测性能。

SAHI 切片推理概述

SAHI 简介

SAHI(切片辅助超推理)是一个创新的库,旨在优化大规模和高分辨率图像的目标检测算法。其核心功能在于将图像分割成可管理的切片,对每个切片进行目标检测,然后将结果拼合在一起。SAHI 兼容一系列目标检测模型,包括 YOLO 系列,从而在保证计算资源优化的同时提供灵活性。

www.youtube.com/embed/tq3FU_QczxE

观看: 使用 Ultralytics YOLOv8 进行 SAHI 推理(切片辅助超推理)

SAHI 的关键特性

  • 无缝集成:SAHI 与 YOLO 模型无缝集成,意味着您可以在不需要大量代码修改的情况下开始切片和检测。

  • 资源效率:通过将大图像分解成较小的部分,SAHI 优化了内存使用,使您可以在资源有限的硬件上运行高质量的检测。

  • 高准确性:SAHI 在拼合过程中采用智能算法合并重叠的检测框,从而保持检测的准确性。

什么是切片推理?

切片推理指的是将大尺寸或高分辨率图像细分为较小的段(切片),在这些切片上进行目标检测,然后重新组合这些切片,以重建原始图像上的对象位置。在计算资源有限或者处理极高分辨率图像可能导致内存问题的情况下,这种技术非常宝贵。

切片推理的优势

  • 减少计算负担:较小的图像切片处理速度更快,内存消耗更少,使其能够在低端硬件上更加流畅运行。

  • 保持检测质量:由于每个切片都是独立处理的,只要切片足够大以捕捉感兴趣的对象,就不会降低目标检测的质量。

  • 增强可扩展性:该技术允许更轻松地在不同尺寸和分辨率的图像上进行目标检测,适用于从卫星图像到医学诊断等各种应用。

YOLOv8 无 SAHI YOLOv8 有 SAHI
YOLOv8 无 SAHI YOLOv8 有 SAHI

安装与准备

安装

要开始,请安装 SAHI 和 Ultralytics 的最新版本:

pip  install  -U  ultralytics  sahi 

导入模块并下载资源

这是如何导入必要模块、下载 YOLOv8 模型和一些测试图像的方法:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
    "demo_data/terrain2.png",
) 

使用 YOLOv8 进行标准推断

实例化模型

您可以像这样实例化 YOLOv8 模型进行目标检测:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="yolov8",
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
) 

执行标准预测

使用图像路径或 numpy 图像执行标准推断。

from sahi.predict import get_prediction

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model) 

可视化结果

导出并可视化预测的边界框和掩模:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png") 

使用 YOLOv8 进行切片推断

指定切片尺寸和重叠比率执行切片推断:

from sahi.predict import get_sliced_prediction

result = get_sliced_prediction(
    "demo_data/small-vehicles1.jpeg",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
) 

处理预测结果

SAHI 提供 PredictionResult 对象,可转换为各种注释格式:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3] 

批量预测

对目录中的图像进行批量预测:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolov8n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
) 

就这样!现在您已准备好使用 YOLOv8 和 SAHI 进行标准和切片推断了。

引用与致谢

如果您在研究或开发工作中使用 SAHI,请引用原始的 SAHI 论文并致谢作者:

@article{akyon2022sahi,
  title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
  author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
  journal={2022 IEEE International Conference on Image Processing (ICIP)},
  doi={10.1109/ICIP46576.2022.9897990},
  pages={966-970},
  year={2022}
} 

我们衷心感谢 SAHI 研究组为计算机视觉社区创建和维护这一宝贵资源。有关 SAHI 及其作者的更多信息,请访问 SAHI GitHub 仓库

常见问题解答

如何集成 YOLOv8 和 SAHI 以在目标检测中进行切片推断?

将 Ultralytics YOLOv8 与 SAHI 集成(切片辅助超推断)用于在高分辨率图像上优化切片推断,通过将图像分割成可管理的切片来改善内存使用和确保高检测精度。要开始使用,您需要安装 ultralytics 和 sahi 库:

pip  install  -U  ultralytics  sahi 

然后,下载 YOLOv8 模型和测试图像:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_model_path)

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
) 

欲了解更详细的说明,请参阅我们的切片推断指南。

我为什么要在大图像上使用 YOLOv8 和 SAHI 进行目标检测?

使用 SAHI 和 Ultralytics YOLOv8 在大图像上进行目标检测提供了几个好处:

  • 减少计算负担:更小的切片处理速度更快,消耗更少内存,使得在资源有限的硬件上运行高质量检测成为可能。

  • 保持检测精度:SAHI 使用智能算法合并重叠框,保持检测质量。

  • 增强可扩展性:通过在不同图像尺寸和分辨率上扩展目标检测任务,SAHI 成为各种应用的理想选择,如卫星图像分析和医学诊断。

在我们的文档中了解更多关于切片推理的好处。

当使用 YOLOv8 和 SAHI 时,我可以可视化预测结果吗?

是的,当使用 YOLOv8 和 SAHI 时,您可以可视化预测结果。以下是导出和可视化结果的方法:

result.export_visuals(export_dir="demo_data/")
from IPython.display import Image

Image("demo_data/prediction_visual.png") 

此命令将预测结果保存到指定目录,并且您可以加载图像在您的笔记本或应用程序中查看它。查看标准推理部分以获取详细指南。

SAHI 提供了哪些功能来改进 YOLOv8 的目标检测?

SAHI(切片辅助超推理)提供了几个功能,可以补充 Ultralytics YOLOv8 进行目标检测:

  • 无缝集成:SAHI 轻松集成到 YOLO 模型中,只需进行最少的代码调整。

  • 资源效率:它将大图像分割成较小的切片,优化内存使用和速度。

  • 高准确性:通过在拼接过程中有效合并重叠的检测框,SAHI 保持高检测准确性。

深入了解,请阅读关于 SAHI 的关键特性。

如何处理使用 YOLOv8 和 SAHI 的大规模推理项目?

要处理使用 YOLOv8 和 SAHI 的大规模推理项目,请遵循以下最佳实践:

  1. 安装所需的库:确保您拥有最新版本的 ultralytics 和 sahi。

  2. 配置切片推理:确定适合您特定项目的最佳切片尺寸和重叠比率。

  3. 运行批量预测:利用 SAHI 的能力对图像目录进行批量预测,从而提高效率。

批量预测示例:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolov8n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
) 

要获取更详细的步骤,请访问我们的批量预测部分。

YOLOv8

标签:中文,ultralytics,Ultralytics,树莓,YOLOv8,文档,Jetson,model
From: https://www.cnblogs.com/apachecn/p/18348808

相关文章

  • SublimeText 4.4169 中文授权版
    SublimeText是编辑器中的一款神级IDE,非常有名,虽然比较轻量,但是呢软件拓展性非常强大,适用于多种编程语言,当然,当一个编辑器,也是非常不错的。SublimeText支持但不限于C,C++,C#,CSS,D,Erlang,HTML,Groovy,Haskell,HTML,Java,JavaScript,LaTeX,Lisp,Lua,Markdown,......
  • 天堂的爪印 官方中文版
    游戏截图 这是一段令人难以置信的美丽和迷人的第三人称旅程,在这个世界的每一个角落都隐藏着等待探索者发现的奇妙故事。你想知道在这个魔幻的地方等待着你的是什么吗?游戏有三个可供探索的生物群系,每个都有独特的游戏机制,充满了美丽、惊人的景观和谜题。这个游戏是关于天......
  • Labels and Databases for Mac( 数据库标签制作软件)1.8.2中文版
    LabelsandDatabasesforMac一款数据库标签制作和设计软件。LabelsandDatabases版可以帮助您使用各种内置标签格式创建标签、信封和卡片,并使用用户数据库中包含的信息填充它们,即使用MailMerge创建和打印标签。LabelsandDatabasesforMac软件下载地址Labelsand......
  • 4K Video Downloader Plus 中文 授权版
    4KVideoDownloader是一款专门为帮助您从不同的视频网站下载高清视频的软件工具(极速下载站提供),该应用程序为用户提供了将视频保存到FLV,MP4,MKV或3GP的可能性。它拥有直观,整洁的布局,允许用户随时随地执行多项操作。您可以将URL直接粘贴到主面板中,并根据其流类型选择视频质量。此......
  • 4K Video Downloader Plus 中文 授权版
    4KVideoDownloader是一款专门为帮助您从不同的视频网站下载高清视频的软件工具(极速下载站提供),该应用程序为用户提供了将视频保存到FLV,MP4,MKV或3GP的可能性。它拥有直观,整洁的布局,允许用户随时随地执行多项操作。您可以将URL直接粘贴到主面板中,并根据其流类型选择视频质量。此......
  • java集成onlyoffice实现文档在线预览编辑
    一、onlyoffice是什么ONLYOFFICE是一款由AscensioSystemSIA公司开发的在线办公软件套件,它提供了文档编辑、电子表格、演示文稿和表单等多种办公工具,旨在提高团队协作效率和文档处理的便捷性。以下是关于ONLYOFFICE的详细介绍:1、软件概述名称:ONLYOFFICE文档(英文名ONLYOFFIC......
  • DevExpress WPF中文教程:如何在GridControl中对数据排序、分组、过滤?
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • 智能化解决方案:提升汽车制造图文档发送效率,实现高效传输!
    汽车制造业企业数据外发需求频繁,不仅有与异地研发机构间、供应商之间的协同研发文件交换,还有与外包供应商及零部件供应商之间的基于价值链的协同关系。主要涉及的数据类型有:汽车制造图文档发送、研发数据发送、项目文件发送、反馈数据与协调文件发送等。目前大部分汽车制造业企......
  • 前端实现文档预览(支持word、ppt、pdf)-【@zuiyouliao/vue-file-viewer】
    背景有的时候我们需要在前端页面上预览某些文档,文档的格式比如:word、ppt、pdf、图片等等实现方案可以使用@zuiyouliao/vue-file-viewer第三方库,官方地址方式1:通过组件方式引入优点:word/图片可以识别,方便快捷。缺点:pdf/pptx文件无法识别。安装依赖npminstall--save@zui......
  • 基于SpringBoot教学管理系统的设计与实现(源码+LW+调试文档+讲解等)
     博主介绍:  ......