图像分类数据集概览#
YOLO 分类任务的数据集结构#
对于 Ultralytics YOLO 分类任务,数据集必须组织在 root 目录下特定的拆分目录结构中。此结构包含 train 目录和 val 目录(也接受 valid 和 validation),以及一个可选的 test 目录。如果不存在验证目录,则改用 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/ (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
# 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 支持以下具有自动下载功能的数据集。大多数这些数据集也托管在 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:用于目标检测和图像分类的大规模数据集,包含超过 1,400 万张图像和 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和val的单独目录中,并可选择性地组织用于test的目录。这些目录中的每一个都应包含以每个类别命名的子目录,其中包含相应的图像。这有助于顺利进行训练和评估过程。例如,考虑 CIFAR-10 数据集格式:cifar-10-/ |-- 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 # 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。
- 预训练模型:加载
你可以轻松使用 Python 和 CLI 训练 Ultralytics YOLO 模型。以下是一个示例:
示例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)这些示例展示了使用任一方式训练 YOLO 模型的简单流程。如需了解更多信息,请参阅用法部分,以及面向分类任务的训练页面。