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 YOLO11 OBB utilisent le -obb
suffixe, c'est-à-dire yolo11n-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'OBB | Détection de véhicules à l'aide d'OBB |
---|---|
![]() |
![]() |
Modèles
Les modèles OBB pré-entraînés YOLO11 sont présentés ici, qui sont pré-entraînés sur l'ensemble 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èle | Taille (pixels) |
mAPtest 50 |
Vitesse CPU ONNX (ms) |
Vitesse T4 TensorRT10 (ms) |
paramètres (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 les valeurs sont pour le multiscale à modèle unique sur DOTAv1 dataset.
Reproduire en utilisantyolo 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 utilisantyolo val obb data=DOTAv1.yaml batch=1 device=0|cpu
Entraîner
Entraîner YOLO11n-obb sur l'ensemble de données DOTA8 pendant 100 epochs à une taille d'image de 640. Pour une liste complète des arguments disponibles, consultez la page Configuration.
Remarque
Les angles OBB sont limités à une plage de 0 à 90 degrés (à l'exclusion de 90). Les angles de 90 degrés ou plus ne sont pas pris en charge.
Exemple
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
Regarder : Comment entraîner les modèles Ultralytics YOLO-OBB (boîtes englobantes orientées) sur l'ensemble de données DOTA à l'aide de Ultralytics HUB
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 le modèle YOLO11n-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("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
yolo obb val model=yolo11n-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 YOLO11n-obb entraîné pour exécuter des prédictions sur des images.
Exemple
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.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=yolo11n-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 YOLO11n-obb vers un format différent comme ONNX, CoreML, etc.
Exemple
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 trained model
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-obb.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
Les formats d'exportation YOLO11-obb disponibles sont indiqués dans le tableau ci-dessous. Vous pouvez exporter vers n'importe quel format en utilisant le 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=yolo11n-obb.onnx
. Des exemples d'utilisation sont présentés pour votre modèle une fois l'exportation terminée.
Format | format Argument |
Modèle | Métadonnées | Arguments |
---|---|---|---|---|
PyTorch | - | yolo11n-obb.pt |
✅ | - |
TorchScript | torchscript |
yolo11n-obb.torchscript |
✅ | imgsz , half , dynamic , optimize , nms , batch , device |
ONNX | onnx |
yolo11n-obb.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch , device |
OpenVINO | openvino |
yolo11n-obb_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data , fraction , device |
TensorRT | engine |
yolo11n-obb.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data , fraction , device |
CoreML | coreml |
yolo11n-obb.mlpackage |
✅ | imgsz , half , int8 , nms , batch , device |
TF SavedModel | saved_model |
yolo11n-obb_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch , device |
TF GraphDef | pb |
yolo11n-obb.pb |
❌ | imgsz , batch , device |
TF Lite | tflite |
yolo11n-obb.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge TPU | edgetpu |
yolo11n-obb_edgetpu.tflite |
✅ | imgsz , device |
TF.js | tfjs |
yolo11n-obb_web_model/ |
✅ | imgsz , half , int8 , nms , batch , device |
PaddlePaddle | paddle |
yolo11n-obb_paddle_model/ |
✅ | imgsz , batch , device |
MNN | mnn |
yolo11n-obb.mnn |
✅ | imgsz , batch , int8 , half , device |
NCNN | ncnn |
yolo11n-obb_ncnn_model/ |
✅ | imgsz , half , batch , device |
IMX500 | imx |
yolo11n-obb_imx_model/ |
✅ | imgsz , int8 , data , fraction , device |
RKNN | rknn |
yolo11n-obb_rknn_model/ |
✅ | imgsz , batch , name , device |
Voir tous les export
détails dans la section Exporter page.
Applications concrètes
La détection OBB avec YOLO11 a de nombreuses applications pratiques dans divers secteurs :
- 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 YOLO11n-obb en utilisant un ensemble de données personnalisé ?
Pour entraîner un modèle YOLO11n-obb avec un ensemble de données personnalisé, suivez l'exemple ci-dessous en utilisant Python ou l'interface en ligne de commande (CLI) :
Exemple
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo11n-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=yolo11n-obb.pt epochs=100 imgsz=640
Pour plus d'arguments d'entraînement, consultez la section Configuration.
Quels ensembles de données puis-je utiliser pour entraîner les modèles YOLO11-OBB ?
Les modèles YOLO11-OBB sont pré-entraînés sur des ensembles de données tels que DOTAv1, mais vous pouvez utiliser n'importe quel ensemble de données formaté pour OBB. Des informations détaillées sur les formats d'ensembles de données OBB sont disponibles dans le Guide des ensembles de données.
Comment puis-je exporter un modèle YOLO11-OBB au format ONNX ?
L'exportation d'un modèle YOLO11-OBB au format ONNX est simple, que ce soit en utilisant Python ou l'interface en ligne de commande (CLI) :
Exemple
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt")
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-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 YOLO11n-obb ?
Pour valider un modèle YOLO11n-obb, vous pouvez utiliser les commandes Python ou CLI comme indiqué ci-dessous :
Exemple
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-obb.pt")
# Validate the model
metrics = model.val(data="dota8.yaml")
yolo obb val model=yolo11n-obb.pt data=dota8.yaml
Consultez tous les détails de validation dans la section Val.