定向边框对象检测
定向物体检测比物体检测更进一步,它引入了一个额外的角度来更准确地定位图像中的物体。
定向物体检测器的输出结果是一组旋转的边界框,这些边界框精确地包围了图像中的物体,同时还包含每个边界框的类标签和置信度分数。当你需要识别场景中感兴趣的物体,但又不需要知道物体的具体位置或确切形状时,物体检测是一个不错的选择。
提示
YOLOv8 OBB 模型使用 -obb
后缀,即 yolov8n-obb.pt
并对 DOTAv1.
观看: 使用Ultralytics YOLOv8 定向边框 (YOLOv8-OBB) 进行物体检测 |
观看: 通过YOLOv8-OBB 使用Ultralytics HUB 进行物体检测 |
视觉样本
使用 OBB 进行船舶探测 | 使用 OBB 进行车辆检测 |
---|---|
机型
YOLOv8 这里显示的是在DOTAv1数据集上预训练的 OBB 模型。
首次使用时,模型会自动从最新的Ultralytics 版本下载。
模型 | 尺寸 (像素) |
mAPtest 50 |
速度 CPU ONNX (毫秒) |
速度 A100 TensorRT (毫秒) |
params (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n-obb | 1024 | 78.0 | 204.77 | 3.57 | 3.1 | 23.3 |
YOLOv8s-obb | 1024 | 79.5 | 424.88 | 4.07 | 11.4 | 76.3 |
YOLOv8m-obb | 1024 | 80.5 | 763.48 | 7.61 | 26.4 | 208.6 |
YOLOv8l-obb | 1024 | 80.7 | 1278.42 | 11.83 | 44.5 | 433.8 |
YOLOv8x-obb | 1024 | 81.36 | 1759.10 | 13.23 | 69.5 | 676.7 |
- 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
火车
列车YOLOv8n-obb on the dota8.yaml
数据集,在图像大小为 640 的条件下进行 100 个历时。有关可用参数的完整列表,请参阅 配置 page.
示例
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n-obb.yaml") # build a new model from YAML
model = YOLO("yolov8n-obb.pt") # load a pretrained model (recommended for training)
model = YOLO("yolov8n-obb.yaml").load("yolov8n.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=yolov8n-obb.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolov8n-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=yolov8n-obb.yaml pretrained=yolov8n-obb.pt epochs=100 imgsz=640
数据集格式
OBB 数据集格式详见《数据集指南》。
瓦尔
在 DOTA8 数据集上验证训练有素的YOLOv8n-obb 模型的准确性。无需传递参数,因为 model
保留其培训 data
和参数作为模型属性。
示例
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n-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
预测
使用训练有素的YOLOv8n-obb 模型对图像进行预测。
示例
查看全文 predict
模式的详细信息,请参见 预测 page.
出口
将YOLOv8n-obb 模型导出为不同格式,如ONNX,CoreML 等。
示例
YOLOv8-obb 可用的导出格式如下表所示。您可以使用 format
参数,即 format='onnx'
或 format='engine'
.您可以直接对导出的模型进行预测或验证,即 yolo predict model=yolov8n-obb.onnx
.导出完成后会显示模型的使用示例。
格式 | format 论据 |
模型 | 元数据 | 论据 |
---|---|---|---|---|
PyTorch | - | yolov8n-obb.pt |
✅ | - |
TorchScript | torchscript |
yolov8n-obb.torchscript |
✅ | imgsz , optimize , batch |
ONNX | onnx |
yolov8n-obb.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolov8n-obb_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolov8n-obb.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , batch |
CoreML | coreml |
yolov8n-obb.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolov8n-obb_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolov8n-obb.pb |
❌ | imgsz , batch |
TF 轻型 | tflite |
yolov8n-obb.tflite |
✅ | imgsz , half , int8 , batch |
TF 边缘TPU | edgetpu |
yolov8n-obb_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolov8n-obb_web_model/ |
✅ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolov8n-obb_paddle_model/ |
✅ | imgsz , batch |
NCNN | ncnn |
yolov8n-obb_ncnn_model/ |
✅ | imgsz , half , batch |
查看全文 export
中的详细信息 出口 page.
常见问题
什么是定向包围盒 (OBB),它们与普通包围盒有何不同?
定向边框(OBB)包含一个额外的角度,可提高图像中物体定位的准确性。与轴对齐矩形的常规边界框不同,OBB 可以旋转,以更好地适应对象的方向。这对于航空或卫星图像等需要精确定位对象的应用尤其有用(数据集指南)。
如何使用自定义数据集训练YOLOv8n-obb 模型?
要使用自定义数据集训练YOLOv8n-obb 模型,请按照下面的示例使用Python 或CLI :
示例
有关更多培训参数,请查看配置部分。
我可以使用哪些数据集来训练YOLOv8-OBB 模型?
YOLOv8-OBB 模型是在DOTAv1等数据集上预训练的,但您可以使用任何格式化为 OBB 的数据集。有关 OBB 数据集格式的详细信息,请参阅《数据集指南》。
如何将YOLOv8-OBB 模型导出为ONNX 格式?
使用Python 或CLI 可以直接将YOLOv8-OBB 模型导出为ONNX 格式:
示例
有关更多导出格式和详情,请参阅导出页面。
如何验证YOLOv8n-obb 模型的准确性?
要验证YOLOv8n-obb 模型,可以使用Python 或CLI 命令,如下所示:
示例
请参阅Val部分的全部验证详情。