图像分类数据集概述
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("yolo11n-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 classify train data=path/to/data model=yolo11n-cls.pt epochs=100 imgsz=640
支持的数据集
Ultralytics 支持以下数据集的自动下载:
- Caltech 101:一个包含 101 个对象类别的图像的数据集,用于图像分类任务。
- Caltech 256:Caltech 101 的扩展版本,包含 256 个对象类别和更具挑战性的图像。
- CIFAR-10:一个包含 60K 张 32x32 彩色图像的数据集,分为 10 个类别,每个类别包含 6K 张图像。
- 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
参数传递给训练脚本初始化时的数据集目录。
常见问题
如何为 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("yolo11n-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 为图像分类提供了多种优势,包括:
- 预训练模型:加载预训练模型,例如
yolo11n-cls.pt
以快速启动您的训练过程。 - 易用性:简单的API和CLI命令,用于训练和评估。
- 高性能:最先进的准确性和速度,是实时应用的理想选择。
- 支持多个数据集:与各种流行数据集(如 CIFAR-10、ImageNet 等)无缝集成。
- 社区与支持: 可访问丰富的文档和一个活跃的社区,用于问题排查和改进。
如需更多见解和实际应用,您可以浏览Ultralytics YOLO。
如何使用 Ultralytics YOLO 训练模型?
使用 Ultralytics YOLO 训练模型可以通过 python 和 CLI 轻松完成。这是一个例子:
示例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-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 classify train data=path/to/data model=yolo11n-cls.pt epochs=100 imgsz=640
这些示例演示了使用任一方法训练 YOLO 模型的简单过程。 有关更多信息,请访问使用部分和训练页面以了解分类任务。