Segmentação de Instâncias
A segmentação de instâncias vai além da detecção de objetos e envolve a identificação de objetos individuais em uma imagem e a sua segmentação do resto da imagem.
A saída de um modelo de segmentação de instâncias é um conjunto de máscaras ou contornos que delineiam cada objeto na imagem, juntamente com rótulos de classe e pontuações de confiança para cada objeto. A segmentação de instâncias é útil quando você precisa saber não apenas onde os objetos estão em uma imagem, mas também qual é a forma exata deles.
Assista: Executar Segmentação com o Modelo Treinado Ultralytics YOLOv8 em Python.
Dica
Modelos YOLOv8 Segment usam o sufixo -seg
, ou seja, yolov8n-seg.pt
e são pré-treinados no COCO.
Modelos
Os modelos Segment pré-treinados do YOLOv8 estão mostrados aqui. Os modelos Detect, Segment e Pose são pré-treinados no conjunto de dados COCO, enquanto os modelos Classify são pré-treinados no conjunto de dados ImageNet.
Modelos são baixados automaticamente do último lançamento da Ultralytics release na primeira utilização.
Modelo | Tamanho (pixels) |
mAPbox 50-95 |
mAPmáscara 50-95 |
Velocidade CPU ONNX (ms) |
Velocidade A100 TensorRT (ms) |
Parâmetros (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 |
- Os valores de mAPval são para um único modelo em uma única escala no conjunto de dados COCO val2017.
Reproduza por meio deyolo val segment data=coco.yaml device=0
- Velocidade média em imagens COCO val usando uma instância Amazon EC2 P4d.
Reproduza por meio deyolo val segment data=coco128-seg.yaml batch=1 device=0|cpu
Treinar
Treine o modelo YOLOv8n-seg no conjunto de dados COCO128-seg por 100 épocas com tamanho de imagem 640. Para uma lista completa de argumentos disponíveis, consulte a página Configuração.
Exemplo
from ultralytics import YOLO
# Carregar um modelo
model = YOLO('yolov8n-seg.yaml') # construir um novo modelo a partir do YAML
model = YOLO('yolov8n-seg.pt') # carregar um modelo pré-treinado (recomendado para treinamento)
model = YOLO('yolov8n-seg.yaml').load('yolov8n.pt') # construir a partir do YAML e transferir os pesos
# Treinar o modelo
results = model.train(data='coco128-seg.yaml', epochs=100, imgsz=640)
# Construir um novo modelo a partir do YAML e começar o treinamento do zero
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.yaml epochs=100 imgsz=640
# Começar o treinamento a partir de um modelo *.pt pré-treinado
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640
# Construir um novo modelo a partir do YAML, transferir pesos pré-treinados para ele e começar o treinamento
yolo segment train data=coco128-seg.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640
Formato do conjunto de dados
O formato do conjunto de dados de segmentação YOLO pode ser encontrado em detalhes no Guia de Conjuntos de Dados. Para converter seu conjunto de dados existente de outros formatos (como COCO etc.) para o formato YOLO, utilize a ferramenta JSON2YOLO da Ultralytics.
Val
Valide a acurácia do modelo YOLOv8n-seg treinado no conjunto de dados COCO128-seg. Não é necessário passar nenhum argumento, pois o modelo
retém seus dados
de treino e argumentos como atributos do modelo.
Exemplo
from ultralytics import YOLO
# Carregar um modelo
model = YOLO('yolov8n-seg.pt') # carregar um modelo oficial
model = YOLO('path/to/best.pt') # carregar um modelo personalizado
# Validar o modelo
metrics = model.val() # sem necessidade de argumentos, conjunto de dados e configurações são lembrados
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # uma lista contendo map50-95(B) de cada categoria
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # uma lista contendo map50-95(M) de cada categoria
Prever
Use um modelo YOLOv8n-seg treinado para realizar previsões em imagens.
Exemplo
Veja detalhes completos do modo predict
na página Prever.
Exportar
Exporte um modelo YOLOv8n-seg para um formato diferente como ONNX, CoreML, etc.
Exemplo
Os formatos de exportação disponíveis para YOLOv8-seg estão na tabela abaixo. Você pode prever ou validar diretamente em modelos exportados, ou seja, yolo predict model=yolov8n-seg.onnx
. Exemplos de uso são mostrados para o seu modelo após a conclusão da exportação.
Formato | Argumento format |
Modelo | Metadados | Argumentos |
---|---|---|---|---|
PyTorch | - | yolov8n-seg.pt |
✅ | - |
TorchScript | torchscript |
yolov8n-seg.torchscript |
✅ | imgsz , optimize |
ONNX | onnx |
yolov8n-seg.onnx |
✅ | imgsz , half , dynamic , simplify , opset |
OpenVINO | openvino |
yolov8n-seg_openvino_model/ |
✅ | imgsz , half |
TensorRT | engine |
yolov8n-seg.engine |
✅ | imgsz , half , dynamic , simplify , workspace |
CoreML | coreml |
yolov8n-seg.mlpackage |
✅ | imgsz , half , int8 , nms |
TF SavedModel | saved_model |
yolov8n-seg_saved_model/ |
✅ | imgsz , keras |
TF GraphDef | pb |
yolov8n-seg.pb |
❌ | imgsz |
TF Lite | tflite |
yolov8n-seg.tflite |
✅ | imgsz , half , int8 |
TF Edge TPU | edgetpu |
yolov8n-seg_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolov8n-seg_web_model/ |
✅ | imgsz |
PaddlePaddle | paddle |
yolov8n-seg_paddle_model/ |
✅ | imgsz |
ncnn | ncnn |
yolov8n-seg_ncnn_model/ |
✅ | imgsz , half |
Veja detalhes completos da exportação
na página Exportar.