Este repositorio se ha archivado y fusionado en el SDK de Label Studio: https://github.com/HumanSignal/label-studio-sdk/tree/master/src/label_studio_sdk/converter
Sitio web • Documentos • Twitter • Únase a la comunidad de Slack
Introducción
Ejemplos
JSON
CSV
CONLL 2003
PALMA DE COCO
Pascal VOC XML
Convertidor de YOLO a Label Studio
Uso
Tutorial: Importación de imágenes preanotadas de YOLO a Label Studio usando el almacenamiento local
Contribuyendo
Licencia
Label Studio Format Converter le ayuda a codificar etiquetas en el formato de su biblioteca de aprendizaje automático favorita.
Ejecutando desde la línea de comando:
instalación de pip -U convertidor-de-estudio-etiqueta python label-studio-converter export -i exported_tasks.json -c ejemplos/sentiment_analysis/config.xml -o output_dir -f CSV
Ejecutando desde Python:
from label_studio_converter import Converterc = Converter('examples/sentiment_analysis/config.xml')c.convert_to_json('examples/sentiment_analysis/completions/', 'tmp/output.json')
Obteniendo el archivo de salida: tmp/output.json
[ {"reviewText": "Buen caso, excelente relación calidad-precio.","sentiment": "Positivo" }, {"reviewText": "¡Qué pérdida de dinero y tiempo!", "sentiment": "Negativo" }, {"reviewText": "El cuello de ganso necesita un poco de persuasión","sentiment": "Neutral" } ]
Casos de uso: cualquier tarea
Ejecutando desde la línea de comando:
python label_studio_converter/cli.py --input ejemplos/sentiment_analysis/completions/ --config ejemplos/sentiment_analysis/config.xml --output salida_dir --formato CSV --csv-separator $'t'
Ejecutando desde Python:
from label_studio_converter import Converterc = Converter('examples/sentiment_analysis/config.xml')c.convert_to_csv('examples/sentiment_analysis/completions/', 'output_dir', sep='t', header=True)
Obteniendo el archivo de salida tmp/output.tsv
:
reseñaTextosentimientoBuen estuche, excelente relación calidad-precio.Positivo¡Qué pérdida de dinero y tiempo!NegativoEl cuello de ganso necesita un poco de persuasiónNeutral
Casos de uso: cualquier tarea
Ejecutando desde la línea de comando:
python label_studio_converter/cli.py --input ejemplos/named_entity/completions/ --config ejemplos/named_entity/config.xml --output tmp/output.conll --format CONLL2003
Ejecutando desde Python:
from label_studio_converter import Converterc = Converter('examples/named_entity/config.xml')c.convert_to_conll2003('examples/named_entity/completions/', 'tmp/output.conll')
Obteniendo el archivo de salida 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: etiquetado de texto
Ejecutando desde la línea de comando:
python label_studio_converter/cli.py --input ejemplos/image_bbox/completions/ --config ejemplos/image_bbox/config.xml --output tmp/output.json --format COCO --image-dir tmp/images
Ejecutando desde Python:
from 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')
Las imágenes de salida se pueden encontrar en tmp/images
Obteniendo el archivo de salida tmp/output.json
{ "imágenes": [ { "ancho": 800, "alto": 501, "id": 0, "nombre_archivo": "tmp/images/62a623a0d3cef27a51d3689865e7b08a"} ], "categorías": [ { "id": 0, "nombre": "Planeta"}, { "id": 1, "nombre": "Moonwalker"} ], "anotaciones": [ { "id": 0, "image_id": 0, "category_id": 0, "segmentación": [], "bbox": [299,6,377,260], "ignorar": 0, "iscrowd": 0, "área ": 98020}, { "id": 1, "image_id": 0, "category_id": 1, "segmentación": [], "bbox": [288,300,132,90], "ignorar": 0, "iscrowd": 0, "área ": 11880} ], "info": {"año": 2019,"versión": "1.0","contributor": "Label Studio" } }
Casos de uso: detección de objetos de imagen
Ejecutando desde la línea de comando:
python label_studio_converter/cli.py --ejemplos de entrada/image_bbox/completions/ --ejemplos de configuración/image_bbox/config.xml --salida tmp/voc-annotations --formato VOC --image-dir tmp/images
Ejecutando desde Python:
from 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')
Las imágenes de salida se pueden encontrar en tmp/images
Las anotaciones correspondientes se pueden encontrar en tmp/voc-annotations/*.xml
:
tmp/imágenes 62a623a0d3cef27a51d3689865e7b08a Mi base de datos COCO2017 flickr NULL NULL Estudio de etiquetas 800 501 3 0 Planeta Sin especificar 0 0 299 6 676 266 Caminante lunar Sin especificar 0 0 288 300 420 390
Casos de uso: detección de objetos de imagen
Primero verifique la estructura de la carpeta YOLO, tenga en cuenta que la raíz es /yolo/datasets/one
.
/yolo/datasets/one images - 1.jpg - 2.jpg - ... labels - 1.txt - 2.txt classes.txt
ejemplo de clases.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"
Donde la ruta URL desde ?d=
es relativa a la ruta que estableció en LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT
.
Nota para almacenamientos locales
Es muy importante configurar LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets
( no en /yolo/datasets/one
, sino /yolo/datasets
) para que se ejecute Label Studio.
Agregue un nuevo Almacenamiento local en la configuración del proyecto y establezca la ruta local absoluta en /yolo/datasets/one/images
(o c:yolodatasetsoneimages
para Windows).
Nota para almacenamientos en la nube
Utilice --image-root-url
para crear prefijos correctos para las URL de tareas, por ejemplo --image-root-url s3://my-bucket/yolo/datasets/one
.
Agregue un nuevo Cloud Storage en la configuración del proyecto con el depósito y el prefijo correspondientes.
Comando de ayuda
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 lo guiará a través del proceso de importar una carpeta con anotaciones YOLO a Label Studio para realizar más anotaciones. Cubriremos la configuración de su entorno, la conversión de anotaciones de YOLO al formato de Label Studio y su importación a su proyecto.
Label Studio instalado localmente
Imágenes anotadas de YOLO y archivos de etiquetas .txt correspondientes en el directorio /yolo/datasets/one
.
label-studio-converter instalado (disponible a través de pip install label-studio-converter
)
Antes de iniciar Label Studio, configure las siguientes variables de entorno para habilitar el servicio de archivos de almacenamiento local:
Sistemas Unix:
export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets label-studio
Ventanas:
set LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true set LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=C:yolodatasets label-studio
Reemplace /yolo/datasets
con la ruta real a su directorio de conjuntos de datos YOLO.
Crea un nuevo proyecto.
Vaya a la configuración del proyecto y seleccione Almacenamiento en la nube .
Haga clic en Agregar almacenamiento de origen y seleccione Archivos locales en las opciones de Tipo de almacenamiento .
Establezca la ruta local absoluta en /yolo/datasets/one/images
o c:yolodatasetsoneimages
en Windows.
Haga clic en Add storage
.
Consulte más detalles sobre los almacenamientos locales en la documentación.
Antes de importar las anotaciones convertidas desde YOLO, verifique que pueda acceder a una imagen desde su almacenamiento local a través de Label Studio. Abra una nueva pestaña del navegador e ingrese la siguiente URL:
http://localhost:8080/data/local-files/?d=one/images/.jpg
Reemplace one/images/
con la ruta a una de sus imágenes. La imagen debería aparecer en la nueva pestaña del navegador . Si no puede abrir una imagen, la configuración del almacenamiento local es incorrecta. La razón más probable es que cometió un error al especificar su Path
en la configuración de Almacenamiento local o en LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT
.
Nota: La ruta URL de ?d=
debe ser relativa a LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets
, significa que la ruta real será /yolo/datasets/one/images/
y esta imagen debería existir en su disco duro. conducir.
Utilice label-studio-converter para convertir sus anotaciones de YOLO a un formato que Label Studio pueda entender:
label-studio-converter import yolo -i /yolo/datasets/one -o output.json --image-root-url "/data/local-files/?d=one/images"
Ahora importe el archivo output.json
a Label Studio:
Vaya a su proyecto de Label Studio.
Desde el Administrador de datos, haga clic en Importar .
Seleccione el archivo output.json
e impórtelo.
Después de importar, debería ver sus imágenes con los cuadros delimitadores previamente anotados en Label Studio. Verifique que las anotaciones sean correctas y realice los ajustes necesarios.
Si tiene problemas con las rutas o el acceso a las imágenes, asegúrese de que:
LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT está configurado correctamente.
La --image-root-url
en el comando de conversión coincide con la ruta relativa:
`Absolute local path from Local Storage Settings` - `LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT` = `path for --image_root_url`
p.ej:
/yolo/datasets/one/images - /yolo/datasets/ = one/images
El almacenamiento local en Label Studio está configurado correctamente con la ruta local absoluta a sus imágenes ( /yolo/datasets/one/images
)
Para obtener más detalles, consulte la documentación sobre la importación de datos previamente anotados y la configuración de Cloud Storages.
Nos encantaría recibir su ayuda para crear convertidores a otros modelos. No dude en crear solicitudes de extracción.
Guía de contribución
Código de conducta