Skip to content

定向边界框(OBB)数据集概述

使用定向边界框(OBB)训练精确的目标检测模型需要一个详尽的数据集。本指南解释了与Ultralytics YOLO模型兼容的各种OBB数据集格式,提供了对其结构、应用及格式转换方法的深入见解。

支持的OBB数据集格式

YOLO OBB格式

YOLO OBB格式通过其四个角点的坐标(归一化在0到1之间)来指定边界框。其格式如下:

class_index x1 y1 x2 y2 x3 y3 x4 y4

在内部,YOLO以xywhr格式处理损失和输出,该格式表示边界框的中心点(xy)、宽度、高度和旋转角度。

OBB格式示例

对于上述图像的*.txt标签文件示例,其中包含一个类别为0的OBB格式对象,可能如下所示:

0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758

使用方法

要使用这些OBB格式训练模型:

Example

from ultralytics import YOLO

# 从零开始创建一个新的YOLO11n-OBB模型
model = YOLO("yolo11n-obb.yaml")

# 在DOTAv1数据集上训练模型
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# 在DOTAv1数据集上训练一个新的YOLO11n-OBB模型
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024

支持的数据集

目前,支持以下带有定向边界框的数据集:

  • DOTA-v1:DOTA数据集的第一个版本,提供了一套带有定向边界框的航空图像,用于目标检测。
  • DOTA-v1.5:DOTA数据集的中间版本,提供了额外的注释和改进,以增强目标检测任务。
  • DOTA-v2:DOTA(用于航空图像目标检测的大型数据集)的第二个版本,强调从航空视角进行检测,包含170万个实例和11,268张图像的定向边界框。
  • DOTA8:完整DOTA数据集的一个小型8图像子集,适用于测试工作流程和ultralytics仓库中OBB训练的持续集成(CI)检查。

引入您自己的OBB数据集

对于希望引入自己带有定向边界框的数据集的用户,请确保与上述“YOLO OBB格式”兼容。将您的注释转换为所需的格式,并在相应的YAML配置文件中详细说明路径、类别和类别名称。

转换标签格式

DOTA数据集格式到YOLO OBB格式

可以使用以下脚本将DOTA数据集格式的标签转换为YOLO OBB格式:

Example

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

此转换机制对于DOTA格式的数据集至关重要,确保与Ultralytics YOLO OBB格式对齐。

验证数据集与模型的兼容性并遵守必要的格式约定至关重要。结构良好的数据集对于使用定向边界框训练高效的目标检测模型至关重要。

常见问题

什么是定向边界框(OBB),它们在Ultralytics YOLO模型中如何使用?

定向边界框(OBB)是一种边界框注释,其中框可以旋转以更紧密地与被检测的对象对齐,而不仅仅是轴对齐。这在航空或卫星图像中特别有用,因为对象可能不会与图像轴对齐。在Ultralytics YOLO模型中,OBB由YOLO OBB格式中的四个角点表示。这允许更准确的目标检测,因为边界框可以旋转以更好地适应对象。

如何将现有的DOTA数据集标签转换为YOLO OBB格式以用于Ultralytics YOLO11?

你可以使用 Ultralytics 提供的 convert_dota_to_yolo_obb 函数将 DOTA 数据集标签转换为 YOLO OBB 格式。这种转换确保了与 Ultralytics YOLO 模型的兼容性,使你能够利用 OBB 功能来增强目标检测。以下是一个快速示例:

from ultralytics.data.converter import convert_dota_to_yolo_obb

convert_dota_to_yolo_obb("path/to/DOTA")

此脚本会将你的 DOTA 注释重新格式化为 YOLO 兼容的格式。

如何在我的数据集上使用定向边界框(OBB)训练 YOLO11 模型?

使用 OBB 训练 YOLO11 模型需要确保你的数据集采用 YOLO OBB 格式,然后使用 Ultralytics API 来训练模型。以下是 Python 和 CLI 的示例:

Example

from ultralytics import YOLO

# 从零开始创建一个新的 YOLO11n-OBB 模型
model = YOLO("yolo11n-obb.yaml")

# 在自定义数据集上训练模型
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)
# 在自定义数据集上训练一个新的 YOLO11n-OBB 模型
yolo obb train data=your_dataset.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640

这确保了你的模型利用详细的 OBB 注释来提高检测准确性

Ultralytics YOLO 模型目前支持哪些数据集进行 OBB 训练?

目前,Ultralytics 支持以下数据集进行 OBB 训练:

  • DOTA-v1:DOTA 数据集的第一个版本,提供了一套全面的带有定向边界框的航空图像用于目标检测。
  • DOTA-v1.5:DOTA 数据集的中间版本,提供了比 DOTA-v1 更多的注释和改进,以增强目标检测任务。
  • DOTA-v2:该数据集包括 170 万个带有定向边界框的实例和 11,268 张图像,主要集中在航空目标检测上。
  • DOTA8:DOTA 数据集的一个较小的 8 张图像子集,用于测试和持续集成(CI)检查。

这些数据集适用于 OBB 提供显著优势的场景,如航空和卫星图像分析。

我可以使用自己的带有定向边界框的数据集进行 YOLO11 训练吗?如果可以,如何操作?

是的,你可以使用自己的带有定向边界框的数据集进行 YOLO11 训练。确保你的数据集注释已转换为 YOLO OBB 格式,这涉及通过四个角点定义边界框。然后,你可以创建一个 YAML 配置文件,指定数据集路径、类别和其他必要细节。有关创建和配置数据集的更多信息,请参阅支持的数据集部分。


📅 Created 11 months ago ✏️ Updated 13 days ago

Comments