跳至内容

定向边框对象检测

定向物体检测比物体检测更进一步,它引入了一个额外的角度来更准确地定位图像中的物体。

定向物体检测器的输出结果是一组旋转的边界框,这些边界框精确地包围了图像中的物体,同时还包括每个边界框的类标签和置信度分数。当你需要识别场景中感兴趣的物体,但又不需要知道物体的具体位置或确切形状时,物体检测是一个不错的选择。

提示

YOLO11 OBB 模型使用 -obb 后缀,即 yolo11n-obb.pt 并对 DOTAv1.



观看: 使用Ultralytics YOLO 定向边框 (YOLO-OBB) 进行物体检测

视觉样本

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

机型

YOLO11 这里显示的是在DOTAv1数据集上预训练的 OBB 模型。

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

模型 尺寸
(像素)
mAPtest
50
速度
CPU ONNX
(毫秒)
速度
T4TensorRT10
(ms)
params
(M)
FLOPs
(B)
YOLO11n-obb 1024 78.4 117.6 ± 0.8 4.4 ± 0.0 2.7 17.2
YOLO11s-obb 1024 79.5 219.4 ± 4.0 5.1 ± 0.0 9.7 57.5
YOLO11m-obb 1024 80.9 562.8 ± 2.9 10.1 ± 0.4 20.9 183.5
YOLO11l-obb 1024 81.0 712.5 ± 5.0 13.5 ± 0.6 26.2 232.0
YOLO11x-obb 1024 81.3 1408.6 ± 7.7 28.6 ± 1.0 58.8 520.2
  • mAPtest 值为单一模型多尺度上的 DOTAv1 数据集。
    复制方式 yolo val obb data=DOTAv1.yaml device=0 split=test 并将合并结果提交给 DOTA 评估.
  • 速度 对 DOTAv1 val 图像进行平均。 亚马逊 EC2 P4d 实例
    复制方式 yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

火车

在图像大小为 640 的 DOTA8 数据集上对 YOLO11n-obb 进行 100 个历元训练。有关可用参数的完整列表,请参阅配置页面。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-obb.yaml")  # build a new model from YAML
model = YOLO("yolo11n-obb.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo11n-obb.yaml").load("yolo11n.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=yolo11n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo11n-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=yolo11n-obb.yaml pretrained=yolo11n-obb.pt epochs=100 imgsz=640



观看: 如何使用Ultralytics HUB 在 DOTA 数据集上训练Ultralytics YOLO -OBB(定向边框)模型

数据集格式

OBB 数据集格式详见《数据集指南》

瓦尔

验证训练有素的 YOLO11n-obb 模型 精确度 在 DOTA8 数据集上使用。无需参数,因为 model 保留其培训 data 和参数作为模型属性。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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 contains map50-95(B) of each category
yolo obb val model=yolo11n-obb.pt data=dota8.yaml  # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml  # val custom model

预测

使用训练有素的 YOLO11n-obb 模型对图像进行预测。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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
yolo obb predict model=yolo11n-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 | Oriented Bounding Boxes | DOTA 检测和跟踪储罐

查看全文 predict 模式的详细信息,请参见 预测 page.

出口

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

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n-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=yolo11n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

YOLO11-obb 可用的导出格式如下表所示。您可以使用 format 参数,即 format='onnx'format='engine'.您可以直接对导出的模型进行预测或验证,即 yolo predict model=yolo11n-obb.onnx.导出完成后会显示模型的使用示例。

格式 format 论据 模型 元数据 论据
PyTorch - yolo11n-obb.pt -
TorchScript torchscript yolo11n-obb.torchscript imgsz, optimize, batch
ONNX onnx yolo11n-obb.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n-obb_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolo11n-obb.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n-obb.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n-obb_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolo11n-obb.pb imgsz, batch
TF 轻型 tflite yolo11n-obb.tflite imgsz, half, int8, batch
TF 边缘TPU edgetpu yolo11n-obb_edgetpu.tflite imgsz
TF.js tfjs yolo11n-obb_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolo11n-obb_paddle_model/ imgsz, batch
MNN mnn yolo11n-obb.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n-obb_ncnn_model/ imgsz, half, batch
IMX500 imx yolo11n-obb_imx_model/ imgsz, int8

查看全文 export 中的详细信息 出口 page.

常见问题

什么是定向包围盒 (OBB),它们与普通包围盒有何不同?

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

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

要使用自定义数据集训练 YOLO11n-obb 模型,请按照下面的示例使用Python 或CLI :

示例

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo11n-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=yolo11n-obb.pt epochs=100 imgsz=640

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

我可以使用哪些数据集来训练YOLO11-OBB 模型?

YOLO11-OBB 模型是在DOTAv1等数据集上预训练的,但您可以使用任何格式化为 OBB 的数据集。有关 OBB 数据集格式的详细信息,请参阅《数据集指南》

如何将YOLO11-OBB 模型导出为ONNX 格式?

使用Python 或CLI 可以直接将YOLO11-OBB 模型导出为ONNX 格式:

示例

from ultralytics import YOLO

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

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

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

如何验证 YOLO11n-obb 模型的准确性?

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

示例

from ultralytics import YOLO

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

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

请参阅Val部分的全部验证详情。

📅创建于 10 个月前 ✏️已更新 27 天前

评论