Meet YOLO26: next-gen vision AI.

Link to this sectionVisão geral dos conjuntos de dados de segmentação de instâncias#

A segmentação de instâncias é uma tarefa de visão computacional que envolve identificar e delinear objetos individuais dentro de uma imagem. Este guia fornece uma visão geral dos formatos de conjunto de dados suportados pelo Ultralytics YOLO para tarefas de segmentação de instâncias, juntamente com instruções sobre como preparar, converter e usar esses conjuntos de dados para treinar os teus modelos.

Link to this sectionFormatos de dataset suportados#

Link to this sectionFormato Ultralytics YOLO#

O formato de rótulo do conjunto de dados usado para treinar modelos de segmentação YOLO é o seguinte:

  1. Um arquivo de texto por imagem: Cada imagem no conjunto de dados possui um arquivo de texto correspondente com o mesmo nome do arquivo de imagem e a extensão ".txt".
  2. Uma linha por objeto: Cada linha no arquivo de texto corresponde a uma instância de objeto na imagem.
  3. Informações do objeto por linha: Cada linha contém as seguintes informações sobre a instância do objeto:
    • Índice da classe do objeto: Um número inteiro representando a classe do objeto (ex.: 0 para pessoa, 1 para carro, etc.).
    • Coordenadas da caixa delimitadora do objeto: As coordenadas delimitadoras ao redor da área da máscara, normalizadas para estarem entre 0 e 1.

O formato para uma única linha no arquivo de conjunto de dados de segmentação é o seguinte:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

Neste formato, <class-index> é o índice da classe do objeto, e <x1> <y1> <x2> <y2> ... <xn> <yn> são as coordenadas normalizadas do polígono da máscara de segmentação do objeto (os valores estão em [0, 1] em relação à largura e altura da imagem). As coordenadas são separadas por espaços.

Aqui está um exemplo do formato de conjunto de dados YOLO para uma única imagem com dois objetos formados por um segmento de 3 pontos e um segmento de 5 pontos.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104
Dica
  • O comprimento de cada linha não precisa ser igual.
  • Cada rótulo de segmentação deve ter um mínimo de 3 pontos (x, y): <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Link to this sectionFormato YAML de conjunto de dados#

O framework Ultralytics usa um formato de arquivo YAML para definir o conjunto de dados e a configuração do modelo para o treinamento de modelos de segmentação. Aqui está um exemplo do formato YAML usado para definir um conjunto de dados de segmentação:

ultralytics/cfg/datasets/coco8-seg.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

Os campos train e val especificam os caminhos para os diretórios que contêm as imagens de treinamento e validação, respectivamente.

names é um dicionário com os nomes das classes. A ordem dos nomes deve corresponder à ordem dos índices da classe do objeto nos arquivos do conjunto de dados YOLO.

Link to this sectionUso#

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)

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

Link to this sectionDatasets suportados#

O Ultralytics YOLO suporta vários conjuntos de dados para tarefas de segmentação de instâncias. Aqui está uma lista dos mais comumente usados:

  • Carparts-seg: Um conjunto de dados especializado focado na segmentação de peças automotivas, ideal para aplicações automotivas. Inclui uma variedade de veículos com anotações detalhadas de componentes individuais do carro.
  • COCO: Um conjunto de dados abrangente para detecção de objetos, segmentação e legendagem, apresentando mais de 200 mil imagens rotuladas em uma ampla gama de categorias.
  • COCO8-seg: Um subconjunto compacto de 8 imagens do COCO, projetado para testes rápidos de treinamento de modelos de segmentação, ideal para verificações de CI e validação de fluxo de trabalho no repositório ultralytics.
  • COCO128-seg: Um conjunto de dados menor para tarefas de segmentação de instâncias, contendo um subconjunto de 128 imagens COCO com anotações de segmentação.
  • Crack-seg: Um conjunto de dados adaptado para a segmentação de rachaduras em várias superfícies. Essencial para a manutenção de infraestrutura e controle de qualidade, fornece imagens detalhadas para treinar modelos a identificar fraquezas estruturais.
  • Package-seg: Um conjunto de dados dedicado à segmentação de diferentes tipos de materiais de embalagem e formatos. É particularmente útil para logística e automação de armazéns, auxiliando no desenvolvimento de sistemas para manuseio e classificação de pacotes.

Link to this sectionAdicionando seu próprio dataset#

Se tens o teu próprio conjunto de dados e gostarias de usá-lo para treinar modelos de segmentação com o formato Ultralytics YOLO, certifica-te de que ele segue o formato especificado acima em "Formato Ultralytics YOLO". Converte as tuas anotações para o formato necessário e especifica os caminhos, o número de classes e os nomes das classes no arquivo de configuração YAML. Mantém images/ e labels/ como pastas separadas no mesmo nível, com estrutura de subpastas correspondente; colocar arquivos .txt de rótulo na pasta de imagens pode fazer com que o modelo perca os rótulos.

Link to this sectionPortar ou converter formatos de etiqueta#

Link to this sectionFormato de dataset COCO para formato YOLO#

Podes converter facilmente rótulos do popular formato de conjunto de dados COCO para o formato YOLO usando o seguinte trecho de código:

Exemplo
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Esta ferramenta de conversão pode ser usada para converter o conjunto de dados COCO ou qualquer conjunto de dados no formato COCO para o formato Ultralytics YOLO.

Lembra-te de verificar duas vezes se o conjunto de dados que pretendes usar é compatível com o teu modelo e segue as convenções de formato necessárias. Conjuntos de dados formatados corretamente são cruciais para treinar modelos de segmentação bem-sucedidos.

