Ultralytics YOLO27:
Get Started

Visã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 delimitar objetos individuais em uma imagem. Este guia apresenta uma visão geral dos formatos de conjuntos de dados compatíveis com Ultralytics YOLO para tarefas de segmentação de instâncias, além de instruções sobre como preparar, converter e usar esses conjuntos de dados para treinar seus modelos.

Formatos de conjuntos de dados compatíveis#

Formato Ultralytics YOLO#

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

  1. Um arquivo de texto por imagem: cada imagem do conjunto de dados tem 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 do 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 que representa a classe do objeto (por exemplo, 0 para pessoa, 1 para carro etc.).
    • Coordenadas do polígono do objeto: os pontos (x, y) que contornam a máscara do objeto, normalizados para valores entre 0 e 1.

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

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

Nesse 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, compostos 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 precisa ter no mínimo 3 pontos (x, y): <class-index> <x1> <y1> <x2> <y2> <x3> <y3>
  • Todo objeto precisa de um polígono. As linhas no formato de detecção (<class-index> <x_center> <y_center> <width> <height>) não têm nenhum, e um conjunto de dados de segmentação com quantidades diferentes de caixas e polígonos é rejeitado com um ValueError quando os rótulos são carregados.

Formato YAML do conjunto de dados#

O framework Ultralytics usa o formato de arquivo YAML para definir a configuração do conjunto de dados e do modelo para treinar modelos de segmentação. Veja 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, val e test apontam para as imagens de treino, validação e teste. Cada um aceita um diretório, uma lista de diretórios ou um arquivo *.txt que lista um caminho de imagem por linha (caminhos que começam com ./ são resolvidos em relação ao arquivo *.txt). Um arquivo *.txt é útil para treinar com um subconjunto de um diretório, ignorar imagens sem rótulos ou combinar imagens de várias fontes em uma única divisão.

Caminhos de imagens em um arquivo `*.txt`
path: datasets/coco8-seg # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

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

Uso#

Exemplo
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-seg.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)

# Treinar o modelo
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Conjuntos de dados compatíveis#

O Ultralytics YOLO é compatível com vários conjuntos de dados para tarefas de segmentação de instâncias. Veja uma lista dos mais usados. A maioria desses conjuntos de dados também está hospedada na Ultralytics Platform, onde podes explorar as imagens e anotações, consultar estatísticas dos conjuntos de dados e cloná-los para treinar na nuvem.

  • Carparts-seg: um conjunto de dados especializado em segmentação de peças automotivas, ideal para aplicações do setor automotivo. Inclui diversos veículos com anotações detalhadas de componentes individuais.
  • COCO: um conjunto de dados abrangente para detecção de objetos, segmentação e geração de legendas, com mais de 200 mil imagens rotuladas em uma ampla variedade de categorias.
  • COCO8-seg: um subconjunto compacto do COCO, com 8 imagens, criado para testar rapidamente o treino de modelos de segmentação. É ideal para verificações de CI e validação de fluxos de trabalho no repositório ultralytics.
  • COCO128-seg: um conjunto de dados menor para tarefas de segmentação de instâncias, com um subconjunto de 128 imagens do COCO e anotações de segmentação.
  • Crack-seg: um conjunto de dados desenvolvido para segmentar rachaduras em várias superfícies. Essencial para manutenção de infraestruturas e controle de qualidade, oferece imagens detalhadas para treinar modelos a identificar fragilidades estruturais.
  • Package-seg: um conjunto de dados dedicado à segmentação de diferentes tipos e formatos de materiais de embalagem. É especialmente útil para automação de logística e armazéns, ajudando a desenvolver sistemas de manuseio e triagem de pacotes.

Adicionar o seu próprio conjunto de dados#

Se tens um conjunto de dados próprio e queres usá-lo para treinar modelos de segmentação no formato Ultralytics YOLO, verifica se ele segue o formato especificado acima em "Formato Ultralytics YOLO". Converte as 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/ em pastas separadas no mesmo nível, com a mesma estrutura de subpastas; colocar arquivos de rótulos .txt na pasta de imagens pode fazer com que o modelo não encontre os rótulos.

Portar ou converter formatos de rótulos#

Converter o formato do conjunto de dados COCO para o 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 se o conjunto de dados que queres usar é compatível com o modelo e segue as convenções de formato necessárias. Conjuntos de dados formatados corretamente são essenciais para treinar modelos de segmentação eficazes.

Anotação automática#

A anotação automática é um recurso essencial que permite gerar um conjunto de dados de segmentação usando um modelo de detecção pré-treinado. Com ela, podes anotar de forma rápida e precisa um grande número de imagens sem rotulagem manual, poupando tempo e esforço.

Gerar um conjunto de dados de segmentação usando um modelo de detecção#

