Salta para o conteúdo

Visão geral dos conjuntos de dados de segmentação de instâncias

Formatos de conjuntos de dados suportados

Ultralytics YOLO formato

O formato da etiqueta do conjunto de dados utilizado para treinar os modelos de segmentação do YOLO é o seguinte:

  1. Um ficheiro de texto por imagem: Cada imagem do conjunto de dados tem um ficheiro de texto correspondente com o mesmo nome que o ficheiro de imagem e a extensão ".txt".
  2. Uma linha por objeto: Cada linha no ficheiro de texto corresponde a uma instância de objeto na imagem.
  3. Informação 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 de delimitação do objeto: As coordenadas delimitadoras em torno da área da máscara, normalizadas para estarem entre 0 e 1.

O formato para uma única linha no ficheiro do 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 de delimitação da máscara de segmentação do objeto. 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 objectos 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 tem de ser igual.
  • Cada etiqueta de segmentação deve ter um mínimo de 3 pontos xy: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

Formato YAML do conjunto de dados

A estrutura Ultralytics usa um formato de arquivo YAML para definir o conjunto de dados e a configuração do modelo para treinar Modelos de deteção. Aqui está um exemplo do formato YAML usado para definir um conjunto de dados de deteção:

# 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: ../datasets/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 (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

O train e val especificam os caminhos para os directórios que contêm as imagens de treino e de validação, respetivamente.

names é um dicionário de nomes de classes. A ordem dos nomes deve corresponder à ordem dos índices das classes de objectos nos ficheiros do conjunto de dados YOLO .

Utilização

Exemplo

from ultralytics import YOLO

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

# Train the model
results = model.train(data='coco8-seg.yaml', epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

Conjuntos de dados suportados

Conjuntos de dados suportados

  • COCO: Um conjunto de dados abrangente para deteção, segmentação e legendagem de objectos, com mais de 200 mil imagens etiquetadas numa vasta gama de categorias.

  • COCO8-seg: Um subconjunto compacto de 8 imagens do COCO concebido para testar rapidamente a formação do modelo de segmentação, ideal para verificações de IC e validação do fluxo de trabalho no ultralytics repositório.

  • Carparts-seg: Um conjunto de dados especializado centrado na segmentação de peças de automóveis, ideal para aplicações automóveis. Inclui uma variedade de veículos com anotações detalhadas de componentes individuais do automóvel.

  • Crack-seg: Um conjunto de dados concebido para a segmentação de fissuras em várias superfícies. Essencial para a manutenção de infra-estruturas e o controlo de qualidade, fornece imagens detalhadas para modelos de treino que identificam fraquezas estruturais.

  • Package-seg: Um conjunto de dados dedicado à segmentação de diferentes tipos de materiais e formas de embalagens. É particularmente útil para a logística e a automação de armazéns, ajudando no desenvolvimento de sistemas de manuseamento e classificação de embalagens.

Adicionar o teu próprio conjunto de dados

Se tiveres o teu próprio conjunto de dados e quiseres usá-lo para treinar modelos de segmentação com o formato Ultralytics YOLO , certifica-te de que segue o formato especificado acima em "Ultralytics YOLO format". Converte suas 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.

Porta ou converte formatos de etiquetas

Formato do conjunto de dados COCO para YOLO Formato

Podes converter facilmente etiquetas do popular formato de conjunto de dados COCO para o formato YOLO utilizando o seguinte fragmento 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 utilizada 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 pretendes utilizar é compatível com o teu modelo e se segue as convenções de formato necessárias. Os conjuntos de dados corretamente formatados são cruciais para treinar modelos de deteção de objectos bem sucedidos.

Anotação automática

A anotação automática é uma funcionalidade essencial que lhe permite gerar um conjunto de dados de segmentação utilizando um modelo de deteção pré-treinado. Permite-lhe anotar com rapidez e precisão um grande número de imagens sem necessidade de etiquetagem manual, poupando tempo e esforço.

Gera um conjunto de dados de segmentação utilizando um modelo de deteção

Para anotar automaticamente o teu conjunto de dados utilizando a estrutura Ultralytics , podes utilizar o auto_annotate como se mostra abaixo:

Exemplo

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model='sam_b.pt')

Certamente, aqui está a tabela actualizada com trechos de código:

Argumenta Tipo Descrição Predefinição
data str Caminho para uma pasta que contém imagens a serem anotadas. None
det_model str, optional Modelo de deteção YOLO pré-treinado. Usa como predefinição 'yolov8x.pt'. 'yolov8x.pt'
sam_model str, optional Pré-treinado SAM modelo de segmentação. Usa como padrão 'sam_b.pt'. 'sam_b.pt'
device str, optional Dispositivo para executar os modelos. Usa como padrão uma string vazia (CPU ou GPU, se disponível). ''
output_dir str or None, optional Diretório para guardar os resultados anotados. Usa como predefinição um 'labels' no mesmo diretório que a pasta 'data'. None

O auto_annotate A função utiliza o caminho para as tuas imagens, juntamente com argumentos opcionais para especificar a deteção pré-treinada e a SAM modelos de segmentaçãoo dispositivo para executar os modelos e o diretório de saída para guardar os resultados anotados.

Ao aproveitar o poder 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. Esta funcionalidade é particularmente útil para investigadores e programadores que trabalham com grandes colecções de imagens, uma vez que lhes permite concentrarem-se no desenvolvimento e avaliação de modelos em vez da anotação manual.



Criado em 2023-11-12, Atualizado em 2024-04-18
Autores: glenn-jocher (8)

Comentários