跳转至内容

定向边界框 目标检测

定向对象检测通过引入一个额外的角度来更准确地定位图像中的对象,从而比标准对象检测更进一步。

定向目标检测器的输出是一组旋转的边界框,这些边界框精确地包围了图像中的目标,以及每个框的类别标签和置信度分数。当目标以各种角度出现时,定向边界框特别有用,例如在航空图像中,传统的轴对齐边界框可能包含不必要的背景。

提示

YOLO26 旋转框检测 模型使用 -obb 后缀,即 yolo26n-obb.pt,并在...上进行预训练 DOTAv1.



观看: 使用 Ultralytics YOLO 定向边界框 (YOLO-OBB) 进行对象检测

可视化示例

使用 OBB 进行船舶检测使用 OBB 进行车辆检测
使用 OBB 进行船舶检测使用 OBB 进行车辆检测

模型

YOLO26 预训练旋转框检测 模型在此展示,这些模型在 DOTAv1 数据集上进行了预训练。

模型 首次使用时会自动从最新的 Ultralytics 版本 下载。

模型尺寸
(像素)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(M)
FLOPs
(B)
YOLO26n-obb102452.478.997.7 ± 0.92.8 ± 0.02.514.0
YOLO26s-obb102454.880.9218.0 ± 1.44.9 ± 0.19.855.1
YOLO26m-obb102455.381.0579.2 ± 3.810.2 ± 0.321.2183.3
YOLO26l-obb102456.281.6735.6 ± 3.113.0 ± 0.225.6230.0
YOLO26x-obb102456.781.71485.7 ± 11.530.5 ± 0.957.6516.5
  • mAPtest 数值为在 DOTAv1 数据集上单模型多尺度测试的结果。
    如需重现结果,请通过 yolo val obb data=DOTAv1.yaml device=0 split=test 提交合并后的结果至 DOTA评估.
  • 速度 是在 DOTAv1 验证集图像上,使用 Amazon EC2 P4d 实例进行平均计算得出的。
    如需重现结果,请通过 yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

训练

在 DOTA8 数据集上训练 YOLO26n-obb 模型 100 个 周期,图像尺寸为 640。有关可用参数的完整列表,请参阅配置页面。

注意

OBB 角度被限制在 0–90 度 范围内(不包括 90 度)。不支持 90 度或更大的角度。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.yaml")  # build a new model from YAML
model = YOLO("yolo26n-obb.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-obb.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="dota8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo obb train data=dota8.yaml model=yolo26n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo26n-obb.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo obb train data=dota8.yaml model=yolo26n-obb.yaml pretrained=yolo26n-obb.pt epochs=100 imgsz=640



观看: 如何使用 Ultralytics 平台在 DOTA 数据集上训练 Ultralytics YOLO-旋转框检测(旋转框检测)模型

数据集格式

有关 OBB 数据集格式的详细信息,请参见 数据集指南。YOLO OBB 格式通过四个角点及其坐标(在 0 和 1 之间归一化)来指定边界框,遵循以下结构:

class_index x1 y1 x2 y2 x3 y3 x4 y4

在内部,YOLO 处理损失和输出时采用 xywhr 格式,它代表 边界框的坐标的中心点 (xy)、宽度、高度和旋转。

验证

验证已训练的 YOLO26n-obb 模型 准确性 在 DOTA8 数据集上。由于模型 model 保留其训练 data 和参数作为模型属性,因此无需任何参数。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="dota8.yaml")  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list containing mAP50-95(B) for each category
yolo obb val model=yolo26n-obb.pt data=dota8.yaml         # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml # val custom model

预测

使用已训练的 YOLO26n-obb 模型对图像运行预测。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/boats.jpg")  # predict on an image

# Access the results
for result in results:
    xywhr = result.obb.xywhr  # center-x, center-y, width, height, angle (radians)
    xyxyxyxy = result.obb.xyxyxyxy  # polygon format with 4-points
    names = [result.names[cls.item()] for cls in result.obb.cls.int()]  # class name of each box
    confs = result.obb.conf  # confidence score of each box
