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

YAML

了解YAML如何简化AI工作流程。探索如何使用YAML文件配置数据集并Ultralytics 模型,实现更快速、更便捷的机器学习运维。

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

机器学习中的相关性

现代机器学习运维(MLOps)中,保持实验的可重复性和条理性至关重要。YAML文件作为这些实验的蓝图,将所有必要的配置细节封装在单一文档中。Ultralytics 等框架高度依赖这些配置文件来定义模型架构和训练协议。

在训练计算机视觉模型时,通常需要指定训练数据的位置、要检测的类别数量以及各类别的名称。 与其将这些参数硬编码到Python (可能导致代码混乱),不如将数据分离到YAML文件中。这种职责分离使研究人员能够在不触及核心代码库的情况下更换数据集或调整学习率,从而更有效地追踪实验进程并促进协作。

YAML 与 JSON 与 XML

虽然YAML常被拿来与JSON(JavaScript对象表示法)和XML(可扩展标记语言)相比较,但在人工智能生态系统中,它们各自承担着略有不同的功能。

  • YAML:最适合由人类编写和阅读的配置文件。它支持注释功能,这对记录特定模型权重或参数的选择依据至关重要。
  • JSON:适用于机器间通信,例如Web API或保存推理结果。由于必须使用引号和花括号,其格式更为严格且难以人工编辑,且不支持注释功能。
  • XML:一种更冗长的格式,常用于传统系统或复杂文档存储(如PascalVOC )。在现代深度学习工作流中,它通常被认为过于臃肿,不适合简单的配置任务。

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

YAML在人工智能开发生命周期的多个关键阶段发挥着重要作用:

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

示例:配置YOLOYOLO 运行

以下示例展示了典型的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,从业者能够优化模型训练工作流程,减少配置错误,并确保其人工智能项目保持可扩展性且易于维护。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入