Este repositório foi arquivado e mesclado no Label Studio SDK: https://github.com/HumanSignal/label-studio-sdk/tree/master/src/label_studio_sdk/converter
Site • Documentos • Twitter • Participe da comunidade do Slack
Introdução
Exemplos
JSON
CSV
CoNLL 2003
COCO
XML VOC Pascal
Conversor de YOLO para Label Studio
Uso
Tutorial: Importando imagens pré-anotadas YOLO para o Label Studio usando armazenamento local
Contribuindo
Licença
Label Studio Format Converter ajuda você a codificar rótulos no formato de sua biblioteca de aprendizado de máquina favorita.
Executando a partir da linha de comando:
pip install -U label-studio-converter python label-studio-converter exportar -i exported_tasks.json -c exemplos/sentiment_análise/config.xml -o output_dir -f CSV
Executando em python:
de label_studio_converter importar Converterc = Converter('examples/sentiment_análise/config.xml')c.convert_to_json('examples/sentiment_análise/completions/', 'tmp/output.json')
Obtendo arquivo de saída: tmp/output.json
[ {"reviewText": "Bom caso, excelente valor.","sentiment": "Positivo" }, {"reviewText": "Que desperdício de dinheiro e tempo!","sentiment": "Negativo" }, {"reviewText": "O pescoço de ganso precisa de um pouco de persuasão","sentiment": "Neutro" } ]
Casos de uso: qualquer tarefa
Executando a partir da linha de comando:
python label_studio_converter/cli.py --input exemplos/sentiment_análise/completions/ --config exemplos/sentiment_análise/config.xml --output output_dir --format CSV --csv-separator $'t'
Executando em python:
from label_studio_converter import Converterc = Converter('examples/sentiment_análise/config.xml')c.convert_to_csv('examples/sentiment_análise/completions/', 'output_dir', sep='t', header=True)
Obtendo o arquivo de saída tmp/output.tsv
:
revisãoTextossentimentoBom caso, excelente valor.PositivoQue desperdício de dinheiro e tempo!NegativoO pescoço de ganso precisa de um pouco de persuasãoNeutro
Casos de uso: qualquer tarefa
Executando a partir da linha de comando:
python label_studio_converter/cli.py --input exemplos/named_entity/completions/ --config exemplos/named_entity/config.xml --output tmp/output.conll --format CONLL2003
Executando em python:
de label_studio_converter import Converterc = Converter('examples/named_entity/config.xml')c.convert_to_conll2003('examples/named_entity/completions/', 'tmp/output.conll')
Obtendo o arquivo de saída tmp/output.conll
-DOCSTART- -X- O
Showers -X- _ O
continued -X- _ O
throughout -X- _ O
the -X- _ O
week -X- _ O
in -X- _ O
the -X- _ O
Bahia -X- _ B-Location
cocoa -X- _ O
zone, -X- _ O
...
Casos de uso: marcação de texto
Executando a partir da linha de comando:
python label_studio_converter/cli.py --input exemplos/image_bbox/completions/ --config exemplos/image_bbox/config.xml --output tmp/output.json --format COCO --image-dir tmp/images
Executando em python:
de label_studio_converter import Converterc = Converter('examples/image_bbox/config.xml')c.convert_to_coco('examples/image_bbox/completions/', 'tmp/output.conll', output_image_dir='tmp/images')
As imagens de saída podem ser encontradas em tmp/images
Obtendo o arquivo de saída tmp/output.json
{ "imagens": [ { "largura": 800, "altura": 501, "id": 0, "nome_do_arquivo": "tmp/images/62a623a0d3cef27a51d3689865e7b08a"} ], "categorias": [ { "id": 0, "nome": "Planeta"}, { "id": 1, "nome": "Moonwalker"} ], "anotações": [ { "id": 0, "image_id": 0, "category_id": 0, "segmentação": [], "bbox": [299,6,377,260], "ignorar": 0, "iscrowd": 0, "área ": 98020}, { "id": 1, "image_id": 0, "category_id": 1, "segmentação": [], "bbox": [288,300,132,90], "ignorar": 0, "iscrowd": 0, "área ": 11880} ], "info": {"ano": 2019,"versão": "1.0","contributor": "Label Studio" } }
Casos de uso: detecção de objetos de imagem
Executando a partir da linha de comando:
python label_studio_converter/cli.py --input exemplos/image_bbox/completions/ --config exemplos/image_bbox/config.xml --output tmp/voc-annotations --format VOC --image-dir tmp/images
Executando em python:
de label_studio_converter import Converterc = Converter('examples/image_bbox/config.xml')c.convert_to_voc('examples/image_bbox/completions/', 'tmp/output.conll', output_image_dir='tmp/images')
As imagens de saída podem ser encontradas em tmp/images
As anotações correspondentes podem ser encontradas em tmp/voc-annotations/*.xml
:
tmp/imagens 62a623a0d3cef27a51d3689865e7b08a MeuBancoDeDados COCO2017 flickr NULO NULO Estúdio de Etiquetas 800 501 3 0 Planeta Não especificado 0 0 299 6 676 266 Moonwalker Não especificado 0 0 288 300 420 390
Casos de uso: detecção de objetos de imagem
Verifique primeiro a estrutura da pasta YOLO, lembre-se de que a raiz é /yolo/datasets/one
.
/yolo/datasets/one images - 1.jpg - 2.jpg - ... labels - 1.txt - 2.txt classes.txt
exemplo de classes.txt
Airplane Car
label-studio-converter import yolo -i /yolo/datasets/one -o ls-tasks.json --image-root-url "/data/local-files/?d=one/images"
Onde o caminho da URL de ?d=
é relativo ao caminho que você definiu em LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT
.
Nota para armazenamentos locais
É muito importante definir LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets
( não para /yolo/datasets/one
, mas /yolo/datasets
) para que o Label Studio seja executado.
Adicione um novo armazenamento local nas configurações do projeto e defina o caminho local absoluto como /yolo/datasets/one/images
(ou c:yolodatasetsoneimages
para Windows).
Nota para armazenamento em nuvem
Use --image-root-url
para criar prefixos corretos para URLs de tarefas, por exemplo --image-root-url s3://my-bucket/yolo/datasets/one
.
Adicione um novo Cloud Storage nas configurações do projeto com o bucket e o prefixo correspondentes.
Comando de ajuda
label-studio-converter import yolo -h usage: label-studio-converter import yolo [-h] -i INPUT [-o OUTPUT] [--to-name TO_NAME] [--from-name FROM_NAME] [--out-type OUT_TYPE] [--image-root-url IMAGE_ROOT_URL] [--image-ext IMAGE_EXT] optional arguments: -h, --help show this help message and exit -i INPUT, --input INPUT directory with YOLO where images, labels, notes.json are located -o OUTPUT, --output OUTPUT output file with Label Studio JSON tasks --to-name TO_NAME object name from Label Studio labeling config --from-name FROM_NAME control tag name from Label Studio labeling config --out-type OUT_TYPE annotation type - "annotations" or "predictions" --image-root-url IMAGE_ROOT_URL root URL path where images will be hosted, e.g.: http://example.com/images or s3://my-bucket --image-ext IMAGE_EXT image extension to search: .jpg, .png
Este tutorial irá guiá-lo através do processo de importação de uma pasta com anotações YOLO para o Label Studio para anotações adicionais. Abordaremos a configuração do seu ambiente, a conversão de anotações YOLO para o formato do Label Studio e a importação delas para o seu projeto.
Label Studio instalado localmente
Imagens anotadas YOLO e arquivos de rótulo .txt correspondentes no diretório /yolo/datasets/one
.
label-studio-converter instalado (disponível via pip install label-studio-converter
)
Antes de iniciar o Label Studio, defina as seguintes variáveis de ambiente para ativar o serviço de arquivos de armazenamento local:
Sistemas Unix:
export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets label-studio
Windows:
set LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true set LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=C:yolodatasets label-studio
Substitua /yolo/datasets
pelo caminho real para o diretório de conjuntos de dados YOLO.
Crie um novo projeto.
Vá para as configurações do projeto e selecione Cloud Storage .
Clique em Adicionar armazenamento de origem e selecione Arquivos locais nas opções de tipo de armazenamento .
Defina o caminho local absoluto como /yolo/datasets/one/images
ou c:yolodatasetsoneimages
no Windows.
Clique em Add storage
.
Confira mais detalhes sobre Local Storages na documentação.
Antes de importar as anotações convertidas do YOLO, verifique se você pode acessar uma imagem do seu armazenamento local via Label Studio. Abra uma nova guia do navegador e insira o seguinte URL:
http://localhost:8080/data/local-files/?d=one/images/.jpg
Substitua one/images/
pelo caminho para uma de suas imagens. A imagem deverá ser exibida na nova aba do navegador . Se você não conseguir abrir uma imagem, a configuração do armazenamento local está incorreta. O motivo mais provável é que você cometeu um erro ao especificar seu Path
nas configurações de armazenamento local ou em LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT
.
Nota: O caminho da URL de ?d=
deve ser relativo a LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets
, isso significa que o caminho real será /yolo/datasets/one/images/
e esta imagem deve existir no seu disco dirigir.
Use o label-studio-converter para converter suas anotações YOLO para um formato que o Label Studio possa entender:
label-studio-converter import yolo -i /yolo/datasets/one -o output.json --image-root-url "/data/local-files/?d=one/images"
Agora importe o arquivo output.json
para o Label Studio:
Vá para o seu projeto do Label Studio.
No Data Manager, clique em Importar .
Selecione o arquivo output.json
e importe-o.
Após a importação, você deverá ver suas imagens com as caixas delimitadoras pré-anotadas no Label Studio. Verifique se as anotações estão corretas e faça os ajustes necessários.
Se você encontrar problemas com caminhos ou acesso a imagens, certifique-se de que:
O LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT está definido corretamente.
O --image-root-url
no comando de conversão corresponde ao caminho relativo:
`Absolute local path from Local Storage Settings` - `LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT` = `path for --image_root_url`
por exemplo:
/yolo/datasets/one/images - /yolo/datasets/ = one/images
O armazenamento local no Label Studio está configurado corretamente com o caminho local absoluto para suas imagens ( /yolo/datasets/one/images
)
Para obter mais detalhes, consulte a documentação sobre importação de dados pré-anotados e configuração de Cloud Storages.
Adoraríamos receber sua ajuda para criar conversores para outros modelos. Sinta-se à vontade para criar solicitações pull.
Diretriz de Contribuição
Código de Conduta