yolo obb predict model=yolo26n-obb.pt source='https://ultralytics.com/images/boats.jpg'  # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/boats.jpg' # predict with custom model



观看: 如何使用 Ultralytics YOLO-OBB | 定向边界框 | DOTA 检测和跟踪储罐

查看完整 predict 模式的详细信息,请参阅 预测 页面。

导出

将 YOLO26n-obb 模型导出为不同格式,例如 ONNX、CoreML 等。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo26n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model

可用的 YOLO26-obb 导出格式如下表所示。您可以使用...导出为任何格式 format 参数,即 format='onnx'format='engine'。您可以直接在导出模型上进行预测或验证,即 yolo predict model=yolo26n-obb.onnx。导出完成后,将显示您的模型的使用示例。

格式format 参数模型元数据参数
PyTorch-yolo26n-obb.pt-
TorchScripttorchscriptyolo26n-obb.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo26n-obb.pbimgsz, batch, device
TF Litetfliteyolo26n-obb.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, device
TF.jstfjsyolo26n-obb_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, int8, data, fraction, device

查看完整 export 详情请参见 导出 页面。

真实世界的应用

使用 YOLO26 进行旋转框检测在各个行业中具有众多实际应用:

  • 海事和港口管理: 检测各种角度的船舶和船只,用于船队管理和监控。
  • 城市规划:分析航拍图像中的建筑物和基础设施。
  • 农业:从无人机拍摄的视频中监测农作物和农业设备。
  • 能源领域: 在不同方向检查太阳能电池板和风力涡轮机。
  • 交通运输: 从不同角度跟踪道路和停车场上的车辆。

这些应用受益于旋转框检测能够精确拟合任何角度的物体,从而提供比传统边界框更准确的检测。

常见问题

什么是定向边界框 (OBB),它们与常规边界框有何不同?

旋转边界框(OBB)包含一个额外的角度,以提高图像中物体定位的准确性。与轴对齐的矩形边界框不同,OBB可以旋转以更好地适应物体的方向。这对于需要精确定位物体的应用尤其有用,例如航空或卫星图像(数据集指南)。

如何使用自定义数据集训练 YOLO26n-obb 模型?

要使用自定义数据集训练 YOLO26n-obb 模型,请遵循以下使用 Python 或 CLI 的示例:

示例

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-obb.pt")

# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)
yolo obb train data=path/to/custom_dataset.yaml model=yolo26n-obb.pt epochs=100 imgsz=640

有关更多训练参数,请查看配置部分。

我可以使用哪些数据集来训练 YOLO26-旋转框检测 模型?

YOLO26-旋转框检测 模型在诸如 DOTAv1 的数据集上进行了预训练,但您可以使用任何为旋转框检测 格式化的数据集。有关旋转框检测 数据集格式的详细信息,可在数据集指南中找到。

如何将 YOLO26-旋转框检测 模型导出为 ONNX 格式?

使用 Python 或 CLI 将 YOLO26-旋转框检测 模型导出为 ONNX 格式非常简单:

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.pt")

# Export the model
model.export(format="onnx")
yolo export model=yolo26n-obb.pt format=onnx

有关更多导出格式和详细信息,请参阅导出页面。

如何验证 YOLO26n-obb 模型的精度?

要验证 YOLO26n-obb 模型,您可以使用 Python 或 CLI 命令,如下所示:

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.pt")

# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolo26n-obb.pt data=dota8.yaml

有关完整的验证详细信息,请参阅Val部分。



📅 创建于 2 年前 ✏️ 更新于 2 天前
glenn-jocherBurhan-QY-T-GRizwanMunawarambitious-octopusLaughing-qUltralyticsAssistantpderrengerjk4eMatthewNoyceAyushExel

评论