Skip to content

Latest commit

 

History

History
178 lines (135 loc) · 7.44 KB

README.md

File metadata and controls

178 lines (135 loc) · 7.44 KB

ImageLabelerApp

Приложение для разметки ограничивающих прямоугольников (bounding box) на изображениях. Позволяет настроить список используемых классов и запустить web интерфейс для выполнения разметки.

Конфигурация

Все настройки задаются в файле config.json. Пример конфигурационного файла:

{
    "title": "Заголовок страницы",
    "port": 5000,
    "labels": {
        "text": [255, 0, 0],
        "table": [0, 255, 0],
        "picture": [0, 0, 255]
    },

    "label_mode": "json",
    "bbox_format": "xywh",
    "use_relative": true,

    "sampling": "sequential",
    "images_path": "images",
    "labeled_path": "labeled",
    "labeled_name": "labeled.json"
}

Формат задания классов

Имена классов задаются в виде словаря, в котором ключу соотвествует название класса, а значению список из трёх целых чисел цвета в rgb формате.

Папка с изображениями и результатом разметки

Изображения, которые необходимо разметить должны находиться в папке, задаваемой параметром images_path (по умолчанию images). После разметки очередного изображения оно будет перемещаться в папку с размеченными изображениями, задаваемую параметром labeled_path (по умолчанию labeled, автоматически создаётся, если не существует при первом запуске).

Формат файла с разметкой

Формат результатов разметки зависит от значения label_mode:

  • json - разметкой является словарь, ключами в котором являются имена размеченных изображений, а значениями списки со словарями, описывающими ббоксы и классы. Имя файла с разметкой соответствует параметру labeled_name (по умолчанию labeled.json). Результатом разметки изображения image.png с может быть такой файл labeled.json:
{
    "image.png": [
        {
            "label": "text",
            "x": 0.1,
            "y": 0.1,
            "width": 0.5,
            "height": 0.25
        },

        {
            "label": "table",
            "x": 0.4,
            "y": 0.05,
            "width": 0.2,
            "height": 0.8
        }
    ]
}
  • multiple-json - для каждого изображения с именем filename создаётся файл filename.json, в котором содержится словарь из двух полей - имени изображения и размеченных областей. Результатом разметки изображения image.png с может быть такой файл image.png.json:
{
    "name": "image.png",
    "entities": [
        {
            "label": "text",
            "x": 0.1,
            "y": 0.1,
            "width": 0.5,
            "height": 0.25
        },

        {
            "label": "table",
            "x": 0.4,
            "y": 0.05,
            "width": 0.2,
            "height": 0.8
        }
    ]
}

Режим разметки изображений

Доступны два режима разметки, задаваемые с помощью параметра sampling:

  • sequential - изображения выбираются последовательно, упорядоченно по имени (используется по умолчанию)
  • random - изображения выбираются в случайном порядке

Режимы сохранения ббоксов

Режимы сохранения ббоксов определяются двумя параметрами:

  • bbox_format - определяет формат хранения координат (по умолчанию xywh)
  • use_relative - определяет использование нормализованных координат (по умолчанию true).

Примеры форматов ббоксов

  • xywh - сохраняются координаты левого верхнего угла и ширина с высотой:
{
    "label": "text",
    "x": 0.1,
    "y": 0.1,
    "width": 0.5,
    "height": 0.25
}
  • xyxy - сохраняются координаты левого верхнего и правого нижнего углов
{
    "label": "text",
    "x1": 0.1,
    "y1": 0.1,
    "x2": 0.6,
    "y2": 0.35
}
  • xcycwh - сохраняются координаты центра и ширина с высотой
{
    "label": "text",
    "xc": 0.35,
    "yc": 0.225,
    "width": 0.5,
    "height": 0.25
}

Запуск приложения

  • Перед первым запуском установите все зависимости:
pip install -r requirements.txt
  • Поместите изображения для разметки в папку images_path, указанную в конфиге

  • Запустите систему разметки (интерфейс будет доступен по адресу localhost:port):

python app.py

Доступные действия

Добавление ббокса

Удерживая левую кнопку мыши, переместите курсор в другую точку и отпустите кнопку мыши. Выберите нужную метку в появившемся списке или нажмите номер этой метки на клавиатуре.

Удаление ббокса

Наведите указатель мыши на ббокс и щёлкните правой кнопкой мыши.

Перемещение ббокса

Наведите курсор на ббокс, зажмите левую кнопку мыши, переместите рамку в нужную точку и отпустите кнопку мыши.

Изменение размера ббокса

Наведите указатель мыши на границу ббокса, зажмите левую кнопку мыши, перетащите границу в нужное место и отпустите кнопку.

Масштабирование изображения

Нажмите клавишу + или -, чтобы увеличить или уменьшить масштаб соответственно.

Удаление разметки

Нажмите на кнопку reset.

Сохранение разметки

Нажмите кнопку save. Изображение с разметкой переместится из папки images_path в папку labeled_path. Также будут созданы файл .json с разметкой и тестовое изображение с отрисованной разметкой.