图像分类数据集概述
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("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 个类别、每类 6K 张图像,共 6 万张 32x32 彩色图像的数据集。
- 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 数据集的每个 MNIST 类别的首 8 张图像。数据集总共包含 160 张图像。
添加你自己的数据集
如果你有自己的数据集并希望将其用于 Ultralytics YOLO 分类模型训练,请确保它遵循上述“数据集结构”中指定的格式,然后在初始化训练脚本时将 data 参数指向该数据集目录。
常见问题 (FAQ)
我该如何为 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 支持自动下载多个用于图像分类的数据集,包括 Caltech 101、Caltech 256、CIFAR-10、CIFAR-100、Fashion-MNIST、ImageNet、ImageNet-10、Imagenette、Imagewoof 和 MNIST。这些数据集的结构使其易于与 YOLO 结合使用。每个数据集的页面都提供了关于其结构和应用的进一步详细信息。
我该如何添加自己的数据集以进行 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 进行图像分类?
Ultralytics YOLO 为图像分类提供了多项优势,包括:
- 预训练模型:加载预训练模型(如
yolo26n-cls.pt)以快速启动你的训练过程。 - 易用性:用于训练和评估的简单 API 和 CLI 命令。
- 高性能:最先进的准确率和速度,非常适合实时应用程序。
- 支持多种数据集:与各种流行数据集(如 CIFAR-10、ImageNet 等)无缝集成。
- 社区与支持:获取广泛的文档以及一个活跃的社区,以进行故障排除和改进。
欲了解更多见解和实际应用,你可以探索 Ultralytics YOLO。
我该如何使用 Ultralytics YOLO 训练模型?
使用 Ultralytics YOLO 训练模型在 Python 和 CLI 中都可以轻松完成。这是一个示例:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-cls.pt") # load a pretrained model
# Train the model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)