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