Ultralytics YOLO27:
Get Started

图像分类数据集概览#

YOLO 分类任务的数据集结构#

对于 Ultralytics YOLO 分类任务,数据集必须按照特定的划分目录结构组织在 root 目录下。该结构包括 train 目录和 val 目录(也接受 valid 和 validation),还可以包含可选的 test 目录。如果没有验证目录,则使用 test 目录进行验证。如果根目录中完全没有 train 目录,但包含每个类别各自的文件夹,Ultralytics 会自动将图像按 80/20 的比例划分,并放入新建的 <root>_split 目录及其 train 和 val 子目录中。

这些目录中的每一个都应包含数据集中每个类别对应的一个子目录。子目录以相应类别命名,并包含该类别的所有图像。确保每个图像文件的名称唯一,并以 JPEG 或 PNG 等常见格式存储。

文件夹结构示例#

以 CIFAR-10 数据集为例,文件夹结构应如下所示:

cifar10/
|
|-- train/
|   |-- airplane/
|   |   |-- 10008_airplane.png
|   |   |-- 10009_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 1000_automobile.png
|   |   |-- 1001_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 10014_bird.png
|   |   |-- 10015_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- test/ (optional)
|   |-- airplane/
|   |   |-- 10_airplane.png
|   |   |-- 11_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 100_automobile.png
|   |   |-- 101_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 1000_bird.png
|   |   |-- 1001_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- val/
|   |-- airplane/
|   |   |-- 105_airplane.png
|   |   |-- 106_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 102_automobile.png
|   |   |-- 103_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 1045_bird.png
|   |   |-- 1046_bird.png
|   |   |-- ...
|   |
|   |-- ...

这种结构化方式可确保模型在训练阶段从组织良好的类别中有效学习,并在测试和验证阶段准确评估性能。

用法#

示例
from ultralytics import YOLO

# 加载模型
model = YOLO("yolo26n-cls.pt")  # 加载预训练模型(推荐用于训练)

# 训练模型
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)
提示

大多数内置数据集名称(例如 cifar10、imagenette 或 mnist160)在首次引用时都会自动下载并缓存数据。只有在你整理好自定义数据集后,才将 data 指向文件夹路径。

支持的数据集#

Ultralytics 支持自动下载以下数据集。其中大多数数据集也托管在 Ultralytics Platform 上,你可以浏览图像和标注、查看数据集统计信息,并克隆数据集以进行云端训练。

  • Caltech 101:包含 101 个物体类别图像的数据集,可用于图像分类任务。
  • Caltech 256:Caltech 101 的扩展版本,包含 256 个目标类别和更具挑战性的图像。
  • CIFAR-10:一个包含 6 万张 32x32 彩色图像的数据集,分为 10 个类别,每个类别有 6,000 张图像。
  • CIFAR-100:CIFAR-10 的扩展版本,包含 100 个目标类别,每个类别有 600 张图像。
  • Fashion-MNIST:一个包含 70,000 张灰度图像的数据集,图像分为 10 个时尚类别,可用于图像分类任务。
  • ImageNet:ImageNet-1k(ILSVRC-2012)图像分类基准,包含 1,000 个类别、128 万张训练图像和 50,000 张验证图像。
  • ImageNet-10:ImageNet 的较小子集,包含 10 个类别,可加快实验和测试。
  • Imagenette:ImageNet 的较小子集,包含 10 个易于区分的类别,可加快训练和测试。
  • Imagewoof:ImageNet 中更具挑战性的子集,包含 10 种犬类,可用于图像分类任务。
  • MNIST:一个包含 70,000 张手写数字灰度图像的数据集,可用于图像分类任务。
  • MNIST160:从 MNIST 训练集和测试集中分别选取数字 0-9 的前 8 张图像。该数据集总共包含 160 张图像。

添加你自己的数据集#

如果你有自己的数据集,并希望将其用于使用 Ultralytics YOLO 训练分类模型,请确保数据集遵循上文“数据集结构”中指定的格式,然后在初始化训练脚本时将 data 参数指向数据集目录。

常见问题#

  • 如需为 Ultralytics YOLO 分类任务组织数据集,请遵循特定的划分目录格式。将数据集分别放入 train 和 val 目录,也可以选择添加 test 目录。每个目录都应包含以各个类别命名的子目录,并在其中放入相应图像。这样可以让训练和评估流程顺利进行。以下以 CIFAR-10 数据集格式为例:

    cifar10/
    |-- train/
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...
    |-- val/
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...
    |-- test/ (optional)
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...

    更多详情请参阅YOLO 分类任务的数据集结构部分。

  • Ultralytics YOLO 支持自动下载多个图像分类数据集,包括 Caltech 101、Caltech 256、CIFAR-10、CIFAR-100、Fashion-MNIST、ImageNet、ImageNet-10、Imagenette、Imagewoof 和 MNIST。这些数据集的结构便于与 YOLO 配合使用。每个数据集的页面都提供了其结构和应用的更多详情。

  • 如需将自己的数据集与 Ultralytics YOLO 配合使用,请确保数据集遵循分类任务所需的指定目录格式,分别设置 train 和 val 目录(也可以选择添加 test),并为每个类别创建子目录,在其中放入对应图像。数据集结构设置正确后,在初始化训练脚本时将 data 参数指向数据集的根目录。以下是 Python 示例:

    from ultralytics import YOLO
    
    # 加载模型
    model = YOLO("yolo26n-cls.pt")  # 加载预训练模型(推荐用于训练)
    
    # 训练模型
    results = model.train(data="path/to/your/dataset", epochs=100, imgsz=640)

    更多详情请参阅添加自己的数据集部分。

  • Ultralytics YOLO 为图像分类提供了多项优势,包括:

    • 预训练模型:加载 yolo26n-cls.pt 等预训练模型,快速启动训练流程。
    • 易于使用:使用简单的 API 和 CLI 命令进行训练和评估。
    • 高性能:具备先进的准确率和速度,非常适合实时应用。
    • 支持多个数据集:可与 CIFAR-10、ImageNet 等多种热门数据集无缝集成。
    • 社区与支持:可获取丰富的文档和活跃的社区支持,帮助你排查问题并改进项目。

    如需了解更多信息和实际应用案例,可以探索 Ultralytics YOLO。

  • 使用 Ultralytics YOLO 训练模型非常简单,既可以使用 Python,也可以使用 CLI。以下是一个示例:

    示例
    from ultralytics import YOLO
    
    # 加载模型
    model = YOLO("yolo26n-cls.pt")  # 加载预训练模型
    
    # 训练模型
    results = model.train(data="path/to/dataset", epochs=100, imgsz=640)

    这些示例展示了使用任一方式训练 YOLO 模型的简单流程。更多信息请参阅用法部分,以及用于分类任务的训练页面。

评论