Этот репозиторий был заархивирован и объединен с SDK Label Studio: https://github.com/HumanSignal/label-studio-sdk/tree/master/src/label_studio_sdk/converter.
Веб-сайт • Документы • Twitter • Присоединяйтесь к сообществу Slack
Введение
Примеры
JSON
CSV-файл
КонНЛЛ 2003 г.
КОКО
Паскаль VOC XML
Конвертер YOLO в Label Studio
Использование
Учебное пособие. Импорт изображений с предварительно аннотированными данными YOLO в Label Studio с использованием локального хранилища
Содействие
Лицензия
Конвертер форматов Label Studio помогает кодировать этикетки в формат вашей любимой библиотеки машинного обучения.
Запуск из командной строки:
pip install -U label-studio-converter python label-studio-converter экспорт -i Exported_tasks.json -c примеры/sentiment_anaанализ/config.xml -o выходной_каталог -f CSV
Запуск из Python:
from label_studio_converter import Converterc = Converter('examples/sentiment_anaанализ/config.xml')c.convert_to_json('examples/sentiment_anaанализ/completions/', 'tmp/output.json')
Получение выходного файла: tmp/output.json
[ {"reviewText": "Хороший случай, отличная цена.","sentiment": "Позитивно" }, {"reviewText": "Какая пустая трата денег и времени!","sentiment": "Негативно" }, {"reviewText": "Гусиную шею нужно немного уговорить","sentiment": "Нейтрально" } ]
Варианты использования: любые задачи
Запуск из командной строки:
python label_studio_converter/cli.py --input example/sentiment_anaанализ/completions/ --config example/sentiment_anaанализ/config.xml --output output_dir --format CSV --csv-separator $'t'
Запуск из Python:
from label_studio_converter import Converterc = Converter('examples/sentiment_anaанализ/config.xml')c.convert_to_csv('examples/sentiment_anaанализ/completions/', 'output_dir', sep='t', header=True)
Получение выходного файла tmp/output.tsv
:
отзывТекстсантивыХороший корпус, отличная цена.ПоложительныйКакая пустая трата денег и времени!НегативныйГусиную шею нужно немного уговоритьНейтральный
Варианты использования: любые задачи
Запуск из командной строки:
python label_studio_converter/cli.py --input example/named_entity/completions/ --config example/named_entity/config.xml --output tmp/output.conll --format CONLL2003
Запуск из Python:
из label_studio_converter import Converterc = Converter('examples/named_entity/config.xml')c.convert_to_conll2003('examples/named_entity/completions/', 'tmp/output.conll')
Получение выходного файла 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
...
Варианты использования: текстовые теги
Запуск из командной строки:
python label_studio_converter/cli.py --input example/image_bbox/completions/ --config example/image_bbox/config.xml --output tmp/output.json --format COCO --image-dir tmp/images
Запуск из 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')
Выходные изображения можно найти в tmp/images
Получение выходного файла tmp/output.json
{ "изображения": [ { «ширина»: 800, «высота»: 501, «id»: 0, «имя_файла»: «tmp/images/62a623a0d3cef27a51d3689865e7b08a»} ], "категории": [ { "id": 0, "name": "Планета"}, { "id": 1, "name": "Лунный ходок"} ], "аннотации": [ { "id": 0, "image_id": 0, "category_id": 0, "сегментация": [], "bbox": [299,6,377,260 ], "игнорировать": 0, "iscrowd": 0, "область" ": 98020}, { "id": 1, "image_id": 0, "category_id": 1, "сегментация": [], "bbox": [288,300,132,90 ], "игнорировать": 0, "iscrowd": 0, "область" ": 11880} ], "info": {"year": 2019, "version": "1.0", "contributor": "Label Studio" } }
Варианты использования: обнаружение объекта изображения.
Запуск из командной строки:
python label_studio_converter/cli.py --input example/image_bbox/completions/ --config example/image_bbox/config.xml --output tmp/voc-annotations --format VOC --image-dir tmp/images
Запуск из 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')
Выходные изображения можно найти в tmp/images
Соответствующие аннотации можно найти в tmp/voc-annotations/*.xml
:
<аннотация>tmp/images <имя_файла>62a623a0d3cef27a51d3689865e7b08aимя_файла> <источник>Моя база данных COCO2017 flickr NULL источник> <владелец>NULL Студия этикеток владелец> <размер> <ширина>800ширина> <высота>501высота> <глубина>3глубина> размер> <сегментированный>0сегментированный> <объект>Планета Не указано 0 <сложно>0сложно>объект> <объект> 299 6 676 266 Луноход Не указано 0 <сложно>0сложно>объект> аннотация> 288 300 420 390
Варианты использования: обнаружение объекта изображения.
Сначала проверьте структуру папки YOLO, имейте в виду, что корень — /yolo/datasets/one
.
/yolo/datasets/one images - 1.jpg - 2.jpg - ... labels - 1.txt - 2.txt classes.txt
пример class.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"
Где путь URL-адреса из ?d=
относится к пути, установленному вами в LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT
.
Примечание для локальных хранилищ
Очень важно установить LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets
( не /yolo/datasets/one
, а /yolo/datasets
) для запуска Label Studio.
Добавьте новое локальное хранилище в настройках проекта и установите для абсолютного локального пути значение /yolo/datasets/one/images
(или c:yolodatasetsoneimages
для Windows).
Примечание для облачных хранилищ
Используйте --image-root-url
чтобы создать правильные префиксы для URL-адресов задач, например --image-root-url s3://my-bucket/yolo/datasets/one
.
Добавьте в настройках проекта новое облачное хранилище с соответствующим бакетом и префиксом.
Команда помощи
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
Из этого руководства вы узнаете, как импортировать папку с аннотациями YOLO в Label Studio для дальнейших аннотаций. Мы рассмотрим настройку вашей среды, преобразование аннотаций YOLO в формат Label Studio и их импорт в ваш проект.
Label Studio установлена локально
Изображения с аннотациями YOLO и соответствующие файлы меток .txt в каталоге /yolo/datasets/one
.
label-studio-converter установлен (доступно через pip install label-studio-converter
)
Перед запуском Label Studio установите следующие переменные среды, чтобы включить обслуживание файлов в локальном хранилище:
Unix-системы:
export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets label-studio
Окна:
set LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true set LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=C:yolodatasets label-studio
Замените /yolo/datasets
фактическим путем к каталогу наборов данных YOLO.
Создайте новый проект.
Зайдите в настройки проекта и выберите Cloud Storage .
Нажмите «Добавить исходное хранилище» и выберите «Локальные файлы» в списке «Тип хранилища» .
Установите абсолютный локальный путь /yolo/datasets/one/images
или c:yolodatasetsoneimages
в Windows.
Нажмите Add storage
.
Более подробную информацию о локальных хранилищах можно найти в документации.
Прежде чем импортировать преобразованные аннотации из YOLO, убедитесь, что у вас есть доступ к изображению из локального хранилища через Label Studio. Откройте новую вкладку браузера и введите следующий URL-адрес:
http://localhost:8080/data/local-files/?d=one/images/.jpg
Замените one/images/
на путь к одному из ваших изображений. Изображение должно отобразиться на новой вкладке браузера . Если вы не можете открыть изображение, значит, конфигурация локального хранилища неверна. Наиболее вероятная причина в том, что вы допустили ошибку при указании Path
в настройках локального хранилища или в LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT
.
Примечание. URL-путь от ?d=
должен быть относительным к LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/yolo/datasets
. Это означает, что реальный путь будет /yolo/datasets/one/images/
и это изображение должно существовать на вашем жестком диске. водить машину.
Используйте label-studio-converter для преобразования аннотаций YOLO в формат, понятный Label Studio:
label-studio-converter import yolo -i /yolo/datasets/one -o output.json --image-root-url "/data/local-files/?d=one/images"
Теперь импортируйте файл output.json
в Label Studio:
Перейдите в свой проект Label Studio.
В Диспетчере данных нажмите «Импорт» .
Выберите файл output.json
и импортируйте его.
После импорта вы должны увидеть изображения с предварительно аннотированными ограничивающими рамками в Label Studio. Убедитесь, что аннотации верны, и внесите необходимые изменения.
Если у вас возникли проблемы с путями или доступом к изображениям, убедитесь, что:
LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT установлен правильно.
--image-root-url
в команде преобразования соответствует относительному пути:
`Absolute local path from Local Storage Settings` - `LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT` = `path for --image_root_url`
например:
/yolo/datasets/one/images - /yolo/datasets/ = one/images
Локальное хранилище в Label Studio настроено правильно с абсолютным локальным путем к вашим изображениям ( /yolo/datasets/one/images
).
Более подробную информацию можно найти в документации по импорту предварительно аннотированных данных и настройке облачных хранилищ.
Мы будем рады получить от вас помощь в создании конвертеров в другие модели. Пожалуйста, не стесняйтесь создавать запросы на включение.
Руководство по вкладу
Нормы поведения