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
:
<?xml versión="1.0" codificación="utf-8"?> <anotación> <carpeta>tmp/imágenes</carpeta> <nombre de archivo>62a623a0d3cef27a51d3689865e7b08a</nombre de archivo> <fuente> <base de datos>Mi base de datos</base de datos> <annotation>COCO2017</annotation> <image>flickr</image> <flickrid>NULL</flickrid> </fuente> <propietario> <flickrid>NULL</flickrid> <nombre>Estudio de etiquetas</nombre> </propietario> <tamaño> <ancho>800</ancho> <altura>501</altura> <profundidad>3</profundidad> </tamaño> <segmentado>0</segmentado> <objeto> <nombre>Planeta</nombre> <pose>Sin especificar</pose> <truncado>0</truncado> <difícil>0</difícil> <bndbox> <xmin>299</xmin> <ymin>6</ymin> <xmax>676</xmax> <ymax>266</ymax> </bndbox> </objeto> <objeto> <nombre>Caminante lunar</nombre> <pose>Sin especificar</pose> <truncado>0</truncado> <difícil>0</difícil> <bndbox> <xmin>288</xmin> <ymin>300</ymin> <xmax>420</xmax> <ymax>390</ymax> </bndbox> </objeto> </anotación>
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 en 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/<your_image>.jpg
Reemplace one/images/<your_image>.jpg
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/<your_image>.jpg
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