Saltar para o conteúdo

Descriçã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ções sobre o 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.

Eis um exemplo do formato do 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 utiliza um formato de ficheiro 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 utilizado 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 diretó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("yolo11n-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 segment train data=coco8-seg.yaml model=yolo11n-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.
  • COCO128-seg: Um conjunto de dados mais pequeno para tarefas de segmentação de exemplos, contendo um subconjunto de 128 imagens COCO com anotações de segmentação.
  • 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 dos componentes individuais dos automóveis.
  • 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 automatização de armazéns, ajudando no desenvolvimento de sistemas de manuseamento e triagem de embalagens.

Adicionar o seu próprio conjunto de dados

Se você tiver seu próprio conjunto de dados e quiser usá-lo para treinar modelos de segmentação com o formato Ultralytics YOLO , certifique-se de que ele siga o formato especificado acima em "Ultralytics YOLO format". Converta suas anotações para o formato necessário e especifique os caminhos, o número de classes e os nomes das classes no arquivo de configuração YAML.

Portar ou converter formatos de etiquetas

Formato do conjunto de dados COCO para YOLO Formato

Pode 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 .

Lembre-se de verificar novamente se o conjunto de dados que pretende utilizar é compatível com o seu modelo e se segue as convenções de formato necessárias. Os conjuntos de dados corretamente formatados são cruciais para o treino de 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.

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

Para anotar automaticamente o seu conjunto de dados utilizando a estrutura Ultralytics , pode utilizar o auto_annotate como mostrado abaixo:

Exemplo

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")
Argumento 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. A predefinição é 'yolo11x.pt'. 'yolo11x.pt'
sam_model str, optional Modelo de segmentação SAM pré-treinado. A predefinição é 'sam_b.pt'. 'sam_b.pt'
device str, optional Dispositivo no qual os modelos devem ser executados. A predefinição é uma cadeia de caracteres vazia (CPU ou GPU, se disponível). ''
output_dir str or None, optional Diretório para guardar os resultados anotados. A predefinição é um 'labels' no mesmo diretório que o 'data'. None

O auto_annotate recebe o caminho para as suas imagens, juntamente com argumentos opcionais para especificar a deteção pré-treinada e a SAM modelos de segmentaçãoo dispositivo onde 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.

FAQ

Que formatos de conjuntos de dados é que Ultralytics YOLO suporta para a segmentação de instâncias?

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

Como é que posso converter as anotações do conjunto de dados COCO para o formato YOLO ?

A conversão de anotações em formato COCO para o formato YOLO é simples, utilizando as ferramentas Ultralytics . Pode utilizar as ferramentas convert_coco da função ultralytics.data.converter módulo:

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 seu conjunto de dados COCO para o formato YOLO necessário, tornando-o adequado para treinar os seus modelos YOLO . Para obter mais detalhes, consulte Portar ou converter formatos de rótulo.

Como é que preparo um ficheiro YAML para treinar modelos Ultralytics YOLO ?

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

path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')

names:
    0: person
    1: bicycle
    2: car
    # ...

Certifique-se de que actualiza os caminhos e os nomes das classes de acordo com o seu conjunto de dados. Para obter mais informações, consulte a secção Formato YAML do conjunto de dados.

O que é a funcionalidade de anotação automática em Ultralytics YOLO ?

A anotação automática em Ultralytics YOLO permite-lhe gerar anotações de segmentação para o seu conjunto de dados utilizando um modelo de deteção pré-treinado. Isso reduz significativamente a necessidade de rotulagem manual. Pode utilizar o auto_annotate funcionam da seguinte forma:

from ultralytics.data.annotator import auto_annotate

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

Esta função automatiza o processo de anotação, tornando-o mais rápido e eficiente. Para mais informações, consulte a secção Anotação automática.

📅C riado há 1 ano ✏️ Atualizado há 2 meses

Comentários