定向物体检测#
面向对象的目标检测在普通目标检测的基础上更进一步,通过引入额外的角度来更精确地定位图像中的对象。YOLOv11 能够以高准确度和速度检测图像或视频帧中的旋转对象。
定向物体检测(Oriented Object Detection,简称 OBD):检测带有附加方向角的旋转物体,以提高准确性。
定向对象检测器的输出是一组旋转的边界框,这些边界框精确地包围了图像中的对象,并为每个框提供了类别标签和置信度分数。当你需要在场景中识别感兴趣的对象,但不需要知道对象的确切位置或其确切形状时,目标检测是一个不错的选择。
备注
定向边界框(OBB)引入了附加的角度参数,以提高图像中物体定位的精度。与常规的轴对齐矩形边界框不同,OBB 能够旋转以更好地适应物体的方向。
小技巧
YOLOv11 OBB模型使用-obb
后缀,例如yolo11n-obb.pt
,这些模型已在 DOTAv1 数据集上进行了预训练。
可视化的示例#
使用 OBB 进行船只检测 |
使用 OBB 进行车辆检测 |
---|---|
模型#
这里展示了预训练的YOLOv11 OBB模型,这些模型是在DOTAv1数据集上进行预训练的。
模型会在首次使用时自动从最新的Ultralytics 版本发布下载。
模型名称 |
尺寸 (像素) |
mAPtest |
CPU ONNX速度 (毫秒) |
T4 TensorRT10速度 (毫秒) |
参数量 (百万) |
计算量 (十亿次) |
---|---|---|---|---|---|---|
1024 |
78.4 |
117.6 ± 0.8 |
4.4 ± 0.0 |
2.7 |
17.2 |
|
1024 |
79.5 |
219.4 ± 4.0 |
5.1 ± 0.0 |
9.7 |
57.5 |
|
1024 |
80.9 |
562.8 ± 2.9 |
10.1 ± 0.4 |
20.9 |
183.5 |
|
1024 |
81.0 |
712.5 ± 5.0 |
13.5 ± 0.6 |
26.2 |
232.0 |
|
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
命令重现。
训练#
在DOTA8数据集上训练YOLOv11n-obb模型,进行100个epoch的训练,图像尺寸设定为640
像素。
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)
验证#
验证在DOTA8数据集上训练的YOLOv11n-obb模型的准确性。由于model
保留了其训练数据和参数作为模型属性,因此无需提供任何额外参数。
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
预测#
使用经过训练的YOLOv11n-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