Para anotar automaticamente o teu conjunto de dados com 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")
ArgumentoTipoPadrãoDescrição
datastrobrigatórioCaminho para o diretório que contém as imagens de destino para anotação ou segmentação.
det_modelstr'yolo26x.pt'Caminho para o modelo de detecção YOLO usado na detecção inicial de objetos.
sam_modelstr'sam_b.pt'Caminho para o modelo SAM usado na segmentação (compatível com pesos de SAM, SAM 2, MobileSAM e SAM 3).
devicestr''Dispositivo de computação (por exemplo, 'cuda:0', 'cpu' ou '' para detecção automática do dispositivo).
conffloat0.25Limite de confiança para a detecção YOLO, usado para filtrar detecções fracas.
ioufloat0.45Limite de IoU para a supressão não máxima, usada para filtrar caixas sobrepostas.
imgszint640Tamanho de entrada para redimensionar as imagens (arredondado para cima até um múltiplo de 32, se necessário).
max_detint300Número máximo de detecções por imagem para economizar memória.
classeslist[int]NoneLista de índices de classes a detectar (por exemplo, [0, 1] para pessoa e bicicleta).
output_dirstrNoneDiretório para salvar as anotações (por padrão: diretório irmão de <data>_auto_annotate_labels).

A função auto_annotate recebe o caminho das imagens, além de argumentos opcionais para especificar os modelos de detecção pré-treinados, por exemplo, YOLO26, YOLO11 ou outros modelos, e os modelos de segmentação, por exemplo, SAM, SAM 2, MobileSAM ou SAM 3, além do dispositivo em que os modelos serão executados e do diretório de saída onde os resultados anotados serão salvos.

Ao aproveitar o potencial dos modelos pré-treinados, a anotação automática pode reduzir significativamente o tempo e o esforço necessários para criar conjuntos de dados de segmentação de alta qualidade. Esse recurso é especialmente útil para pesquisadores e desenvolvedores que trabalham com grandes coleções de imagens, pois permite que se concentrem no desenvolvimento e na avaliação de modelos em vez de fazer anotações manualmente.

Visualizar anotações de conjuntos de dados#

Antes de treinar o modelo, costuma ser útil visualizar as anotações do conjunto de dados para confirmar que estão corretas. O Ultralytics oferece uma função utilitária para isso. Ela lê apenas rótulos de caixas no formato de detecção (<class-index> <x_center> <y_center> <width> <height>), portanto não consegue analisar arquivos de rótulos com polígonos de segmentação:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Defina o mapa de rótulos com todos os rótulos das classes anotadas.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Caminho da imagem de entrada.
    "path/to/annotations.txt",  # Caminho do arquivo de anotação da imagem.
    label_map,
)

Esta função desenha caixas delimitadoras, identifica os objetos com os nomes das classes e ajusta a cor do texto para melhorar a legibilidade, ajudando-te a identificar e corrigir erros de anotação antes do treino.

Converter máscaras de segmentação para o formato YOLO#

Se tens imagens de máscaras em escala de cinza, nas quais o valor de cada pixel corresponde ao índice da classe + 1 (0 é o plano de fundo), podes convertê-las para o formato de segmentação YOLO usando:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# Para conjuntos de dados como COCO, com 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 as imagens de máscara para o formato de segmentação YOLO e salva os arquivos no diretório de saída especificado.

Perguntas frequentes#

  • O Ultralytics YOLO aceita vários formatos de conjunto de dados para segmentação de instâncias, sendo o principal o próprio formato Ultralytics YOLO. Cada imagem do conjunto de dados precisa de um arquivo de texto correspondente com as informações dos objetos, organizadas em várias linhas (uma por objeto), que lista o índice da classe e as coordenadas normalizadas dos polígonos. Para instruções mais detalhadas sobre o formato de conjunto de dados YOLO, consulta a visão geral dos conjuntos de dados de segmentação de instâncias.

  • É fácil converter anotações do formato COCO para o formato YOLO com as ferramentas 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 conjunto de dados COCO para o formato YOLO necessário, deixando-o pronto para treinar os teus modelos YOLO. Para mais detalhes, consulta Migrar ou converter formatos de rótulos.

  • Para preparar um arquivo YAML para treinar modelos YOLO com o Ultralytics, precisas definir os caminhos do conjunto de dados e os nomes das classes. Veja 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

    Atualiza os caminhos e os nomes das classes de acordo com o teu conjunto de dados. Para mais informações, consulta a seção Formato YAML do conjunto de dados.

  • A anotação automática do Ultralytics YOLO permite 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")  # ou sam_model="mobile_sam.pt"

    Esta função automatiza o processo de anotação, tornando-o mais rápido e eficiente. Para mais detalhes, consulta a referência de anotação automática.

Comentários