跳至内容

物体检测数据集概览

训练一个强大而准确的物体检测模型需要一个全面的数据集。本指南介绍了与Ultralytics YOLO 模型兼容的各种格式的数据集,并深入介绍了它们的结构、用法以及如何在不同格式之间进行转换。

支持的数据集格式

Ultralytics YOLO 格式

Ultralytics YOLO 格式是一种数据集配置格式,允许您定义数据集根目录、训练/验证/测试图像目录的相对路径或 *.txt 文件(包含图像路径)和类名字典。下面是一个例子:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

该格式的标签应导出为YOLO 格式,并带有一个 *.txt 文件。如果图像中没有对象,则没有 *.txt 文件是必需的。文件 *.txt 文件格式,每个对象在 class x_center y_center width height 格式。方框坐标必须使用 归一化 xywh 格式(从 0 到 1)。如果您的方框以像素为单位,则应将其除以 x_centerwidth 图像宽度,以及 y_centerheight 由图像高度决定。类号应为零索引(从 0 开始)。

标注图像示例

上述图像对应的标签文件包含 2 个人(类别 0)和平局(班级 27):

标签文件示例

使用Ultralytics YOLO 格式时,请按照下面COCO8 数据集示例中的方法组织训练和验证图像及标签。

数据集目录结构示例

使用方法

下面介绍如何使用这些格式来训练模型:

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640

支持的数据集

下面是支持的数据集列表和每个数据集的简要说明:

  • Argoverse:该数据集包含来自城市环境的三维跟踪和运动预测数据,并附有丰富的注释。
  • COCO:Common Objects in Context (COCO) 是一个大型物体检测、分割和字幕数据集,包含 80 个物体类别。
  • LVIS:大规模物体检测、分割和字幕数据集,包含 1203 个物体类别。
  • COCO8:COCO train 和 COCO val 中前 4 幅图像的较小子集,适合快速测试。
  • 全球小麦 2020:包含 2020 年全球小麦挑战赛小麦头图像的数据集。
  • 对象 365:用于物体检测的高质量大规模数据集,包含 365 个物体类别和 600K 多张注释图像。
  • OpenImagesV7:由Google 提供的综合数据集,包含 170 万张训练图像和 4.2 万张验证图像。
  • SKU-110K:这是一个以零售环境中密集物体检测为特色的数据集,包含超过 11K 幅图像和 170 万个边界框。
  • VisDrone:这是一个数据集,包含来自无人机捕获图像的物体检测和多物体跟踪数据,有超过 10K 幅图像和视频序列。
  • VOC:用于物体检测和分割的 Pascal Visual Object Classes (VOC) 数据集,包含 20 个物体类别和超过 11K 幅图像。
  • xView:用于高空图像中物体检测的数据集,包含 60 个物体类别和 100 多万个注释物体。
  • Roboflow 100:一个多样化的物体检测基准,包含 100 个数据集,横跨 7 个图像领域,用于综合模型评估。
  • 脑肿瘤用于检测脑肿瘤的数据集包括核磁共振成像或 CT 扫描图像,其中包含有关肿瘤存在、位置和特征的详细信息。
  • 非洲野生动物非洲野生动物:非洲野生动物图像数据集,包括水牛、大象、犀牛和斑马。
  • 签名这是一个数据集,收录了带有签名注释的各种文件图像,支持文件验证和欺诈检测研究。

添加自己的数据集

如果您有自己的数据集,并希望将其用于使用Ultralytics YOLO 格式训练检测模型,请确保该数据集遵循上文 "Ultralytics YOLO format "中指定的格式。将注释转换为所需格式,并在 YAML 配置文件中指定路径、类数和类名。

移植或转换标签格式

将 COCO 数据集格式转换为YOLO 格式

使用以下代码片段,您可以轻松地将标签从流行的 COCO 数据集格式转换为YOLO 格式:

示例

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

该转换工具可用于将 COCO 数据集或任何 COCO 格式的数据集转换为Ultralytics YOLO 格式。

切记仔细检查您要使用的数据集是否与您的模型兼容,并遵循必要的格式约定。格式正确的数据集对于训练成功的物体检测模型至关重要。

常见问题

Ultralytics YOLO 数据集格式是什么,如何构建数据集?

Ultralytics YOLO 格式是一种结构化配置,用于在训练项目中定义数据集。它包括设置训练、验证和测试图像的路径以及相应的标签。例如

path: ../datasets/coco8  # dataset root directory
train: images/train  # training images (relative to 'path')
val: images/val  # validation images (relative to 'path')
test:  # optional test images
names:
  0: person
  1: bicycle
  2: car
  # ...

标签保存在 *.txt 文件,每个图像一个文件,格式为 class x_center y_center width height 的坐标。有关详细指南,请参阅 COCO8 数据集示例.

如何将 COCO 数据集转换为YOLO 格式?

您可以使用Ultralytics 转换工具将 COCO 数据集转换为YOLO 格式。下面是一个快速方法:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

该代码将把您的 COCO 注释转换为YOLO 格式,实现与Ultralytics YOLO 模型的无缝集成。有关更多详情,请访问 "移植或转换标签格式"部分。

Ultralytics YOLO 支持哪些数据集进行物体检测?

Ultralytics YOLO 支持多种数据集,包括

每个数据集页面都提供了有关结构和使用的详细信息,这些信息都是为高效的YOLOv8 训练而量身定制的。请在 "支持的数据集"部分查看完整列表。

如何使用我的数据集开始训练YOLOv8 模型?

要开始训练YOLOv8 模型,请确保数据集格式正确,并在 YAML 文件中定义了路径。使用以下脚本开始训练:

示例

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo detect train data=path/to/your_dataset.yaml model=yolov8n.pt epochs=100 imgsz=640

有关使用不同模式(包括CLI 命令)的更多详情,请参阅 "使用"部分。

在哪里可以找到使用Ultralytics YOLO 进行物体检测的实用示例?

Ultralytics 提供了大量在各种应用中使用YOLOv8 的示例和实用指南。要了解全面的概述,请访问Ultralytics 博客,在那里您可以找到使用YOLOv8 进行对象检测、分割等的案例研究、详细教程和社区故事。有关具体示例,请查看文档中的 "使用"部分。



创建于 2023-11-12,更新于 2024-07-04
作者:glenn-jocher(10),RizwanMunawar(2),IvorZhu331(1),Laughing-q(1)

评论