Passer au contenu

Boîtes englobantes orientées Détection d'objets

La détection d’objets orientés va encore plus loin que la détection d’objets standard en introduisant un angle supplémentaire pour localiser les objets plus précisément dans une image.

Le résultat d'un détecteur d'objets orientés est un ensemble de boîtes englobantes pivotées qui entourent précisément les objets dans l'image, ainsi que les étiquettes de classe et les scores de confiance pour chaque boîte. Les boîtes englobantes orientées sont particulièrement utiles lorsque les objets apparaissent sous différents angles, comme dans l'imagerie aérienne, où les boîtes englobantes traditionnelles alignées sur les axes peuvent inclure un arrière-plan inutile.

Astuce

Les modèles YOLO26 obb utilisent le -obb suffixe, c'est-à-dire, yolo26n-obb.pt, et sont pré-entraînés sur DOTAv1.



Regarder : Détection d'objets à l'aide des boîtes englobantes orientées (YOLO-OBB) Ultralytics YOLO

Exemples visuels

Détection de navires à l'aide d'OBBDétection de véhicules à l'aide d'OBB
Détection de navires à l'aide d'OBBDétection de véhicules à l'aide d'OBB

Modèles

Les modèles obb pré-entraînés de YOLO26 sont présentés ici, qui sont pré-entraînés sur le jeu de données DOTAv1.

Les modèles sont téléchargés automatiquement depuis la dernière version d'Ultralytics lors de la première utilisation.

ModèleTaille
(pixels)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
Vitesse
CPU ONNX
(ms)
Vitesse
T4 TensorRT10
(ms)
paramètres
(M)
FLOPs
(B)
YOLO26n-obb102452.478.997.7 ± 0.92.8 ± 0.02.514.0
YOLO26s-obb102454.880.9218.0 ± 1.44.9 ± 0.19.855.1
YOLO26m-obb102455.381.0579.2 ± 3.810.2 ± 0.321.2183.3
YOLO26l-obb102456.281.6735.6 ± 3.113.0 ± 0.225.6230.0
YOLO26x-obb102456.781.71485.7 ± 11.530.5 ± 0.957.6516.5
  • mAPtest les valeurs sont pour le multiscale à modèle unique sur DOTAv1 dataset.
    Reproduire en utilisant yolo val obb data=DOTAv1.yaml device=0 split=test et soumettre les résultats fusionnés à Évaluation DOTA.
  • Vitesse moyenné sur les images DOTAv1 val en utilisant un instance Amazon EC2 P4d. instance.
    Reproduire en utilisant yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu

Entraîner

Entraînez YOLO26n-obb sur le jeu de données DOTA8 pendant 100 époques avec une taille d'image de 640. Pour une liste complète des arguments disponibles, consultez la page Configuration.

Remarque

Les angles OBB sont contraints à la plage 0–90 degrés (90 exclus). Les angles de 90 degrés ou plus ne sont pas pris en charge.

