Anotação de Polígonos para Tarefas de Segmentação
Configure ferramentas de desenho de polígonos no Potato para tarefas de segmentação de imagens, com dicas para formas complexas, regiões sobrepostas, polígonos multiclasse e exportação para o formato COCO.
Polígonos permitem traçar os limites de um objeto pixel a pixel, que é exatamente o que a segmentação semântica e de instâncias exige. Este guia percorre a configuração, as técnicas de desenho e o que fazer quando as formas ficam confusas.
Polígonos vs. caixas delimitadoras
| Use Polígonos Quando | Use Caixas Delimitadoras Quando |
|---|---|
| São necessários limites precisos | A localização aproximada é suficiente |
| As formas dos objetos são irregulares | Os objetos são aproximadamente retangulares |
| Você treina modelos de segmentação | Você treina modelos de detecção |
| Os objetos se sobrepõem | Os objetos não se sobrepõem |
| É exigida maior precisão | A velocidade é a prioridade |
Configuração básica de polígonos
annotation_task_name: "Image Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: segments
description: "Draw polygons around each object"
labels:
- name: road
color: "#808080"
- name: sidewalk
color: "#F5F5DC"
- name: building
color: "#8B4513"
- name: vegetation
color: "#228B22"
- name: sky
color: "#87CEEB"
- name: vehicle
color: "#FF6B6B"
- name: person
color: "#4ECDC4"Desenhando polígonos
O fluxo de trabalho básico
- Escolha um rótulo na barra de ferramentas
- Clique para adicionar vértices ao redor do objeto
- Dê um duplo clique ou pressione Enter para fechar o polígono
- Arraste os vértices para ajustá-los
- Clique em uma aresta para adicionar um ponto
Atalhos de teclado
O Potato vem com atalhos para edição de polígonos:
- Enter: fecha o polígono atual
- Escape: cancela o desenho ou desfaz a seleção
- Delete: remove o vértice ou polígono selecionado
- +/-: amplia e reduz o zoom
- Espaço + arrastar: move a imagem
Quando as coisas ficam complicadas
Objetos sobrepostos
Quando os objetos se sobrepõem, os anotadores simplesmente desenham vários polígonos que se sobrepõem. O Potato armazena cada um separadamente, então você obtém anotação no nível de instância mesmo onde os objetos se ocultam mutuamente.
Limites complicados
Para objetos com limites irregulares e curvos:
- Adicione mais vértices nas arestas curvas para que a forma fique precisa
- Amplie o zoom antes de traçar as partes mais delicadas
- Percorra o perímetro em ordem, em vez de pular de um lado para o outro
- Depois, mude para o modo de edição para ajustar os vértices no lugar
Configuração de segmentação semântica
Para a segmentação da imagem inteira:
annotation_task_name: "Semantic Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: semantic_segments
description: "Segment the entire image"
labels:
- name: background
color: "#000000"
- name: road
color: "#808080"
- name: sidewalk
color: "#F5F5DC"
- name: building
color: "#8B4513"
- name: vegetation
color: "#228B22"
- name: sky
color: "#87CEEB"
- name: person
color: "#4ECDC4"
- name: vehicle
color: "#FF6B6B"Configuração de segmentação de instâncias
Para instâncias individuais de objetos:
annotation_task_name: "Instance Segmentation"
data_files:
- "data/images.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: instances
description: "Draw polygons around each object instance"
labels:
- name: person
color: "#4ECDC4"
- name: car
color: "#FF6B6B"
- name: dog
color: "#FFEAA7"Cada polígono é armazenado como sua própria anotação, então você pode acompanhar instâncias individuais dentro de cada classe de objeto.
Exemplo de configuração completa
annotation_task_name: "Cityscapes-style Segmentation"
data_files:
- "data/urban_scenes.json"
annotation_schemes:
- annotation_type: image_annotation
tools: [polygon]
name: segments
description: "Segment all objects following Cityscapes protocol"
labels:
# Flat
- name: road
color: "#804080"
- name: sidewalk
color: "#F423E8"
# Construction
- name: building
color: "#464646"
- name: wall
color: "#666666"
- name: fence
color: "#BE9999"
# Nature
- name: vegetation
color: "#6B8E23"
- name: terrain
color: "#98FB98"
# Sky
- name: sky
color: "#4682B4"
# Human
- name: person
color: "#DC143C"
- name: rider
color: "#FF0000"
# Vehicle
- name: car
color: "#00008B"
- name: truck
color: "#000046"
- name: bus
color: "#003C64"
- name: motorcycle
color: "#0000E6"
- name: bicycle
color: "#770B20"Formato de saída
As anotações de polígono aparecem na saída com as coordenadas de cada vértice:
{
"id": "img001",
"annotations": {
"segments": [
{
"label": "road",
"points": [[0, 600], [100, 580], [200, 590], [0, 600]]
},
{
"label": "car",
"points": [[450, 400], [520, 400], [520, 480], [450, 480]]
}
]
}
}Dicas para polígonos limpos
- Amplie para 2x ou mais quando estiver traçando limites detalhados.
- Aprenda os atalhos de teclado. Eles são muito mais rápidos do que recorrer à barra de ferramentas.
- Trace um contorno aproximado primeiro e depois volte para refiná-lo.
- Use o menor número de vértices que ainda capture a forma. Mais não é melhor.
- Faça pausas. O trabalho detalhado com polígonos cansa rápido.
Para onde ir em seguida
- Combine isto com caixas delimitadoras para fluxos de trabalho híbridos
- Configure controle de qualidade para segmentação
- Conheça a segmentação de vídeo para dados temporais
Para tudo o que o tipo de anotação de imagem pode fazer (polygon, bbox e as demais ferramentas de desenho), consulte a documentação de origem.
Veja /docs/features/image-annotation para a documentação completa de polígonos.