定向边界框 目标检测
定向目标检测比目标检测更进一步,引入额外的角度以在图像中更准确地定位物体。
定向目标检测器的输出是一组旋转的边界框,这些边界框精确地包围图像中的物体,并附带每个框的类别标签和置信度分数。当你需要识别场景中的感兴趣物体,但不需要确切知道物体的位置或其精确形状时,目标检测是一个不错的选择。
Tip
YOLO11 OBB模型使用-obb
后缀,例如yolo11n-obb.pt
,并在DOTAv1数据集上进行了预训练。
观看: 使用Ultralytics YOLO定向边界框(YOLO-OBB)进行目标检测
视觉样本
使用OBB进行船舶检测 | 使用OBB进行车辆检测 |
---|---|
模型
这里展示了YOLO11预训练的OBB模型,这些模型在DOTAv1数据集上进行了预训练。
模型在首次使用时会自动从Ultralytics的最新发布中下载。
模型 | 尺寸 (像素) |
mAP测试 50 |
速度 CPU ONNX (毫秒) |
速度 T4 TensorRT10 (毫秒) |
参数 (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评估。 - 速度 在Amazon EC2 P4d实例上对DOTAv1验证图像进行平均。
通过yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu
重现。
训练
在图像大小为640的情况下,对DOTA8数据集上的YOLO11n-obb进行100个epoch的训练。有关可用参数的完整列表,请参阅配置页面。
Example
# 从YAML构建新模型并从头开始训练
yolo obb train data=dota8.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640
# 从预训练的*.pt模型开始训练
yolo obb train data=dota8.yaml model=yolo11n-obb.pt epochs=100 imgsz=640
# 从YAML构建新模型,转移预训练权重并开始训练
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数据集格式详细信息可在数据集指南中找到。
验证
在DOTA8数据集上验证训练好的YOLO11n-obb模型的准确性。不需要参数,因为model
保留了训练时的data
和参数作为模型属性。
示例
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n-obb.pt") # 加载官方模型
model = YOLO("path/to/best.pt") # 加载自定义模型
# 验证模型
metrics = model.val(data="dota8.yaml") # 不需要参数,数据集和设置已记住
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # 包含每个类别的map50-95(B)的列表
预测
使用训练好的YOLO11n-obb模型对图像进行预测。
示例
观看:如何使用Ultralytics YOLO-OBB检测和跟踪储罐 | 定向边界框 | DOTA
在预测页面查看完整的predict
模式详情。
导出
将YOLO11n-obb模型导出为不同的格式,如ONNX、CoreML等。
示例
下表列出了可用的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 Lite | tflite |
yolo11n-obb.tflite |
✅ | imgsz , half , int8 , batch |
TF Edge 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 |
NCNN | ncnn |
yolo11n-obb_ncnn_model/ |
✅ | imgsz , half , batch |
在导出页面查看完整的export
详情。
常见问题
什么是定向边界框(OBB),它们与常规边界框有何不同?
定向边界框(OBB)包括一个额外的角度,以提高图像中对象定位的准确性。与轴对齐的常规边界框不同,OBB可以旋转以更好地适应对象的方向。这对于需要精确对象放置的应用特别有用,例如航空或卫星图像(数据集指南)。
如何使用自定义数据集训练YOLO11n-obb模型?
要使用自定义数据集训练YOLO11n-obb模型,请按照以下示例使用Python或CLI:
示例
有关更多训练参数,请查看配置部分。
我可以使用哪些数据集来训练YOLO11-OBB模型?
YOLO11-OBB模型在DOTAv1等数据集上进行了预训练,但您可以使用任何为OBB格式化的数据集。有关OBB数据集格式的详细信息,请参阅数据集指南。
如何将YOLO11-OBB模型导出为ONNX格式?
使用Python或CLI将YOLO11-OBB模型导出为ONNX格式非常简单:
Example
更多导出格式和详细信息,请参阅导出页面。
如何验证YOLO11n-obb模型的准确性?
要验证YOLO11n-obb模型,您可以使用以下Python或CLI命令:
Example
有关完整的验证细节,请参阅验证部分。