Ultralytics YOLO27 :
Get Started

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 d’une image et à les séparer 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, ainsi que les étiquettes de classe et les scores de confiance associés à 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.



Regarder : Effectuer une segmentation avec un modèle Ultralytics YOLO préentraîné dans 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 sur le jeu de données COCO sont présentés ci-dessous.

Les modèles sont automatiquement téléchargés depuis la dernière version d’Ultralytics lors de leur 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 mAPval correspondent à une évaluation à échelle unique avec un seul modèle sur le jeu de données COCO val2017.
    Reproduis les résultats avec yolo segment val data=coco.yaml device=0 nms=False
  • Vitesse moyenne calculée sur les images COCO val avec ONNX sur CPU et TensorRT10 sur un GPU NVIDIA T4.
    Reproduis-la avec yolo segment val data=coco.yaml batch=1 device=0|cpu nms=False
  • Les valeurs Params et FLOPs correspondent aux modèles fusionnés après la fusion Conv/BatchNorm et la suppression de la branche de détection inutilisée. Les checkpoints préentraînés conservent l’architecture d’entraînement complète et peuvent afficher des valeurs plus élevées.

Ces checkpoints segmentent les 80 classes de COCO. Pour segmenter des catégories ne figurant 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 découvrir les résultats préliminaires sur les boîtes et les masques COCO.

Entraînement#

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

Exemple
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n-seg.yaml")  # créer un nouveau modèle à partir du fichier YAML
model = YOLO("yolo26n-seg.pt")  # charger un modèle préentraîné (recommandé pour l’entraînement)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # créer à partir du fichier YAML et transférer les poids

# Entraîner le modèle
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Consulte la page Entraînement pour obtenir tous les détails du mode train. Tu peux également entraîner les modèles de segmentation avec l’entraînement cloud d’Ultralytics Platform.

Format du jeu de données#

Le guide des jeux de données décrit en détail le format des jeux de données de segmentation YOLO. Pour convertir un jeu de données JSON COCO existant au format YOLO, utilise la fonction intégrée convert_coco avec use_segments=True, comme indiqué dans le guide de conversion de COCO vers YOLO. Tu peux aussi créer des masques de segmentation avec l’annotation Ultralytics Platform, grâce aux outils de polygones et à l’annotation intelligente basée sur SAM.

Validation#

Valide l’exactitude du modèle YOLO26n-seg entraîné. Aucun argument n’est nécessaire, car le model conserve les data et les arguments de l’entraînement comme attributs du modèle : path/to/best.pt de l’exemple d’entraînement effectue la validation sur COCO8-seg. Les poids officiels indiquent un chemin vers un jeu de données d’entraînement qui n’existe pas sur ta machine ; ils utilisent donc le coco8-seg.yaml par défaut de la tâche et affichent un avertissement. Indique data pour valider sur un autre jeu de données.

Exemple
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n-seg.pt")  # charger un modèle officiel
model = YOLO("path/to/best.pt")  # charger un modèle personnalisé

# Valider le modèle
metrics = model.val()  # aucun argument nécessaire, le jeu de données et les paramètres sont mémorisés
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # une liste contenant mAP50-95(B) pour chaque catégorie
metrics.box.image_metrics  # dictionnaire de métriques par image pour la détection, avec précision, rappel, F1, TP, FP et FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # une liste contenant mAP50-95(M) pour chaque catégorie
metrics.seg.image_metrics  # dictionnaire de métriques par image pour la segmentation, avec précision, rappel, F1, TP, FP et FN

Prédiction#

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

Exemple
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n-seg.pt")  # charger un modèle officiel
model = YOLO("path/to/best.pt")  # charger un modèle personnalisé

# Effectuer des prédictions avec le modèle
results = model("https://ultralytics.com/images/bus.jpg")  # effectuer une prédiction sur une image

# Accéder aux résultats
for result in results:
    xy = result.masks.xy  # polygones de masque en coordonnées pixel
    xyn = result.masks.xyn  # polygones de masque normalisés
    masks = result.masks.data  # masques binaires, forme (N,H,W), dtype torch.uint8

Consulte les détails complets du mode predict sur la page Predict.

Sortie des résultats#

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

AttributTypeFormeDescription
result.masksMasks(N)Masques d’instance.
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-les en int pour obtenir les noms.

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

Segmentation d’instances et segmentation sémantique#

La segmentation d’instances segmente les objets individuellement : deux voitures produisent deux masques, deux boîtes et deux scores de confiance. La segmentation sémantique classe les 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 par objet, scores de confiance ni liste de polygones par défaut. Consulte la comparaison détaillée champ par champ sur la page consacrée à la segmentation sémantique.

Export#

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

Exemple
from ultralytics import YOLO

# Charger un modèle
model = YOLO("yolo26n-seg.pt")  # charger un modèle officiel
model = YOLO("path/to/best.pt")  # charger un modèle personnalisé

# Exporter le modèle
model.export(format="onnx")

Les formats d’export disponibles pour YOLO26-seg sont indiqués dans le tableau ci-dessous. Tu peux exporter dans n’importe quel format avec l’argument format, par exemple format='onnx' ou format='engine'. Tu peux effectuer des prédictions ou des validations directement avec les modèles exportés, par exemple yolo predict model=yolo26n-seg.onnx. Des exemples d’utilisation de ton modèle s’affichent une fois l’export terminé.

Remarque

CoreML prend en charge la NMS intégrée (nms=True) pour la détection, la segmentation d’instances et la pose avec des formes statiques. Les exportations de segmentation par défaut (nms=None) laissent la NMS à la charge du consommateur.

FormatArgument formatModèleMétadonnéesArguments
PyTorch-yolo26n-seg.pt✅-
TorchScripttorchscriptyolo26n-seg.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-seg.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-seg_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-seg.mnn✅imgsz, 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.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-seg_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-seg_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None produit par défaut des sorties brutes pour la NMS externe. Définis nms=False pour sélectionner une tête disponible sans NMS ; les formats non pris en charge utilisent leur voie de sortie native. Les entrées nms ci-dessus désignent les formats qui peuvent intégrer la NMS avec nms=True.

Consulte tous les détails de export sur 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 JSON COCO. Une fois ton jeu de données prêt, tu peux entraîner le modèle avec Python ou des commandes CLI :

    Exemple
    from ultralytics import YOLO
    
    # Charger un modèle de segmentation YOLO26 préentraîné
    model = YOLO("yolo26n-seg.pt")
    
    # Entraîner le modèle
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

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

  • La détection d’objets identifie et localise les objets dans une image en traçant des boîtes englobantes autour d’eux, tandis que la segmentation d’instances identifie les boîtes englobantes et 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é. Cette fonctionnalité est particulièrement utile pour les tâches où la forme précise des objets est importante, 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 leur assure 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’export avec une intégration fluide, ce qui le rend très polyvalent pour les applications de recherche et 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 la CLI :

    Exemple
    from ultralytics import YOLO
    
    # Charger un modèle préentraîné
    model = YOLO("yolo26n-seg.pt")
    
    # Valider le modèle
    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 comme 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 s’effectuer avec Python ou des commandes CLI :

    Exemple
    from ultralytics import YOLO
    
    # Charger un modèle préentraîné
    model = YOLO("yolo26n-seg.pt")
    
    # Exporter le modèle au format ONNX
    model.export(format="onnx")

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

Commentaires