定向边框对象检测
定向物体检测比标准物体检测更进一步,它引入了一个额外的角度来更准确地定位图像中的物体。
定向物体检测器的输出是一组精确包围图像中物体的旋转边界框,以及每个边界框的类别标签和置信度分数。当物体以不同角度出现时,定向边界框尤其有用,例如在航空图像中,传统的轴对齐边界框可能会包含不必要的背景。
提示
YOLO11 OBB 模型使用 -obb
后缀,即 yolo11n-obb.pt
并对 DOTAv1.
观看: 使用Ultralytics YOLO 定向边框 (YOLO-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 数据集格式详见数据集指南。YOLO OBB 格式通过四个角点指定边界框,其坐标在 0 和 1 之间归一化,并遵循以下结构:
YOLO 在内部处理损失和产出。 xywhr
格式,表示 边界框的中心点(xy)、宽度、高度和旋转角度。
瓦尔
验证训练有素的 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
预测
使用训练有素的 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
# Access the results
for result in results:
xywhr = result.keypoints.xy # 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
观看: 如何使用Ultralytics YOLO -OBB | Oriented Bounding Boxes | DOTA 检测和跟踪储罐
查看全文 predict
模式的详细信息,请参见 预测 page.
出口
将 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 , nms , batch |
ONNX | onnx |
yolo11n-obb.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch |
OpenVINO | openvino |
yolo11n-obb_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data |
TensorRT | engine |
yolo11n-obb.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data |
CoreML | coreml |
yolo11n-obb.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n-obb_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch |
TF GraphDef | pb |
yolo11n-obb.pb |
❌ | imgsz , batch |
TF 轻型 | tflite |
yolo11n-obb.tflite |
✅ | imgsz , half , int8 , nms , batch , data |
TF 边缘TPU | edgetpu |
yolo11n-obb_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolo11n-obb_web_model/ |
✅ | imgsz , half , int8 , nms , 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 , data |
RKNN | rknn |
yolo11n-obb_rknn_model/ |
✅ | imgsz , batch , name |
查看全文 export
中的详细信息 出口 page.
实际应用
使用YOLO11 进行 OBB 检测在各行各业都有大量实际应用:
- 海事和港口管理:从不同角度探测船舶和船只,用于船队管理和监控。
- 城市规划:通过航拍图像分析建筑物和基础设施。
- 农业:利用无人机拍摄的画面监控农作物和农业设备。
- 能源部门:检查不同方向的太阳能电池板和风力涡轮机。
- 交通:从不同角度跟踪道路和停车场上的车辆。
OBB 能够精确贴合任何角度的物体,提供比传统边界框更精确的检测,使这些应用受益匪浅。
常见问题
什么是定向包围盒 (OBB),它们与普通包围盒有何不同?
定向边框(OBB)包含一个额外的角度,可提高图像中物体定位的准确性。与轴对齐矩形的常规边界框不同,OBB 可以旋转,以更好地适应对象的方向。这对于航空或卫星图像等需要精确定位对象的应用尤其有用(数据集指南)。
如何使用自定义数据集训练 YOLO11n-obb 模型?
要使用自定义数据集训练 YOLO11n-obb 模型,请按照下面的示例使用Python 或CLI :
示例
有关更多培训参数,请查看配置部分。
我可以使用哪些数据集来训练YOLO11-OBB 模型?
YOLO11-OBB 模型是在DOTAv1等数据集上预训练的,但您可以使用任何格式化为 OBB 的数据集。有关 OBB 数据集格式的详细信息,请参阅《数据集指南》。
如何将YOLO11-OBB 模型导出为ONNX 格式?
使用Python 或CLI 可以直接将YOLO11-OBB 模型导出为ONNX 格式:
示例
有关更多导出格式和详情,请参阅导出页面。
如何验证 YOLO11n-obb 模型的准确性?
要验证 YOLO11n-obb 模型,可以使用Python 或CLI 命令,如下所示:
示例
请参阅Val部分的全部验证详情。