Salta para o conteúdo

Segmentação de instâncias

Exemplos de segmentação de instâncias

A segmentação de instâncias vai um passo além da deteção de objectos e envolve a identificação de objectos individuais numa imagem e a sua segmentação do resto da imagem.

O resultado de um modelo de segmentação de instâncias é um conjunto de máscaras ou contornos que delineia cada objeto na imagem, juntamente com etiquetas de classe e pontuações de confiança para cada objeto. A segmentação de instâncias é útil quando precisas de saber não só onde estão os objectos numa imagem, mas também qual é a sua forma exacta.



Observa: Executa a segmentação com o modelo Ultralytics YOLOv8 pré-treinado em Python.

Dica

YOLOv8 Os modelos de segmentos utilizam o -seg sufixo, ou seja yolov8n-seg.pt e são pré-treinados em COCO.

Modelos

YOLOv8 Os modelos Segment pré-treinados são mostrados aqui. Os modelos Detetar, Segmentar e Pose são pré-treinados no conjunto de dados COCO, enquanto os modelos Classificar são pré-treinados no conjunto de dados ImageNet.

Os modelos são transferidos automaticamente a partir daversão mais recente de Ultralytics na primeira utilização.

Modelo tamanho
(pixéis)
mAPbox
50-95
mAPmask
50-95
Velocidade
CPU ONNX
(ms)
Velocidade
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n-seg 640 36.7 30.5 96.1 1.21 3.4 12.6
YOLOv8s-seg 640 44.6 36.8 155.7 1.47 11.8 42.6
YOLOv8m-seg 640 49.9 40.8 317.0 2.18 27.3 110.2
YOLOv8l-seg 640 52.3 42.6 572.4 2.79 46.0 220.5
YOLOv8x-seg 640 53.4 43.4 712.1 4.02 71.8 344.1
  • mAPval Os valores são para o modelo único de escala única em COCO val2017 conjunto de dados.
    Reproduzir por yolo val segment data=coco.yaml device=0
  • Velocidade calcula a média das imagens COCO val utilizando um Amazon EC2 P4d instância.
    Reproduzir por yolo val segment data=coco8-seg.yaml batch=1 device=0|cpu

Comboio

Treina YOLOv8n-seg no conjunto de dados COCO128-seg para 100 épocas com o tamanho de imagem 640. Para obter uma lista completa dos argumentos disponíveis, consulta a página Configuração.

Exemplo

from ultralytics import YOLO

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

# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolov8n-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=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640

Formato do conjunto de dados

YOLO O formato do conjunto de dados de segmentação pode ser consultado em pormenor no Guia do conjunto de dados. Para converter o teu conjunto de dados existente de outros formatos (como COCO, etc.) para o formato YOLO , utiliza a ferramenta JSON2YOLO em Ultralytics.

Val

Valida a precisão do modelo YOLOv8n-seg treinado no conjunto de dados COCO128-seg. Não precisas de passar nenhum argumento, pois o model mantém a sua formação data e argumentos como atributos do modelo.

Exemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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=yolov8n-seg.pt  # val official model
yolo segment val model=path/to/best.pt  # val custom model

Prevê

Utiliza um modelo YOLOv8n-seg treinado para executar previsões em imagens.

Exemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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
yolo segment predict model=yolov8n-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

Ver completo predict detalhes do modo no Prevê página.

Exportação

Exporta um modelo YOLOv8n-seg para um formato diferente como ONNX, CoreML, etc.

Exemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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=yolov8n-seg.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Os formatos de exportação disponíveis em YOLOv8-seg encontram-se na tabela abaixo. Podes exportar para qualquer formato utilizando o format argumento, ou seja format='onnx' ou format='engine'. Podes prever ou validar diretamente nos modelos exportados, ou seja yolo predict model=yolov8n-seg.onnx. São apresentados exemplos de utilização para o teu modelo após a conclusão da exportação.

Formato format Argumenta Modelo Metadados Argumentos
PyTorch - yolov8n-seg.pt -
TorchScript torchscript yolov8n-seg.torchscript imgsz, optimize, batch
ONNX onnx yolov8n-seg.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n-seg_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n-seg.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n-seg.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n-seg_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n-seg.pb imgsz, batch
TF Leve tflite yolov8n-seg.tflite imgsz, half, int8, batch
TF Borda TPU edgetpu yolov8n-seg_edgetpu.tflite imgsz
TF.js tfjs yolov8n-seg_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n-seg_paddle_model/ imgsz, batch
NCNN ncnn yolov8n-seg_ncnn_model/ imgsz, half, batch

Ver completo export detalhes no Exportação página.

FAQ

Como posso treinar um modelo de segmentação YOLOv8 num conjunto de dados personalizado?

Para treinar um modelo de segmentação YOLOv8 em um conjunto de dados personalizado, primeiro é necessário preparar o conjunto de dados no formato de segmentação YOLO . Podes usar ferramentas como JSON2YOLO para converter conjuntos de dados de outros formatos. Quando o conjunto de dados estiver pronto, é possível treinar o modelo usando os comandos Python ou CLI :

Exemplo

from ultralytics import YOLO

# Load a pretrained YOLOv8 segment model
model = YOLO("yolov8n-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=yolov8n-seg.pt epochs=100 imgsz=640

Consulta a página Configuração para veres mais argumentos disponíveis.

Qual é a diferença entre a deteção de objectos e a segmentação de instâncias em YOLOv8?

A deteção de objectos identifica e localiza os objectos numa imagem desenhando caixas delimitadoras à sua volta, enquanto a segmentação de instâncias não só identifica as caixas delimitadoras como também delineia a forma exacta de cada objeto. YOLOv8 modelos de segmentação de instâncias fornecem máscaras ou contornos que delineiam cada objeto detectado, o que é particularmente útil para tarefas em que é importante conhecer a forma exacta dos objectos, como a imagiologia médica ou a condução autónoma.

Porquê utilizar YOLOv8 para a segmentação de exemplos?

Ultralytics YOLOv8 é um modelo de última geração reconhecido por sua alta precisão e desempenho em tempo real, tornando-o ideal para tarefas de segmentação de instância. YOLOv8 Os modelos de segmentação vêm pré-treinados no conjunto de dados COCO, garantindo um desempenho robusto numa variedade de objectos. Além disso, o YOLOv8 suporta funcionalidades de formação, validação, previsão e exportação com uma integração perfeita, tornando-o altamente versátil para aplicações de investigação e industriais.

Como é que carrego e valido um modelo de segmentação YOLOv8 pré-treinado?

Carregar e validar um modelo de segmentação YOLOv8 pré-treinado é simples. Eis como o podes fazer utilizando Python e CLI:

Exemplo

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolov8n-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=yolov8n-seg.pt

Estes passos irão fornecer-te métricas de validação como a precisão média (mAP), crucial para avaliar o desempenho do modelo.

Como é que posso exportar um modelo de segmentação de YOLOv8 para o formato ONNX ?

Exportar um modelo de segmentação de YOLOv8 para o formato ONNX é simples e pode ser feito usando os comandos Python ou CLI :

Exemplo

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolov8n-seg.pt")

# Export the model to ONNX format
model.export(format="onnx")
yolo export model=yolov8n-seg.pt format=onnx

Para mais informações sobre a exportação para vários formatos, consulta a página Exportar.



Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (20), Burhan-Q (4), Laughing-q (1)

Comentários