深圳Yolo 视觉
深圳
立即加入
词汇表

YAML

了解 YAML 如何简化AI工作流程。发现如何使用 YAML 文件配置数据集并训练 Ultralytics YOLO26 模型,以实现更快、更简单的 MLOps。

YAML (YAML Ain't Markup Language) 是一种人类可读的数据序列化标准,广泛用于软件行业编写配置文件。与更复杂的标记语言不同,YAML 优先考虑清晰的格式和可读性,使其成为需要快速检查或修改参数的开发者和数据科学家的绝佳选择。其简单结构依赖于缩进而非括号或标签,这使得用户能够以最少的视觉混乱定义列表和字典等分层数据结构。在人工智能和机器学习的背景下,YAML 充当了人类意图和机器执行之间的关键桥梁,以易于版本控制和共享的格式存储从数据集路径到 超参数调优 设置的所有内容。

在机器学习中的相关性

在现代 机器学习操作 (MLOps) 中,维护可复现和有组织的实验至关重要。YAML 文件充当这些实验的蓝图,将所有必要的配置细节封装在一个文档中。像 Ultralytics YOLO26 模型这样的框架严重依赖这些配置文件来定义模型架构和训练协议。

当你训练计算机视觉模型时,你通常需要指定训练数据的存储位置、你正在detect的类别数量以及这些类别的名称。避免将这些值硬编码到python脚本中(这可能导致代码库混乱),而是将这些数据分离到一个yaml文件中。这种关注点分离允许研究人员更换数据集或调整学习率而无需修改核心代码库,从而促进更好的实验track和协作。

YAML、JSON与XML对比

尽管YAML常与JSON(JavaScript对象表示法)和XML(可扩展标记语言)进行比较,但它们在AI生态系统中扮演着略有不同的角色。

  • YAML: 最适合人类编写和读取的配置文件。它支持注释,这对于记录为什么选择特定 模型权重 或参数至关重要。
  • JSON:适用于机器到机器的通信,例如Web API或保存推理结果。由于需要引号和大括号,它更严格,人类手动编辑更困难,并且缺乏注释支持。
  • XML: 一种更冗长的格式,常用于遗留系统或复杂文档存储(比如 Pascal VOC 标注)。通常被认为对于现代深度学习工作流中的简单配置任务来说过于繁重。

人工智能在现实世界中的应用

YAML在AI开发生命周期的几个关键阶段发挥作用:

  • 数据集配置: 在使用 物体检测 诸如COCO或自定义数据集时 Ultralytics 平台,一个 yaml 文件(data.yaml)通常定义了训练集、验证集和测试集的文件路径。它还将类别索引(0、1、2)映射到类别名称(人、自行车、汽车),确保模型理解数据结构。
  • CI/CD 流水线:持续集成工作流中,像GitHub Actions这样的工具使用yaml来定义自动化步骤。这可能包括对新的神经网络架构运行单元测试,或者在代码推送到仓库时将模型部署到Docker容器

示例:配置YOLO训练运行

以下示例展示了一个典型的yaml文件如何作为数据集接口,用于训练YOLO26模型。下面的python代码片段展示了Ultralytics库如何读取此文件以启动训练过程。

1. 某 coco8.yaml 文件 (概念):此文件将包含图像路径和类别名称列表。

path: ../datasets/coco8  # dataset root dir
train: images/train  # train images (relative to 'path')
val: images/val  # val images (relative to 'path')

# Classes
names:
  0: person
  1: bicycle
  2: car
  ...

2. python 用法:代码读取配置并使用指定的参数启动训练。

from ultralytics import YOLO

# Load the YOLO26 model (recommended for new projects)
model = YOLO("yolo26n.pt")

# Train the model using the dataset configuration defined in the YAML file
# The 'data' argument points directly to the YAML file
results = model.train(data="coco8.yaml", epochs=5, imgsz=640)

语法关键概念

了解一些关键语法规则有助于避免常见错误,例如 ScannerErrorParserError,这通常由于不正确的缩进而发生。

  • 缩进:yaml 使用空白字符(空格,而非制表符)来表示结构。嵌套项必须比其父项缩进更多。
  • 键值对: 数据以 key: value。例如, epochs: 100 设置训练周期数。
  • 列表: 序列由连字符表示 -。这对于定义列表很有用 数据增强 步骤或多个输入源。
  • 注释:# 开头的行会被解析器忽略,这允许你留下关于特定 超参数 的注释直接在文件中。

通过掌握YAML,实践者可以简化其模型训练工作流程,减少配置错误,并确保其AI项目具有可扩展性和易于维护性。

让我们一起共建AI的未来!

开启您的机器学习未来之旅