旋转框检测 (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)、宽度、高度和旋转。
一个例子 *.txt
上述图像的标签文件,其中包含一个类别的对象 0
OBB 格式可能如下所示:
0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758
数据集 YAML 格式
Ultralytics 框架使用 YAML 文件格式来定义训练 OBB 模型的数据集和模型配置。以下是用于定义 OBB 数据集的 YAML 格式示例:
ultralytics/cfg/datasets/dota8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# DOTA8 dataset 8 images from split DOTAv1 dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── dota8 ← downloads here (1MB)
# 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: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
# Classes for DOTA 1.0
names:
0: plane
1: ship
2: storage tank
3: baseball diamond
4: tennis court
5: basketball court
6: ground track field
7: harbor
8: bridge
9: large vehicle
10: small vehicle
11: helicopter
12: roundabout
13: soccer ball field
14: swimming pool
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zip
用法
要使用这些 OBB 格式训练模型:
示例
from ultralytics import YOLO
# Create a new YOLO11n-OBB model from scratch
model = YOLO("yolo11n-obb.yaml")
# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024
支持的数据集
目前,支持以下带有定向边界框的数据集:
- DOTA-v1:DOTA 数据集的第一个版本,提供了一套全面的航空图像,其中包含用于目标检测的定向边界框。
- DOTA-v1.5:DOTA 数据集的一个中间版本,与 DOTA-v1 相比,提供了额外的注释和改进,以增强目标检测任务。
- DOTA-v2:DOTA(用于航空图像中目标检测的大规模数据集)版本 2,强调从航空角度进行检测,包含带有 170 万个实例和 11,268 张图像的定向边界框。
- DOTA8:完整 DOTA 数据集的一个小型 8 图像子集,适用于在 中测试 OBB 训练的工作流程和持续集成 (CI) 检查。
ultralytics
仓库。
合并您自己的 OBB 数据集
对于那些希望引入自己的带有方向边界框的数据集的人,请确保与上述“YOLO OBB 格式”兼容。将您的标注转换为此所需格式,并在相应的 YAML 配置文件中详细说明路径、类别和类别名称。
转换标签格式
DOTA 数据集格式到 YOLO OBB 格式
可以使用以下脚本将标签从 DOTA 数据集格式转换为 YOLO OBB 格式:
示例
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 中的示例:
示例
from ultralytics import YOLO
# Create a new YOLO11n-OBB model from scratch
model = YOLO("yolo11n-obb.yaml")
# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)
# Train a new YOLO11n-OBB model on the custom dataset
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 配置文件,指定数据集路径、类别和其他必要的详细信息。有关创建和配置数据集的更多信息,请参阅支持的数据集部分。