图像分类数据集概述#
YOLO 分类任务的数据集结构#
对于 Ultralytics YOLO 分类任务,数据集必须在 root 目录下组织为特定的分割目录结构,以便进行正确的训练、测试和可选的验证过程。此结构包括用于训练(train)和验证(val)阶段的独立目录,以及用于测试的可选目录(test)。
这些目录中的每一个都应为数据集中的每个类别包含一个子目录。子目录以相应的类别命名,并包含该类别的所有图像。确保每个图像文件命名唯一并以 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("yolo26n-cls.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)大多数内置数据集名称(例如 cifar10、imagenette 或 mnist160)在你首次引用它们时会自动下载并缓存数据。仅当你整理了自定义数据集时,才将 data 指向文件夹路径。
支持的数据集#
Ultralytics 支持以下具有自动下载功能的数据集:
- Caltech 101:包含用于图像分类任务的 101 个对象类别图像的数据集。
- Caltech 256:Caltech 101 的扩展版本,包含 256 个对象类别和更具挑战性的图像。
- CIFAR-10:一个包含 10 个类别共 6 万张 32x32 彩色图像的数据集,每个类别 6 千张图像。
- CIFAR-100:CIFAR-10 的扩展版本,包含 100 个对象类别,每个类别 600 张图像。
- Fashion-MNIST:一个包含 70,000 张来自 10 个时尚类别的灰度图像的数据集,用于图像分类任务。
- ImageNet:一个用于目标检测和图像的大规模数据集,包含超过 1400 万张图像和 20,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、test以及可选的val的独立目录中。这些目录中的每一个都应包含以每个类命名的子目录,其中包含相应的图像。这有助于顺利进行训练和评估过程。例如,考虑 CIFAR-10 数据集格式:cifar-10-/ |-- train/ | |-- airplane/ | |-- automobile/ | |-- bird/ | ... |-- test/ | |-- airplane/ | |-- automobile/ | |-- bird/ | ... |-- val/ (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、test以及可选的val目录,并且每个类都有包含各自图像的子目录。一旦你的数据集结构正确,在初始化训练脚本时将data参数指向数据集的根目录。这是一个 Python 示例:from ultralytics import YOLO # Load a model model = YOLO("yolo26n-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 为图像分类提供了多项好处,包括:
- 预训练模型:加载诸如
yolo26n-cls.pt的预训练模型来快速启动你的训练过程。 - 易用性:用于训练和评估的简单 API 和 CLI 命令。
- 高性能:最先进的准确率和速度,非常适合实时应用。
- 支持多个数据集:与各种热门数据集(如 CIFAR-10、ImageNet 等)无缝集成。
- 社区与支持:访问广泛的文档以及活跃的社区以进行故障排除和改进。
有关更多见解和实际应用,你可以探索 Ultralytics YOLO。
- 预训练模型:加载诸如