跳至内容

图像分类数据集概述

YOLO 分类任务的数据集结构

对于 Ultralytics YOLO 分类任务,数据集必须以特定的分割目录结构组织起来,置于 root 目录,以便于进行适当的培训、测试和可选的验证过程。该结构包括单独的培训目录 (train)和测试(test)阶段,以及一个可选的验证目录 (val).

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

文件夹结构示例

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

cifar-10-/
|
|-- train/
|   |-- airplane/
|   |   |-- 10008_airplane.png
|   |   |-- 10009_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 1000_automobile.png
|   |   |-- 1001_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 10014_bird.png
|   |   |-- 10015_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- test/
|   |-- airplane/
|   |   |-- 10_airplane.png
|   |   |-- 11_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 100_automobile.png
|   |   |-- 101_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 1000_bird.png
|   |   |-- 1001_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- val/ (optional)
|   |-- 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

# Load a model
model = YOLO("yolov8n-cls.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=path/to/data model=yolov8n-cls.pt epochs=100 imgsz=640

支持的数据集

Ultralytics 支持自动下载以下数据集:

  • Caltech 101:一个包含 101 个对象类别的图像的数据集,用于图像分类任务。
  • 加州理工学院 256:Caltech 101 的扩展版本,包含 256 个物体类别和更具挑战性的图像。
  • CIFAR-10:一个包含 60K 幅 32x32 彩色图像的数据集,分为 10 类,每类 6K 幅图像。
  • CIFAR-100:CIFAR-10 的扩展版本,每类有 100 个对象类别和 600 幅图像。
  • 时尚-MNIST:由 10 个时尚类别的 70,000 张灰度图像组成的数据集,用于图像分类任务。
  • ImageNet:这是一个用于物体检测和图像分类的大型数据集,包含超过 1,400 万张图像和 20,000 个类别。
  • ImageNet-10:ImageNet 的较小子集,包含 10 个类别,用于更快地进行实验和测试。
  • Imagenette:ImageNet 的较小子集,包含 10 个易于区分的类别,可加快训练和测试。
  • Imagewoof:ImageNet 的一个更具挑战性的子集,包含 10 个犬种类别,用于图像分类任务。
  • MNIST:由 70,000 幅手写数字灰度图像组成的数据集,用于图像分类任务。

添加自己的数据集

如果您有自己的数据集,并希望使用Ultralytics 来训练分类模型,请确保数据集格式符合上文 "数据集格式 "中的规定,然后将您的 data 参数的数据集目录。

常见问题

如何为YOLO 分类任务构建数据集?

要为Ultralytics YOLO 分类任务构建数据集,应遵循特定的分割目录格式。将数据集组织成不同的目录,用于 train, test以及 val.每个目录都应包含以每个类别命名的子目录,其中包含相应的图像。这有助于训练和评估过程的顺利进行。以 CIFAR-10 数据集格式为例:

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

更多详情,请访问 YOLO 分类任务的数据集结构

Ultralytics YOLO 支持哪些数据集进行图像分类?

Ultralytics YOLO 支持自动下载多个用于图像分类的数据集,包括

这些数据集的结构使其易于与YOLO 一起使用。每个数据集的页面都提供了有关其结构和应用的详细信息。

如何为YOLO 图像分类添加自己的数据集?

要在Ultralytics YOLO 中使用自己的数据集,请确保数据集遵循分类任务所需的指定目录格式,并带有单独的 train, test以及 val 目录,以及包含相应图像的每个类的子目录。数据集结构正确后,将 data 参数初始化训练脚本时的数据集根目录。下面是Python 中的一个示例:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-cls.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="path/to/your/dataset", epochs=100, imgsz=640)

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

为什么要使用Ultralytics YOLO 进行图像分类?

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

  • 预训练模型:加载预训练模型,如 yolov8n-cls.pt 来启动您的培训进程。
  • 易用性:简单的应用程序接口和CLI 命令,便于培训和评估。
  • 高性能:最先进的精度和速度,是实时应用的理想选择。
  • 支持多种数据集:与 CIFAR-10、ImageNet 等各种流行数据集无缝集成。
  • 社区和支持:可访问大量文件和活跃的社区,以排除故障和改进工作。

有关更多的见解和实际应用,您可以探索 Ultralytics YOLO.

如何使用Ultralytics YOLO 训练模型?

使用Ultralytics YOLO 训练模型可以在Python 和CLI 中轻松完成。下面是一个例子:

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-cls.pt")  # load a pretrained model

# Train the model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=path/to/data model=yolov8n-cls.pt epochs=100 imgsz=640

这些示例演示了使用这两种方法训练YOLO 模型的简单过程。更多信息,请访问 "使用"部分。



创建于 2023-11-12,更新于 2024-07-04
作者:glenn-jocher(7),stormsson(1),GreatV(1)

评论