定向边框对象检测
定向物体检测比物体检测更进一步,它引入了一个额外的角度来更准确地定位图像中的物体。
定向物体检测器的输出结果是一组旋转的边界框,这些边界框精确地包围了图像中的物体,同时还包含每个边界框的类标签和置信度分数。当你需要识别场景中感兴趣的物体,但又不需要知道物体的具体位置或确切形状时,物体检测是一个不错的选择。
提示
YOLOv8 OBB 模型使用 -obb
后缀,即 yolov8n-obb.pt
并对 DOTAv1.
观看: 使用Ultralytics YOLOv8 定向边框 (YOLOv8-OBB) 进行物体检测 |
观看: 通过YOLOv8-OBB 使用Ultralytics HUB 进行物体检测 |
视觉样本
使用 OBB 进行船舶探测 | 使用 OBB 进行车辆检测 |
---|---|
机型
YOLOv8 这里显示的是在DOTAv1数据集上预训练的 OBB 模型。
首次使用时,模型会自动从最新的Ultralytics 版本下载。
模型 | 尺寸 (像素) |
mAPtest 50 |
速度 CPUONNX (ms) |
速度 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 , batch |
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.