Exemple

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.yaml")  # build a new model from YAML
model = YOLO("yolo26n-obb.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-obb.yaml").load("yolo26n.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=yolo26n-obb.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo obb train data=dota8.yaml model=yolo26n-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=yolo26n-obb.yaml pretrained=yolo26n-obb.pt epochs=100 imgsz=640



Regarder : Comment entraîner les modèles Ultralytics YOLO-obb (boîtes englobantes orientées) sur le jeu de données DOTA à l'aide de la plateforme Ultralytics

Format du jeu de données

Le format de l'ensemble de données OBB est décrit en détail dans le Guide des ensembles de données. Le format YOLO OBB désigne les boîtes englobantes par leurs quatre points d'angle avec des coordonnées normalisées entre 0 et 1, en suivant cette structure :

class_index x1 y1 x2 y2 x3 y3 x4 y4

En interne, YOLO traite les pertes et les sorties dans le xywhr format, qui représente le boîte englobantele point central (xy), la largeur, la hauteur et la rotation de.

Valider

Valider un modèle YOLO26n-obb entraîné précision sur l'ensemble de données DOTA8. Aucun argument n'est nécessaire car le model conserve son entraînement data et ses arguments en tant qu'attributs du modèle.

Exemple

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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 containing mAP50-95(B) for each category
yolo obb val model=yolo26n-obb.pt data=dota8.yaml         # val official model
yolo obb val model=path/to/best.pt data=path/to/data.yaml # val custom model

Prédire

Utiliser un modèle YOLO26n-obb entraîné pour exécuter des prédictions sur des images.

Exemple

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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.obb.xywhr  # 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
yolo obb predict model=yolo26n-obb.pt source='https://ultralytics.com/images/boats.jpg'  # predict with official model
yolo obb predict model=path/to/best.pt source='https://ultralytics.com/images/boats.jpg' # predict with custom model



Regarder : Comment détecter et suivre les réservoirs de stockage en utilisant Ultralytics YOLO-OBB | Boîtes englobantes orientées | DOTA

Voir tous les predict détails du mode dans la Prédire page.

Exporter

Exporter un modèle YOLO26n-obb vers un format différent comme ONNX, CoreML, etc.

Exemple

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo26n-obb.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model

Les formats d'exportation YOLO26-obb disponibles sont présentés dans le tableau ci-dessous. Vous pouvez exporter vers n'importe quel format en utilisant la format argument, c'est-à-dire format='onnx' ou format='engine'. Vous pouvez prédire ou valider directement sur les modèles exportés, c'est-à-dire, yolo predict model=yolo26n-obb.onnx. Des exemples d'utilisation sont présentés pour votre modèle une fois l'exportation terminée.

Formatformat ArgumentModèleMétadonnéesArguments
PyTorch-yolo26n-obb.pt-
TorchScripttorchscriptyolo26n-obb.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo26n-obb.pbimgsz, batch, device
TF Litetfliteyolo26n-obb.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, device
TF.jstfjsyolo26n-obb_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, int8, data, fraction, device

Voir tous les export détails dans la section Exporter page.

Applications concrètes

La détection d'obb avec YOLO26 a de nombreuses applications pratiques dans diverses industries :

  • Gestion maritime et portuaire : Détection des navires et des bateaux sous différents angles pour la gestion de flotte et la surveillance.
  • Planification urbaine : Analyse des bâtiments et des infrastructures à partir d’imagerie aérienne.
  • Agriculture : Surveillance des cultures et du matériel agricole à partir d’images de drone.
  • Secteur de l'énergie : Inspection des panneaux solaires et des éoliennes sous différentes orientations.
  • Transport : Suivi des véhicules sur les routes et dans les stationnements à partir de différents points de vue.

Ces applications tirent parti de la capacité d'OBB à ajuster précisément les objets sous n'importe quel angle, offrant ainsi une détection plus précise que les boîtes englobantes traditionnelles.

FAQ

Que sont les boîtes englobantes orientées (OBB) et en quoi diffèrent-elles des boîtes englobantes régulières ?

Les boîtes englobantes orientées (OBB) incluent un angle supplémentaire pour améliorer la précision de la localisation des objets dans les images. Contrairement aux boîtes englobantes classiques, qui sont des rectangles alignés sur les axes, les OBB peuvent pivoter pour mieux s'adapter à l'orientation de l'objet. Ceci est particulièrement utile pour les applications nécessitant un placement précis des objets, telles que l'imagerie aérienne ou satellitaire (Guide des ensembles de données).

Comment entraîner un modèle YOLO26n-obb à l'aide d'un jeu de données personnalisé ?

Pour entraîner un modèle YOLO26n-obb avec un jeu de données personnalisé, suivez l'exemple ci-dessous en utilisant Python ou la CLI :

Exemple

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-obb.pt")

# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)
yolo obb train data=path/to/custom_dataset.yaml model=yolo26n-obb.pt epochs=100 imgsz=640

Pour plus d'arguments d'entraînement, consultez la section Configuration.

Quels jeux de données puis-je utiliser pour l'entraînement des modèles YOLO26-obb ?

Les modèles YOLO26-OBB sont pré-entraînés sur des jeux de données comme DOTAv1 mais vous pouvez utiliser n'importe quel jeu de données formaté pour l'obb. Des informations détaillées sur les formats de jeux de données obb peuvent être trouvées dans le Guide des jeux de données.

Comment exporter un modèle YOLO26-obb au format ONNX ?

L'exportation d'un modèle YOLO26-OBB au format ONNX est simple en utilisant Python ou la CLI :

Exemple

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.pt")

# Export the model
model.export(format="onnx")
yolo export model=yolo26n-obb.pt format=onnx

Pour plus de formats d'exportation et de détails, consultez la page Export.

Comment valider la précision d'un modèle YOLO26n-obb ?

Pour valider un modèle YOLO26n-obb, vous pouvez utiliser des commandes Python ou CLI comme indiqué ci-dessous :

Exemple

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.pt")

# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolo26n-obb.pt data=dota8.yaml

Consultez tous les détails de validation dans la section Val.



📅 Créé il y a 2 ans ✏️ Mis à jour il y a 2 jours
glenn-jocherBurhan-QY-T-GRizwanMunawarambitious-octopusLaughing-qUltralyticsAssistantpderrengerjk4eMatthewNoyceAyushExel

Commentaires