Skip to content

Anotação automática - Anote automaticamente um diretório de imagens inteiro com um único comando. Tão simples quanto dizer: "Anote todas as placas de rua (rótulo) no dataset (diretório)!" Toda e qualquer imagem contendo uma placa de rua no diretório do dataset é filtrada, e a anotação de segmentação é executada em um único comando.

License

Notifications You must be signed in to change notification settings

VoxleOne/Auto-Annotate-BR

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auto-Annotate Logo

Auto-Annotate-BR

Anote imagens de todo um diretório, automaticamente, com um único comando.

Auto-Annotate Version repo size stars

Para uma explicação mais detalhada e aplicação do código, consulte este artigo no Medium.

Tão simples quanto dizer: "Anote todas as placas de rua (rótulo) no dataset (diretório) do carro autônomo". Toda e qualquer imagem no diretório do dataset que contenha uma placa de rua é então filtrada e a anotação de segmentação é executada em um único comando.

Auto-Annotate-BR fornece anotação automática por máscaras de segmentação baseada nos rótulos definidos para os objetos nas imagens de um diretório. A ferramenta é capaz de fornecer anotações automatizadas para os rótulos definidos no dataset COCO e também oferece suporte a rótulos personalizados. Ela é construída sobre a arquitetura Mask R-CNN.

Working Sample: ANNOTATE CUSTOM

A ferramenta de anotação automática funciona em dois modos - COCO e Personalizado.

  • Anotação de rótulo COCO - Nenhum treinamento de modelo é necessário. Basta usar os pesos do dataset COCO. Aponte para o diretório correto e as anotações estão prontas.
  • Anotação de rótulo personalizado - Treine o modelo para seu rótulo personalizado. Use os pesos e anote.

NOTA: Gentileza consultar o arquivo knownIssues.md no repositório, para checar os problemas conhecidos e sua resolução. Sinta-se à vontade para contribuir caso encontre erros/problemas durante a instalação e uso da ferramenta.

FORMATO JSON PARA ANOTAÇÃO

Amostra JSON:

[
  {
    "filename": "bird_house_in_lawn.jpg",
    "id": 1,
    "label": "Bird House",
    "bbox": [ 111.5, 122.5, 73, 66 ],
    "segmentation": [
      [ 167, 188.5, 174, 185.5, 177.5, 181, 177.5, 157, 183.5, 154, 184.5, 149, 159, 124.5, 150, 122.5, 
        142, 124.5, 131, 131.5, 111.5, 150, 111.5, 156, 116.5, 162, 116.5, 184, 121, 188.5, 167, 188.5
      ]
    ]
  }
]

Formato genérico JSON:

[
  {
    "filename": image_file_name,
    "id": id_of_the_image,
    "label": label_to_search_and_annotate,
    "bbox": [ x, y, w, h ], -- x,y coordinate of top left point of bounding box
                            -- w,h width and height of the bounding box
                            Format correspond to coco json response format for bounding box
    "segmentation": [
      [ x1, y1, x2, y2,...] -- For X,Y belonging to the pixel location of the mask segment
                            -- Format correspond to coco json response format for segmentation
    ]
  }
]

IMAGEM ORIGINAL IMAGEM 'MASCARADA'

Instalação

  1. Clone este repositório.

  2. Instale as dependências.

    pip3 install -r requirements.txt
    
  3. Se for anotar objetos suportados pelo COCO Dataset: Baixe pesos COCO pré-treinados (mask_rcnn_coco.h5) do repositório oficial e armazene-os no diretório raiz (root).

    Se for anotar objetos personalizados: Treine Mask RCNN com os mesmos pesos.

  4. Execute os comandos abaixo conforme o modo de uso - Anotar COCO ou Personalizado.

python3 annotate.py annotateCoco --image_directory=/caminho/para/o/diretorio/de/imagens/ --label=rotulo_a_anotar --weights=/caminho/para/os/pesos.h5 --displayMaskedImages=False
python3 annotate.py annotateCustom --image_directory=/caminho/para/o/diretorio/de/imagens/ --label=rotulo_a_anotar --weights=/caminho/para/os/pesos.h5 --displayMaskedImages=False
  1. Confira as anotações no /caminho/para/o/diretorio/de/imagens/ como especificado acima.

Anotando no MS COCO

Use pesos pré-treinados para MS COCO. Podemos executar diretamente da linha de comando da seguinte forma:

# Anotar rótulo definido pelo COCO
python3 annotate.py annotateCoco --image_directory=/caminho/para/o/diretorio/de/imagens/ --label=rotulo_a_anotar --weights=/caminho/para/os/pesos.h5 --displayMaskedImages=False

Nota: --label=rotulo_a_anotar deve estar de acordo com os rótulos do COCO dataset (em inglês - a internacionalização deve ser feita em outra etapa). Consulte COCO Dataset para mais detalhes.

Anotando em imagens personalizadas

Use pesos pré-treinados para rótulos personalizados. Execute diretamente da linha de comando da seguinte forma:

# Annotate Custom
python3 annotate.py annotateCustom --image_directory=/caminho/para/o/diretorio/de/imagens/ --label=rotulo_a_anotar --weights=/caminho/para/os/pesos.h5 --displayMaskedImages=False

Nota: --label=rotulo_a_anotar deve ser um rótulo para o qual tenha sido fornecido peso (ex: 'cow').

Treinando seu próprio dataset

Leia o post original no blog de Waleed Abdulla onde ele explicou o processo, desde a anotação de imagens até o treinamento e o uso dos resultados em um aplicativo de exemplo.

Abaixo O uso de train.py, que é uma versão modificada de balloon.py escrita por Waleed para suportar apenas a fase de treinamento. Muhammad Hamzah é o autor da modificação.

    # Treinar um novo modelo a partir de pesos COCO pretreinados
    python3 customTrain.py train --dataset=/caminho/para/dataset/personalizado/ --weights=coco

    # Retomar o treinamento de um modelo já iniciado:
    python3 customTrain.py train --dataset=/caminhp/para/dataset/personalizado --weights=last

👏 Apoiadores

🔀 Forkers

Forkers repo roster for @mdhmz1/Auto-Annotate

🤝 NOSSO BLOG

About

Anotação automática - Anote automaticamente um diretório de imagens inteiro com um único comando. Tão simples quanto dizer: "Anote todas as placas de rua (rótulo) no dataset (diretório)!" Toda e qualquer imagem contendo uma placa de rua no diretório do dataset é filtrada, e a anotação de segmentação é executada em um único comando.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%