Настройка шаблонов сегментации
Параметры сегментации
Шаблоны настраиваются в проекте на вкладке Интерфейс. Общие параметры настройки интерфейса описаны в разделе Блок Config. Также в блоке Config есть специфические параметры для шаблонов сегментации:
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
groupsEnabled |
Нет |
boolean |
Возможность разметчикам группировать фрагменты. Значение по умолчанию — false |
rotationEnabled |
Нет |
boolean |
Возможность поворота изображения во время разметки. Доступно для сегментации изображений и PDF. Значение по умолчанию — false |
expandWord |
Нет |
boolean |
Если true, то выделяется все слово. Доступно для сегментации текста. Значение по умолчанию — false |
expandWordRegExp |
Нет |
string |
Регулярное выражение для определения границы слова. Доступно для сегментации текста. Значение по умолчанию — "[^\\s.,] |
entities |
Да |
object |
Классы для сегментации |
onthologyStructure |
Нет |
object |
Структура онтологии |
customEntitiesEnabled |
Нет |
boolean |
Возможность разметчикам добавлять новые классы. Доступно для сегментации текста и изображений. Значение по умолчанию — false |
stepSize |
Нет |
number |
Размер шага перемотки для сегментаций видео и аудио. Значение по умолчанию для сегментации аудио — 0.01, для сегментации видео — 0.0333 |
searchAutoFocus |
Нет |
boolean |
Возможность автофокусировки на поле поиска классов при загрузке задания |
annotationAutoOpen |
Нет |
boolean |
Возможность автоматического отображения аннотаций при выделении фрагмента или выборе класса |
entityChangeIcon |
Нет |
boolean |
Возможность разметчикам изменить класс фрагмента на другой с таким же инструемнтом |
Настройка классов
Классы настраиваются в объекте entities:
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
id |
Да |
string |
Идентификатор класса |
name |
Да |
string |
Название класса |
tooltip |
Нет |
string |
Подсказка к классу. Можно использовать HTML-разметку для оформления текста |
color |
Нет |
string |
Цвет класса |
type |
Да |
string |
Тип инструмента выделения фрагментов. Используется для сегментации изображений, аудио и видео |
hotKey |
Нет |
string |
Горячая клавиша для класса. Можно использовать цифры и буквы |
maxAmount |
Нет |
number |
Максимальное количество фрагментов данного класса. Используется во вложенных классах. |
options |
Нет |
object |
Объект, в котором можно указать дополнительные настройки. Используется в сегментации изображений для настройки инструмента Прямоугольник. Подробнее — в пункте Поворот фрагмента. |
fields |
Нет |
array |
Массив для настройки аннотации класса |
{
"id": "entity-1",
"name": "Первый класс",
"tooltip": "Подсказка к классу",
"type": "polygon",
"hotKey": "1"
}
Результат разметки
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
marks |
Да |
array |
Массив размеченных фрагментов |
meta |
Нет |
object |
Метаинформация об объектах разметки. Например в сегментации изображений imageWidth и imageHeight |
Аннотация
Аннотация — это раздел, в котором разметчик может внести дополнительную информацию о фрагменте или ответить на вопросы о нем.
Чтобы аннотация автоматически отображалась разметчикам, используйте параметр annotationAutoOpen в блоке Config.
Аннотация для каждого класса настраивается в объекте fields.
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
type |
Да |
string |
Тип элемента. Возможные значения: — — — — — |
name |
Да |
string |
Ключ элемента, должен быть уникальным в рамках класса. Отображается в результатах разметки |
title |
Нет |
string |
Заголовок элемента |
placeholder |
Нет |
string |
Подсказка в полях для ввода текста |
options |
Нет |
array |
Массив с вариантами ответов для типов — |
"entities": [
{
"id": "entity-1",
"name": "1. Первый класс",
"tooltip": "Подсказка к классу",
"hotKey": "1",
"entities": [
{
"id": "entity-12",
"name": "Подкласс",
"tooltip": "Подсказка к классу",
"color": "red",
"hotKey": "A"
}
],
"fields": [
{
"type": "input",
"name": "input",
"title": "Название объекта",
"placeholder": "Объект"
},
{
"type": "textarea",
"name": "textarea",
"title": "Описание",
"placeholder": "Одно или два предложения об объекте"
},
{
"type": "checkbox",
"name": "checkbox",
"title": "Объект правильный",
"options": [
{
"title": "Да",
"value": "yes"
},
{
"title": "Нет",
"value": "no"
}
]
},
{
"type": "radio",
"name": "radio",
"title": "Объект правильный",
"options": [
{
"title": "Да",
"value": "yes"
},
{
"title": "Нет",
"value": "no"
}
]
},
{
"type": "select",
"name": "select",
"title": "Цвет объекта",
"options": [
{
"title": "Красный",
"value": "red"
},
{
"title": "Желтый",
"value": "yellow"
},
{
"title": "Зеленый",
"value": "green"
}
]
}
]
}
]
Подсказки
Чтобы разметчики не запутались в классах сегментации, добавьте всплывающие подсказки в параметре tooltip в блоке Config.
При верстке подсказки вы можете использовать основные инструменты оформления текста:
-
\n— перенос на новую строку. -
\t— табуляция. -
<b>— жирный текст. -
<i>— курсив. -
<u>— подчеркнутый текст.
Вы также можете настроить ширину окна всплывающей подсказки в блоке CSS. Например:
.tooltip-container {
max-width: 500px;
width: 500px;
}
Группировка фрагментов
Если нужно, чтобы разметчики дополнительно группировали фрагменты размеченных объектов, добавьте в блоке Config параметр "groupsEnabled": true.
Функция доступна в следующих шаблонах:
-
Сегментация текста.
-
Сегментация изображений.
-
Шаблоны раздела Диалоги.
-
Шаблоны раздела Дополнительные.
Режим Read only
Шаблоны сегментации аудио, видео, изображений поддерживают режим "read only". В этом режиме будут отключены любые действия, направленные на редактирование результатов разметки или создание новых элементов. Интерактивность и вся функциональность, нужная для просмотра и валидации разметки, сохранится.
| Панель онтологии в режиме "read only" продолжает быть доступной для редактирования. |
Для включения режима "read only" необходимо в теге нужного компонента указать атрибут readOnly="true".
Пример. Блок HTML
----
<tm-forms-audio src="{{audio}}" readOnly="true"></tm-forms-audio>
----
Сегментация текста
Онтология
Онтология — это вкладка в задачах сегментации текста, где разметчики могут указать дополнительную информацию о тексте.
Например, если объект разметки — юридический документ, то для него можно указать тип документа, реквизиты заказчика и исполнителя и т. д. Также можно добавить в онтологию выделенный фрагмент текста, например, дату или сумму договора.
Онтология настраивается в блоке Config в параметре onthologyStructure. Здесь вы можете добавлять элементы онтологии и настраивать их формат с помощью параметра type. Возможные значения параметра:
-
node— раздел; -
dynamicNode— раздел с возможностью удаления. ДляdynamicNodeможно задать количество дублирующих разделов с помощью атрибутовminиmax; -
textField— поле для ввода однострочного текста; -
textArea— поле для ввода многострочного текста; -
checkbox— чекбокс; -
radio— радиокнопка; -
select— поле с выбором значения; -
fragment— добавление фрагмента текста с классом.
Параметры:
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
name |
Да |
string |
Заголовок раздела или элемента |
type |
Да |
string |
Тип элемента. Возможные значения см. выше |
fields |
Нет |
array |
Массив с вложенными элементами. Используется в элементах: |
required |
Нет |
boolean |
Признак обязательности элемента |
availableClasses |
Нет |
string[] |
Доступные для выбора id классов. При отсутствии этой опции разрешается выбирать любой. Используется в элементах: |
min |
Да — для |
number |
Минимальное количество фрагментов, которые пользователь может выделить в тексте. Если значение 0 — элемент необязательный, если больше нуля — обязательный. Используется в элементах: |
max |
Да — для |
number |
Максимальное количество фрагментов, которые пользователь может выделить в тексте. Используется в элементах: |
values |
Да — для |
array |
Массив с вариантами ответа. Содержит параметры: * key — ключ варианта; * value — название варианта. Используется в элементах: |
Пример:
"onthologyStructure": {
"name": "Реквизиты документа",
"type": "node",
"fields": [
{
"name": "Общие реквизиты",
"type": "node",
"fields": [
{
"name": "Номер и дата",
"type": "textField",
"required": false
},
{
"name": "Тип документа",
"type": "select",
"values": [
{
"key": "1",
"value": "Договор"
},
{
"key": "2",
"value": "Соглашение"
},
{
"key": "3",
"value": "Уведомление"
}
]
}
]
},
{
"name": "Заказчик",
"type": "dynamicNode",
"min": 1,
"max": 7,
"fields": [
{
"name": "Название организации",
"type": "textField",
"required": true
},
{
"name": "Реквизиты организации",
"type": "fragment",
"availableClasses": ["entity-1", "entity-2"]
"min": 0,
"max": 7
}
]
},
{
"name": "Исполнитель",
"type": "dynamicNode",
"min": 1,
"max": 7,
"fields": [
{
"name": "Название организации",
"type": "textField",
"required": true
},
{
"name": "Реквизиты организации",
"type": "fragment",
"min": 1,
"max": 7
}
]
}
]
}
Вложенность классов
Вы можете настроить связь между классами типа «родитель-ребенок». Например, разметчик должен выделить в тексте фрагмент с классом «Адрес», и только после этого ему станут доступны дочерние классы «Город» и «Улица».
Чтобы вложить один класс в другой, добавьте в родительский класс массив entities. Например:
"entities": [
{
"id": "entity-1",
"name": "1. Первый класс",
"tooltip": "Подсказка к классу",
"hotKey": "1",
"entities": [
{
"id": "entity-12",
"name": "Подкласс",
"tooltip": "Подсказка к классу",
"color": "red",
"hotKey": "A"
}
]
}
]
Сегментация изображений
| Вы также можете загрузить отдельные классы для каждой задачи, используя SDK. Пример смотрите в разделе Примеры запросов. |
Инструменты выделения
Если вы выбрали шаблон Сегментация изображений, настройте в каждом классе инструмент выделения фрагментов. Для этого укажите название инструмента в параметре type в блоке Config:
-
polygon — многоугольник.
-
bbox — прямоугольник.
-
ellipse — эллипс.
-
brush — кисть.
-
smart_brush - умная кисть
-
keypoint — ключевые точки.
Поворот изображения
Что бы включить возможность поворота изображения во время разметки, укажите параметр "rotationEnabled": true в CONFIG секции настройки интерфейса.
Поворот изображения осуществляется на 90, 180 и 270 градусов. Угол поворота не влияет на результат разметки и применяется только к отображению в интерфейсе.
Результат поворота попадает в результат разметки. На расчет качества и согласованности это не влияет. Если нужно учитывать угол поворота при расчете качества, добавьте это поле в секцию SPECIFICATION в настройках интерфейса.
Пример ответа разметчика:
{
"marks": [],
"rotation": 90,
"imageMeta": {
"width": 654,
"height": 846
}
}
Поворот фрагмента
Чтобы настроить возможность поворота выделенного фрагмента для инструмента Прямоугольник, укажите в нужном классе параметр "rotated": true в объекте options. Например:
{
"id": "entity-2",
"name": "Второй класс",
"color": "green",
"type": "bbox",
"options": {"rotated": true}
},
Штриховка и заливка фрагментов
Чтобы сделать фрагменты более заметными на изображении, настройте штриховку и заливку. Для этого добавьте в класс объект fill с параметрами:
-
stripesSize— толщина линий штриховки. -
backgroundEnabled— признак того, требуется ли заливка фрагмента.
Пример:
"fill": {
"stripesSize": 4,
"backgroundEnabled": true
},
Функция доступна для инструментов:
-
многоугольник (polygon),
-
прямоугольник (bbox),
-
эллипс (ellipse).
Ограничение количества keypoint
У инструмента keypoint есть возможность ограничить количество точек, которые сможет проставить разметчик в одном классе Для этого в конфигурации класса необходимо добавить аттрибут "max":
Пример:
{
"id": "keypoint-entity-id",
"name": "Углы треугольника",
"max": 3,
"color": "red",
"type": "keypoint"
}
Сегментация последовательности
Шаблон предназначен для разметки последовательностей изображений (видеокадров) с помощью инструментов сегментации (bbox, ellipse) с поддержкой функции трекинга объектов и возможностью добавления аннотаций.
Интерфейс состоит из трёх основных блоков: - Центральная часть – рабочая область с изображением для разметки и навигация по кадрам. - Левая панель – список классов для разметки. - Правая панель – список размеченных объектов и аннотации (если включены в конфиге).
Логика работы: 1.Пользователь выбирает класс для разметки 2. Пользователь выделяет объект выбранным инструментом. 3. (Опционально) включает трекинг для отслеживания объекта на последовательности кадров. 4. (Опционально) добавляет ключевые кадры для коррекции положения объекта. 5. (Опционально) управляет видимостью объекта на разных кадрах. 6. (Опционально) заполнение аннотации.
Функция трекинга объектов
Трекинг позволяет размечать движущиеся объекты на последовательности кадров более эффективно. Вместо ручной разметки каждого кадра, система автоматически интерполирует положение объекта между ключевыми кадрами.
Основные возможности: - Включение трекинга – автоматически создает метку на всех кадрах последовательности с одинаковым trackingId. - Ключевые кадры – опорные точки для автоматического расчета положения объекта на промежуточных кадрах. - Управление видимостью – возможность скрыть/показать объект на текущем и последующих кадрах. - Автоматическая интерполяция – система рассчитывает плавное движение объекта между ключевыми кадрами.
Настройка класса
Классы настраиваются в объекте entities в секции Config
Пример:
{
"id": "entity-1",
"name": "Первый класс",
"tooltip": "Подсказка к классу",
"type": "polygon",
"hotKey": "1",
"fields": [ { "type": "input", "name": "annotaion", "title": "Название объекта", "placeholder": "Объект" }]
}
Структура результата разметки
Результат разметки представляет собой JSON-объект с массивом кадров (pages). Каждый кадр содержит массив меток (marks) с информацией о размеченных объектах.
Поля трекинга в метках: - trackingId – уникальный идентификатор отслеживаемого объекта. Все метки с одинаковым trackingId представляют один объект на разных кадрах. - isKeyFrame – флаг ключевого кадра (true/false). Ключевые кадры задают опорные точки для автоматической интерполяции.
| Скрытые фрагменты не включаются в результат разметки – если объект скрыт на кадре, соответствующая метка отсутствует в массиве marks этого кадра. При загрузке результата в качестве предразметки скрытые фрагменты трекинга автоматически восстанавливаются системой. |
Полезные поля конфигурации
-
submitOnEnter(опциональный, по умолчанию true) - определяет, отправляется ли разметка при нажатии Enter. -
markupAutosave(опциональный, по умолчанию true) - автоматически сохраняет разметку раз в 1 минуту. -
rotationEnabled(опциональный, по умолчанию false) - включает возможность поворачивать изображение во время разметки. -
groupsEnabled(опциональный, по умолчанию false) - включает возможность группировать размеченные объекты. -
customEntitiesEnabled(опциональный, по умолчанию false) - включает возможность добавление собственных классов во время разметки.