为了使用YOLO进行分类任务,必须按照特定的目录结构组织数据集,以便于进行适当的训练、测试以及可选的验证过程。这种结构包括用于训练(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
| | |-- ...
| |
| |-- ...
这种结构化的方法确保了模型可以在训练阶段有效地从组织良好的类别中学习,并在测试和验证阶段准确评估性能。
使用示例
以下是使用Python和命令行界面(CLI)进行YOLO模型训练的示例。首先,需要加载一个预训练的模型,然后使用指定的数据路径、训练周期和图像尺寸来训练模型。
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n-cls.pt")
# 训练模型
results = model.train(
data="path/to/dataset",
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:包含10个狗品种类别的更具挑战性的ImageNet子集,用于图像分类任务。
- MNIST:包含70,000个灰度图像的10个手写数字类别的数据集。
- MNIST160:MNIST数据集中每个类别的前8个图像。数据集总共包含160个图像。
如何添加自己的数据集
如果有自己的数据集,并希望使用它来训练Ultralytics YOLO分类模型,请确保它遵循上述“数据集格式”中指定的格式,然后将data参数指向数据集目录。
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n-cls.pt")
# 训练模型
results = model.train(
data="path/to/your/dataset",
epochs=100,
imgsz=640
)
这种结构化的方法确保了模型可以在训练阶段有效地从组织良好的类别中学习,并在测试和验证阶段准确评估性能。
常见问题
如何为YOLO分类任务组织数据集结构?
要为UltralyticsYOLO分类任务组织数据集结构,应该遵循特定的分目录格式。将数据集组织成单独的目录,用于训练(train)、测试(test)和可选的验证(val)。每个目录都应包含以每个类别命名的子目录,并将相应的图像放在里面。这有助于顺利进行训练和评估过程。例如,考虑CIFAR-10数据集格式:
cifar-10-/
|-- train/
| |-- airplane/
| |-- automobile/
| |-- bird/
| ...
|-- test/
| |-- airplane/
| |-- automobile/
| |-- bird/
| ...
|-- val/ (optional)
| |-- airplane/
| |-- automobile/
| |-- bird/
| ...
UltralyticsYOLO支持哪些数据集用于图像分类?
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参数指向数据集根目录。
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n-cls.pt")
# 训练模型
results = model.train(
data="path/to/your/dataset",
epochs=100,
imgsz=640
)
为什么要使用Ultralytics YOLO进行图像分类?
UltralyticsYOLO为图像分类提供了多个优势,包括:
- 预训练模型:加载预训练模型,如yolo11n-cls.pt,以快速启动训练过程。
- 易用性:简单的API和CLI命令用于训练和评估。
- 高性能:最先进的准确性和速度,非常适合实时应用。
- 支持多个数据集:与各种流行的数据集(如CIFAR-10、ImageNet等)无缝集成。
- 社区和支持:访问广泛的文档和活跃的社区,以解决故障和改进。
如何使用Ultralytics YOLO训练模型?
使用Ultralytics YOLO训练模型可以轻松地在Python和CLI中完成。以下是示例:
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n-cls.pt")
# 训练模型
results = model.train(
data="path/to/dataset",
epochs=100,
imgsz=640
)