Segmentation d'instance
La segmentation d'instance va encore plus loin que la détection d'objets et implique l'identification d'objets individuels dans une image et leur segmentation du reste de l'image.
La sortie d'un modèle de segmentation d'instance est un ensemble de masques ou de contours qui délimitent chaque objet dans l'image, ainsi que des étiquettes de classe et des scores de confiance pour chaque objet. La segmentation d'instance est utile lorsque vous avez besoin de savoir non seulement où se trouvent les objets dans une image, mais aussi quelle est leur forme exacte.
Regarder : Exécuter la segmentation avec le modèle Ultralytics YOLO pré-entraîné en python.
Astuce
Les modèles de segmentation YOLO11 utilisent le -seg
suffixe, c'est-à-dire yolo11n-seg.pt
et sont pré-entraînés sur COCO.
Modèles
Les modèles de segmentation YOLO11 pré-entraînés sont présentés ici. Les modèles de détection, de segmentation et de pose sont pré-entraînés sur l'ensemble de données COCO, tandis que les modèles de classification sont pré-entraînés sur l'ensemble de données ImageNet.
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) |
mAPboîte 50-95 |
mAPmasque 50-95 |
Vitesse CPU ONNX (ms) |
Vitesse T4 TensorRT10 (ms) |
paramètres (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLO11n-seg | 640 | 38.9 | 32.0 | 65.9 ± 1.1 | 1.8 ± 0.0 | 2.9 | 10.4 |
YOLO11s-seg | 640 | 46.6 | 37.8 | 117.6 ± 4.9 | 2.9 ± 0.0 | 10.1 | 35.5 |
YOLO11m-seg | 640 | 51.5 | 41.5 | 281.6 ± 1.2 | 6.3 ± 0.1 | 22.4 | 123.3 |
YOLO11l-seg | 640 | 53.4 | 42.9 | 344.2 ± 3.2 | 7,8 ± 0,2 | 27.6 | 142.2 |
YOLO11x-seg | 640 | 54.7 | 43.8 | 664,5 ± 3,2 | 15,8 ± 0,7 | 62.1 | 319.0 |
- mAPval Les valeurs sont celles d'un modèle unique à échelle unique sur l'ensemble de données COCO val2017. dataset.
Reproduire en utilisantyolo val segment data=coco.yaml device=0
- Vitesse moyennée sur les images COCO val en utilisant une instance Amazon EC2 P4d. instance.
Reproduire en utilisantyolo val segment data=coco.yaml batch=1 device=0|cpu
Entraîner
Entraîner YOLO11n-seg sur l'ensemble de données COCO8-seg pour 100 epochs à une taille d'image de 640. Pour une liste complète des arguments disponibles, consultez la page Configuration.
Exemple
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-seg.yaml") # build a new model from YAML
model = YOLO("yolo11n-seg.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo11n-seg.yaml").load("yolo11n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.yaml pretrained=yolo11n-seg.pt epochs=100 imgsz=640
Format du jeu de données
Le format de l'ensemble de données de segmentation YOLO est décrit en détail dans le Guide de l'ensemble de données. Pour convertir votre ensemble de données existant à partir d'autres formats (comme COCO, etc.) au format YOLO, veuillez utiliser l'outil JSON2YOLO d'Ultralytics.
Valider
Valider le modèle YOLO11n-seg entraîné précision sur l'ensemble de données COCO8-seg. 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-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 contains map50-95(B) of each category
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # a list contains map50-95(M) of each category
yolo segment val model=yolo11n-seg.pt # val official model
yolo segment val model=path/to/best.pt # val custom model
Prédire
Utiliser un modèle YOLO11n-seg entraîné pour exécuter des prédictions sur des images.
Exemple
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-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 in polygon format
xyn = result.masks.xyn # normalized
masks = result.masks.data # mask in matrix format (num_objects x H x W)
yolo segment predict model=yolo11n-seg.pt source='https://ultralytics.com/images/bus.jpg' # predict with official model
yolo segment predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # predict with custom model
Voir tous les predict
détails du mode dans la Prédire page.
Exporter
Exporter un modèle YOLO11n-seg vers un format différent comme ONNX, CoreML, etc.
Exemple
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-seg.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-seg.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
Les formats d'exportation YOLO11-seg disponibles sont 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-seg.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-seg.pt |
✅ | - |
TorchScript | torchscript |
yolo11n-seg.torchscript |
✅ | imgsz , half , dynamic , optimize , nms , batch , device |
ONNX | onnx |
yolo11n-seg.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch , device |
OpenVINO | openvino |
yolo11n-seg_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data , fraction , device |
TensorRT | engine |
yolo11n-seg.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data , fraction , device |
CoreML | coreml |
yolo11n-seg.mlpackage |
✅ | imgsz , half , int8 , nms , batch , device |
TF SavedModel | saved_model |
yolo11n-seg_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch , device |
TF GraphDef | pb |
yolo11n-seg.pb |
❌ | imgsz , batch , device |
TF Lite | tflite |
yolo11n-seg.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge TPU | edgetpu |
yolo11n-seg_edgetpu.tflite |
✅ | imgsz , device |
TF.js | tfjs |
yolo11n-seg_web_model/ |
✅ | imgsz , half , int8 , nms , batch , device |
PaddlePaddle | paddle |
yolo11n-seg_paddle_model/ |
✅ | imgsz , batch , device |
MNN | mnn |
yolo11n-seg.mnn |
✅ | imgsz , batch , int8 , half , device |
NCNN | ncnn |
yolo11n-seg_ncnn_model/ |
✅ | imgsz , half , batch , device |
IMX500 | imx |
yolo11n-seg_imx_model/ |
✅ | imgsz , int8 , data , fraction , device |
RKNN | rknn |
yolo11n-seg_rknn_model/ |
✅ | imgsz , batch , name , device |
Voir tous les export
détails dans la section Exporter page.
FAQ
Comment former un modèle de segmentation YOLO11 sur un ensemble de données personnalisé ?
Pour entraîner un modèle de segmentation YOLO11 sur un ensemble de données personnalisé, vous devez d'abord préparer votre ensemble de données au format de segmentation YOLO. Vous pouvez utiliser des outils comme JSON2YOLO pour convertir des ensembles de données à partir d'autres formats. Une fois votre ensemble de données prêt, vous pouvez entraîner le modèle en utilisant des commandes python ou CLI :
Exemple
from ultralytics import YOLO
# Load a pretrained YOLO11 segment model
model = YOLO("yolo11n-seg.pt")
# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo segment train data=path/to/your_dataset.yaml model=yolo11n-seg.pt epochs=100 imgsz=640
Consultez la page Configuration pour plus d'arguments disponibles.
Quelle est la différence entre la détection d'objets et la segmentation d'instance dans YOLO11 ?
La détection d’objets identifie et localise les objets dans une image en dessinant des cadres de délimitation autour d’eux, tandis que la segmentation d’instance identifie non seulement les cadres de délimitation, mais délimite également la forme exacte de chaque objet. Les modèles de segmentation d’instance YOLO11 fournissent des masques ou des contours qui délimitent chaque objet détecté, ce qui est particulièrement utile pour les tâches où la connaissance de la forme précise des objets est importante, comme l’imagerie médicale ou la conduite autonome.
Pourquoi utiliser YOLO11 pour la segmentation d’instance ?
Ultralytics YOLO11 est un modèle de pointe reconnu pour sa haute précision et ses performances en temps réel, ce qui le rend idéal pour les tâches de segmentation d'instance. Les modèles YOLO11 Segment sont pré-entraînés sur l'ensemble de données COCO, ce qui garantit des performances robustes sur une variété d'objets. De plus, YOLO prend en charge les fonctionnalités d'entraînement, de validation, de prédiction et d'exportation avec une intégration transparente, ce qui le rend très polyvalent pour les applications de recherche et industrielles.
Comment charger et valider un modèle de segmentation YOLO pré-entraîné ?
Le chargement et la validation d'un modèle de segmentation YOLO pré-entraîné sont simples. Voici comment vous pouvez le faire en utilisant python et CLI :
Exemple
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo11n-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)
yolo segment val model=yolo11n-seg.pt
Ces étapes vous fourniront des métriques de validation comme la Précision moyenne moyenne (mAP), cruciale pour évaluer les performances du modèle.
Comment exporter un modèle de segmentation YOLO au format ONNX ?
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("yolo11n-seg.pt")
# Export the model to ONNX format
model.export(format="onnx")
yolo export model=yolo11n-seg.pt format=onnx
Pour plus de détails sur l'exportation vers différents formats, consultez la page Exportation.