Ultralytics YOLO27 :

Segmentation d’instances avec Ultralytics YOLO#

Ultralytics YOLO instance segmentation examples

La segmentation d’instances va plus loin que la détection d’objets : elle consiste à identifier les objets individuels présents dans une image et à les segmenter du reste de l’image.

La sortie d’un modèle de segmentation d’instances est un ensemble de masques ou de contours qui délimitent chaque objet de l’image, accompagné des étiquettes de classe et des scores de confiance pour chaque objet. La segmentation d’instances est utile lorsque tu dois connaître non seulement l’emplacement des objets dans une image, mais aussi leur forme exacte.



Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
Conseil

Les modèles YOLO26 Segment utilisent le suffixe -seg, c’est-à-dire yolo26n-seg.pt, et sont préentraînés sur COCO.

Modèles#

Les modèles YOLO26 Segment préentraînés sont présentés ici. Les modèles Detect, Segment et Pose sont préentraînés sur le jeu de données COCO, les modèles Semantic sont préentraînés sur Cityscapes, et les modèles Classify sont préentraînés sur le jeu de données ImageNet.

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

Modèletaille
(pixels)
mAPboîte
50-95(e2e)
mAPmasque
50-95(e2e)
Vitesse
CPU ONNX
(ms)
Vitesse
T4 TensorRT10
(ms)
paramètres
(M)
FLOPs
(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.3
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.5
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.7
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0140.1
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8314.0
  • Les valeurs de mAPval correspondent à une inférence à échelle unique avec un seul modèle sur le jeu de données COCO val2017.
    Reproduis-les avec yolo val segment data=coco.yaml device=0 nms=False
  • La vitesse est calculée comme la moyenne sur les images COCO val à l’aide d’une instance Amazon EC2 P4d.
    Reproduis-la avec yolo val segment data=coco.yaml batch=1 device=0|cpu nms=False
  • Params and FLOPs values are for fused models after Conv/BatchNorm folding and removal of the unused detection branch. Pretrained checkpoints retain the full training architecture and may show higher counts.

Ces points de contrôle segmentent les 80 classes de COCO. Pour segmenter des catégories qui ne figurent pas dans cette liste sans réentraînement, consulte YOLOE, qui accepte les classes sous forme d’invite textuelle, d’exemple visuel ou de vocabulaire intégré.

Consulte l'aperçu non publié de YOLO27 pour les résultats préliminaires de boîtes et de masques COCO.

Entraîner#

Entraîne YOLO26n-seg sur le jeu de données COCO8-seg pendant 100 époques, avec une taille d’image de 640. Pour obtenir la liste complète des arguments disponibles, consulte la page Configuration.

Exemple
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.yaml")  # build a new model from YAML
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Consulte les détails complets du mode train sur la page Entraînement. Les modèles de segmentation peuvent également être entraînés avec l’entraînement cloud d’Ultralytics Platform.

Format du dataset#

Le format de jeu de données de segmentation YOLO peut être consulté en détail dans le Guide des jeux de données. Pour convertir un jeu de données COCO JSON existant au format YOLO, utilise la fonction intégrée convert_coco avec use_segments=True, comme décrit dans le guide de conversion COCO vers YOLO. Tu peux aussi créer des masques de segmentation avec l'annotation de la plateforme Ultralytics à l'aide d'outils de polygones et de l'annotation intelligente propulsée par SAM.

Validation#

Évalue la précision du modèle YOLO26n-seg entraîné sur le jeu de données COCO8-seg. Aucun argument n’est nécessaire, car model conserve ses data et ses arguments d’entraînement comme attributs du modèle.

Exemple
from ultralytics import YOLO

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

# Validate the model
metrics = model.val()  # 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
metrics.box.image_metrics  # per-image metrics dictionary for det with precision, recall, F1, TP, FP, and FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list containing mAP50-95(M) for each category
metrics.seg.image_metrics  # per-image metrics dictionary for seg with precision, recall, F1, TP, FP, and FN

Prédiction#

Utilise un modèle YOLO26n-seg entraîné pour effectuer des prédictions sur des images.

Exemple
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.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/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xy = result.masks.xy  # mask polygons in pixel coordinates
    xyn = result.masks.xyn  # normalized mask polygons
    masks = result.masks.data  # binary masks, shape (N,H,W), dtype torch.uint8

Consulte les détails complets du mode predict dans la page Prédiction.

Sortie des résultats#

La segmentation d’instances YOLO renvoie un objet Results par image. Chaque résultat stocke des prédictions au niveau des objets, où chaque instance détectée possède son propre masque binaire, sa classe, sa confiance et sa boîte.

AttributTypeFormeDescription
result.masksMasks(N)Masques d’instances.
result.masks.datatorch.uint8(N,H,W)Masques binaires, valeurs 0 ou 1.
result.masks.xynp.float32list[(P,2)]Polygones en pixels.
result.masks.xynnp.float32list[(P,2)]Polygones normalisés.
result.boxesBoxes(N)Boîtes/classes/scores de confiance des instances.
result.boxes.clstorch.float32(N,)ID de classe ; convertis en int pour obtenir les noms.

Pour connaître les champs Results spécifiques à chaque tâche, consulte la section Résultats des prédictions par tâche.

Différences avec la segmentation sémantique#

La segmentation d’instances est une segmentation au niveau des objets : deux voitures produisent deux masques, deux boîtes et deux scores de confiance. La segmentation sémantique est une classification au niveau des pixels : ces mêmes voitures deviennent des pixels portant le même ID de classe dans une carte de classes de la taille de l’image, sans boîtes, scores de confiance ni liste de polygones par objet par défaut.

Exportation#

Exporte un modèle YOLO26n-seg vers un autre format, comme ONNX, CoreML, etc.

Exemple
from ultralytics import YOLO

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

# Export the model
model.export(format="onnx")

Les formats d’exportation YOLO26-seg disponibles sont répertoriés dans le tableau ci-dessous. Tu peux exporter vers n’importe quel format à l’aide de l’argument format, c’est-à-dire format='onnx' ou format='engine'. Tu peux effectuer des prédictions ou des validations directement sur les modèles exportés, c’est-à-dire yolo predict model=yolo26n-seg.onnx. Des exemples d’utilisation de ton modèle s’affichent une fois l’exportation terminée.

Remarque

CoreML prend en charge la NMS intégrée (nms=True) pour la détection, la segmentation d'instances et l'estimation de pose avec des dimensions statiques. Les exportations de segmentation par défaut (nms=None) confient la NMS au consommateur.

FormatArgument formatModèleMétadonnéesArguments
PyTorch-yolo26n-seg.pt-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-seg_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-seg_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-seg_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-seg_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-seg_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-seg.aimodelimgsz, batch, quantize

nms=None utilise par défaut des sorties brutes pour NMS externe. Définis nms=False pour sélectionner une tête sans NMS disponible ; les formats non pris en charge reviennent à leur chemin de sortie natif. Les entrées nms ci-dessus identifient les formats capables d'intégrer NMS avec nms=True.

Consulte les détails complets du mode export dans la page Exportation.

FAQ#

  • Pour entraîner un modèle de segmentation YOLO26 sur un jeu de données personnalisé, tu dois d'abord préparer ton jeu de données au format de segmentation YOLO. Tu peux utiliser l'utilitaire intégré convert_coco pour convertir les jeux de données COCO JSON. Une fois ton jeu de données prêt, tu peux entraîner le modèle en utilisant Python ou des commandes CLI :

    Exemple
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26 segment model
    model = YOLO("yolo26n-seg.pt")
    
    # Train the model
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    Consulte la page Configuration pour découvrir les autres arguments disponibles.

  • La détection d’objets identifie et localise les objets dans une image en dessinant des boîtes englobantes autour d’eux, tandis que la segmentation d’instances identifie non seulement les boîtes englobantes, mais délimite également la forme exacte de chaque objet. Les modèles de segmentation d’instances YOLO26 fournissent des masques ou des contours qui délimitent chaque objet détecté, ce qui est particulièrement utile pour les tâches où il est important de connaître la forme précise des objets, comme l’imagerie médicale ou la conduite autonome.

  • Ultralytics YOLO26 est un modèle de pointe reconnu pour sa grande précision et ses performances en temps réel, ce qui le rend idéal pour les tâches de segmentation d’instances. Les modèles YOLO26 Segment sont préentraînés sur le jeu de données COCO, ce qui garantit des performances robustes sur une grande variété d’objets. De plus, YOLO prend en charge l’entraînement, la validation, la prédiction et l’exportation grâce à une intégration fluide, ce qui le rend très polyvalent pour les applications de recherche comme pour les applications industrielles.

  • Le chargement et la validation d’un modèle de segmentation YOLO préentraîné sont simples. Voici comment procéder avec Python et CLI :

    Exemple
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-seg.pt")
    
    # Validate the model
    metrics = model.val()
    print("Mean Average Precision for boxes:", metrics.box.map)
    print("Mean Average Precision for masks:", metrics.seg.map)

    Ces étapes te fourniront des métriques de validation telles que la précision moyenne (mAP), essentielles pour évaluer les performances du modèle.

  • L’exportation d’un modèle de segmentation YOLO au format ONNX est simple et peut être effectuée à l’aide de commandes Python ou CLI :

    Exemple
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-seg.pt")
    
    # Export the model to ONNX format
    model.export(format="onnx")

    Pour plus de détails sur l’exportation vers différents formats, consulte la page Exportation.

Commentaires