Crie uma ferramenta para classificar manualmente imagens de dados de treinamento

7

Eu tenho um grande número de imagens que preciso classificar para o treinamento de um algoritmo de cluster e gostaria de fazê-lo offline (os dados são proprietários). Basicamente, gostaria de criar uma ferramenta de pesquisa de desktop que me permita colocar rapidamente cada imagem em uma ou duas categorias. Idealmente, a ferramenta:

  1. Pesquise em uma pasta da área de trabalho pré-especificada uma imagem;
  2. Exiba a imagem e uma lista estática de categorias, permitindo que eu clique em uma;
  3. Ao clicar, registre a categoria associada à imagem;
  4. Armazene o nome do arquivo da imagem e a categoria associada em um conjunto de dados em algum lugar;
  5. Exiba a próxima imagem não marcada na pasta e repita o processo.

Existe uma maneira fácil de criar esse tipo de ferramenta em Python ou algum outro utilitário pré-criado que eu possa usar gratuitamente offline?

atkat12
fonte
você acabou escrevendo uma ferramenta que gostaria de compartilhar? ou você encontrou mais alguma coisa?
jlarsch
11
Existem algumas ferramentas para fora lá para anotação de imagem, o mais popular e fácil de usar é: github.com/tzutalin/labelImg
olive_tree
Uma outra opção que as pessoas recomendaram é Pybossa ... Eu escrevi uma ferramenta com o Flask, mas era muito desajeitada de configurar e não é ótima. Em algum momento, limparei o código e publicarei o repositório, mas não o recomendo no momento.
Atkat12

Respostas:

2

Eu criei um código que cumpre os 5 requisitos que você possui; ele está disponível no GitHub como image-sorter2 . Comparado com os outros scripts sugeridos aqui, o image-sorter2 é 100% gratuito e você não precisa gastar tempo desenhando caixas delimitadoras - o script simplesmente abre uma GUI para você, você clica em um dos vários botões e corresponde a cada imagem é classificado na pasta de classe desejada, por exemplo, "gatos", "cães", "caminhões" aso

insira a descrição da imagem aqui

NeStack
fonte
Estou mudando o endosso para esta resposta, porque é um aplicativo gratuito e simples, rápido de instalar e funcionar, e facilmente personalizável. No leia-me do Github, também há uma boa lista de opções alternativas. Acabei de revisitar esta tarefa hoje e achei que essa opção funcionava bem ... se você estiver fazendo algo mais sofisticado (como fazer anotações em partes da imagem), outras respostas poderão funcionar melhor.
atkat12
11
@ atkat12 Fico feliz em ver que você achou o código útil, apesar de publicado anos após a sua postagem. Espero que ajude outros usuários também, então obrigado por apoiar!
NeStack 02/12/19
2

Eu recomendaria a criação de seu próprio aplicativo Web suportado por banco de dados, pois você possui dados proprietários e poucas (apenas duas?) Classes. Eu criaria tabelas para as imagens, usuários e rótulos.

usuário: (id, nome)
imagem: (id, url)
rótulo: (user.id, image.id, hora, classe)

A classe label pode ser uma enumeração. Se você não quiser permitir que os usuários classifiquem a mesma imagem várias vezes, solte a coluna de hora e defina as duas primeiras colunas de ID como a chave primária composta.

Se você nunca lidou com aplicativos da Web e bancos de dados, isso parecerá complicado, mas será fácil quando você entender o que está acontecendo. Aqui está um tutorial. O benefício dessa abordagem é a persistência; você pode desligar o computador e começar de onde parou graças ao banco de dados.

Uma alternativa mais simples é coletar todos os seus dados em uma sessão usando componentes da GUI, como ipywidgets for jupyter , e gravando os rótulos em um arquivo. Com essa abordagem, você não obtém persistência.

Emre
fonte
O tutorial parece ótimo e eu não sabia sobre o iPyWidgets. Obrigado por fornecer várias opções!
Atkat12
2

Um ótimo serviço online é o Dataturks . UX super simplificado e fácil de usar. Também suporta seus dados privados em nossa nuvem interna.

insira a descrição da imagem aqui

Também suporta polígonos, segmentação etc.

insira a descrição da imagem aqui

Aqui está uma demonstração que você pode experimentar (sem necessidade de inscrição):

Classificação da imagem de demonstração

PS: Como os navegadores não têm permissão para acessar arquivos diretamente no disco local, talvez seja necessário executar um servidor da Web fictício para obter URLs locais para os arquivos.

user439521
fonte