Link to this sectionAuto-Anotação#

Auto-anotação é um recurso essencial que te permite gerar um conjunto de dados de segmentação usando um modelo de detecção pré-treinado. Ele permite que anotes de forma rápida e precisa um grande número de imagens sem a necessidade de rotulagem manual, economizando tempo e esforço.

Link to this sectionGerar conjunto de dados de segmentação usando um modelo de detecção#

Para auto-anotar o teu conjunto de dados usando o framework Ultralytics, podes usar a função auto_annotate como mostrado abaixo:

Exemplo
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
ArgumentoTipoPredefiniçãoDescrição
datastrobrigatórioCaminho para o diretório contendo as imagens alvo para anotação ou segmentação.
det_modelstr'yolo26x.pt'Caminho do modelo de deteção YOLO para a deteção inicial de objetos.
sam_modelstr'sam_b.pt'Caminho do modelo SAM para segmentação (suporta pesos SAM, SAM 2, MobileSAM e SAM 3).
devicestr''Dispositivo de computação (ex: 'cuda:0', 'cpu', ou '' para deteção automática de dispositivo).
conffloat0.25Limiar de confiança de deteção YOLO para filtrar deteções fracas.
ioufloat0.45Limiar de IoU para Non-Maximum Suppression para filtrar caixas sobrepostas.
imgszint640Tamanho de entrada para redimensionar imagens (deve ser múltiplo de 32).
max_detint300Número máximo de deteções por imagem para eficiência de memória.
classeslist[int]NoneLista de índices de classe para detetar (ex: [0, 1] para pessoa e bicicleta).
output_dirstrNoneDiretório de salvamento para anotações (padrão: <data>_auto_annotate_labels irmão).

A função auto_annotate aceita o caminho para as tuas imagens, juntamente com argumentos opcionais para especificar os modelos de detecção pré-treinados, por exemplo, YOLO26, YOLO11, ou outros modelos, e modelos de segmentação, por exemplo, SAM, SAM 2, MobileSAM, ou SAM 3, o dispositivo para executar os modelos e o diretório de saída para salvar os resultados anotados.

Ao aproveitar o poder de modelos pré-treinados, a auto-anotação pode reduzir significativamente o tempo e o esforço necessários para criar conjuntos de dados de segmentação de alta qualidade. Este recurso é particularmente útil para pesquisadores e desenvolvedores que trabalham com grandes coleções de imagens, pois permite que se concentrem no desenvolvimento e avaliação do modelo em vez da anotação manual.

Link to this sectionVisualizar Anotações de Dataset#

Antes de treinar o teu modelo, é frequentemente útil visualizar as anotações do teu conjunto de dados para garantir que estão corretas. A Ultralytics fornece uma função utilitária para este fim:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Define the label map with all annotated class labels.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Input image path.
    "path/to/annotations.txt",  # Annotation file path for the image.
    label_map,
)

Esta função desenha caixas delimitadoras, rotula objetos com nomes de classes e ajusta a cor do texto para melhor legibilidade, ajudando-te a identificar e corrigir quaisquer erros de anotação antes do treinamento.

Link to this sectionConvertendo máscaras de segmentação para o formato YOLO#

Se tens máscaras de segmentação em formato binário, podes convertê-las para o formato de segmentação YOLO usando:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# For datasets like COCO with 80 classes
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)

Este utilitário converte imagens de máscara binária para o formato de segmentação YOLO e salva-as no diretório de saída especificado.

Link to this sectionFAQ#

Link to this sectionQuais formatos de conjunto de dados o Ultralytics YOLO suporta para segmentação de instâncias?#

O Ultralytics YOLO suporta vários formatos de conjunto de dados para segmentação de instâncias, sendo o formato principal o seu próprio formato Ultralytics YOLO. Cada imagem no teu conjunto de dados precisa de um arquivo de texto correspondente com informações de objetos segmentadas em várias linhas (uma linha por objeto), listando o índice da classe e as coordenadas delimitadoras normalizadas. Para instruções mais detalhadas sobre o formato de conjunto de dados YOLO, visita a Visão geral dos conjuntos de dados de segmentação de instâncias.

Link to this sectionComo posso converter anotações do conjunto de dados COCO para o formato YOLO?#

Converter anotações do formato COCO para o formato YOLO é simples usando as ferramentas da Ultralytics. Podes usar a função convert_coco do módulo ultralytics.data.converter:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Este script converte as anotações do teu conjunto de dados COCO para o formato YOLO necessário, tornando-o adequado para treinar os teus modelos YOLO. Para mais detalhes, consulta Portar ou converter formatos de rótulo.

Link to this sectionComo preparo um arquivo YAML para treinar modelos Ultralytics YOLO?#

Para preparar um arquivo YAML para treinar modelos YOLO com Ultralytics, precisas de definir os caminhos do conjunto de dados e os nomes das classes. Aqui está um exemplo de configuração YAML:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

Certifica-te de atualizar os caminhos e os nomes das classes de acordo com o teu conjunto de dados. Para mais informações, verifica a seção Formato YAML do conjunto de dados.

Link to this sectionO que é o recurso de auto-anotação no Ultralytics YOLO?#

A auto-anotação no Ultralytics YOLO permite-te gerar anotações de segmentação para o teu conjunto de dados usando um modelo de detecção pré-treinado. Isso reduz significativamente a necessidade de rotulagem manual. Podes usar a função auto_annotate da seguinte forma:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")  # or sam_model="mobile_sam.pt"

Esta função automatiza o processo de anotação, tornando-o mais rápido e eficiente. Para mais detalhes, explora a Referência de Auto-Anotação.

Comentários