Руководство по разметке изображений в ML Platform
Ответственный за страницу: v.berzin
1. Введение
Перед тем как приступить к самой работе в нашем приложении, давайте разберёмся, что такое разметка изображений и какие понятия в ней используются.
1.1 Зачем нужна разметка изображений
Современные алгоритмы компьютерного зрения (например, для обнаружения объектов или определения позы человека) обучаются на размеченных данных. Разметка — это процесс, в котором человек вручную указывает на изображении, где находится интересующий объект и какие в нём важные точки. Чем точнее и последовательнее выполнена разметка, тем лучше работает модель в будущем.
1.2 Основные понятия
Объектом (Object) называется любая сущность на картинке, которую мы хотим автоматически находить.
Примеры объектов:
Человек (person) Корова (cow) Автомобиль (car)
Ограничивающий прямоугольник (Bounding Box, BBox, Бокс) - прямоугольник, который обводит объект как можно точнее, но при этом остаётся прямоугольным.
Полигон (polygon) - многоугольник, граница которого представляет собой ломаную линию, которая обводит объект по внешним границам. Используется в задачах, когда боксов недостаточно и важно получить точные контуры объекта.
Ключевые точки (keypoints, кейпоинты, «точки скелета») — это специфические точки на объекте, которые важны для анализа его формы или позы.
Например, для человека это могут быть:
- Нос (nose)
- Левый глаз (left_eye)
- Правый локоть (right_elbow)
- Левое колено (left_knee)
- и т. д.
Собрав набор ключевых точек, мы получаем позу (pose) объекта, что важно для задач отслеживания движений, распознавания жестов и др.
Как это всё вместе выглядит:
2. Как начать размечать
2.1 Ознакомьтесь с этой вики-страницей
Перед началом работы внимательно прочитайте эту страницу целиком.
Здесь разобрано:
- что такое разметка и зачем она нужна
- какие типы объектов и фигур мы размечаем (боксы, кейпоинты, полигоны)
- особенности разметки скелетов людей и коров
- как устроен интерфейс приложения
Приложение разметки постоянно развивается и регулярно обновляется, поэтому отдельные детали интерфейса могут немного отличаться от скриншотов и видео, но базовые принципы и правила разметки остаются актуальными.
2.2 Получите доступ к аккаунту
Напишите в Telegram @starrabb1t, чтобы получить:
- логин и пароль для входа в приложение разметки
- ссылку на тестовый датасет
2.3 Разметьте тестовый датасет
Зайдите в приложение по выданным логину и паролю и откройте тестовый датасет.
В этом датасете обычно нужно доразметить недостающие фигуры. На прикреплённом видео как раз частично размечается этот датасет — имеет смысл посмотреть его перед началом.
Видеодемонстрация разметки:
Если видео не воспроизводится или не перематывается, то скачайте видео или откройте его в другом браузере.
В тестовом датасете специально: - пропущено много объектов — их нужно постараться все найти и разметить; - смешано сразу несколько классов; - задействованы все виды фигур, чтобы вы могли попробовать весь функционал.
Что именно размечать в тестовом датасете:
- person (люди) — ограничивающие прямоугольники (bounding boxes) + кейпоинты;
- cow (коровы) — ограничивающие прямоугольники (bounding boxes) + кейпоинты;
- table (столы) — полигоны (обводим контур стола).
В реальных рабочих датасетах обычно набор классов проще и не такой «смешанный» — тестовый набор сделан максимально разнообразным именно для обучения.
2.4 Дождитесь проверки тестового датасета
После того как вы разметили все изображения в тестовом датасете и сохранили разметку:
- Дождитесь проверки (верификации) этого датасета ответственным.
- Если всё в порядке, вам откроют доступ к другим датасетам для уже оплачиваемой разметки.
При возникновении любых вопросов обязательно пишите в чат и уточняйте всё непонятное — это лучше, чем размечать «на глаз».
3. Интерфейс и основные элементы
3.1 Панель слева (Left Sidebar)
Здесь вы выбираете и фильтруете список изображений, которые будете размечать.
- Поле выбора датасета позволяет переключаться между разными наборами данных.
-
Галочки с фильтрами позволяют быстро оставить только неразмеченные данные или доступные для верификации.
-
Таблица со списком изображений к разметке имеет поля с именем семпла, именем разметчика и временем обновления. Для разметки изображения из таблицы нужно клинуть по строке, и это изображение загрузится в центральную панель.
3.2 Центральная панель (Annotation Canvas)
Это основной инструмент для работы с разметкой.
-
Полотно (Canvas) подгружает фоновое изображение и позволяет рисовать боксы и кейпоинты.
-
Нижняя панель инструментов содержит кнопки:
Zoom −/+, Reset Zoom— масштабирование и панорама.Delete(корзина) — удаляет выделенные фигуры.
-
Строка
Режим:представляет собой кнопки выбора режимов работы:- Режим
Трансформпозволяет перемещать уже созданные точки и боксы, а также корректировать размер боксов - Режим
Бокспозволяет рисовать рамки объектов - Режим
Кейпоинтпозволяет рисовать ключевые точки объектов - Режим
Полигонпозволяет последовательно нарисовать вершины полигона для обводки объекта
- Режим
-
Строка
Класс:позволяет выбрать класс для разметки -
Нижняя строка со списком кейпоинтов появляется только в режиме Keypoint. Содержит кнопки для каждого вида ключевой точки (например, nose, left_eye…), окрашены в свой цвет.
3.3 Панель справа (Right Sidebar)
- Поле
Object ID:позволяет выбрать уникальный идентификатор объекта для разметки. Он помогает группировать фигуры (боксы + точки) в один логический объект. Так можно понять, например, что определенная точкаnoseпринадлежит объекту (боксу)person. -
Также рядом справа вы можете увидеть чекбокс (галочку)
Скрыть остальное, который позволяет скрыть все объекты, кроме активного. Это может быть удобно, если вы работаете с большим количеством объектов, и вы хотите видеть только те, которые вам нужны. -
Таблица
Выбранноеобновляется в режиме Transform при выделении фигур. В таблицы представлен список выделенных фигур. Показаны поля:objectId– номер логического объектаТип– типа объектаКласс- класс фигуры
- Таблица
Annotations– сводная таблица всех размеченных объектов на текущем изображении. Поля позволяют контролировать, какие объекты и ключевые точки вы уже пометили:objectId– номер логического объектаКласс– метка классаkeypoints– список размеченных кепоинтов для данного объекта
- Кнопка
Сохранитьсохраняет текущее состояние разметки на сервере. Не забывайте наимать ее по окончанию разметки каждого изображения.
Эта трёхпанельная структура предоставляет полный цикл — от выбора файла до создания и сохранения объектов с кейпоинтами, позволяет комфортно отслеживать прогресс и управлять историей разметки.
4. Процесс разметки
4.1 Выбор датасета
В левой боковой панели выберите нужный датасет. Если датасет размечают несколько человек, то лучше заранее договоритесь с разметчиками о том, кто какую часть возьмет в разметку. Это позволит быть уверенными, что вы не размечаете одни и те же изображения и не мешаете друг другу.
4.2 Выбор изображения
В левой боковой панели выберите строку с нужным изображением. Проставьте галочку в левой колонке в ячейке напротив нужного изображения, и изображение загрузится в Canvas.
4.3 Выбор метки класса и Object ID
Выберите нужный класс. В некоторых задачах он может быть единственным. Тогда можете пропустить выбор класса. Далее установите в ряду Object ID уникальный номер для этого объекта. Бокс и все кейпоинты будут сгруппированы под этим номером.
4.4. Рисование бокса
Переключитесь в режим Бокс. Наведите курсор на Canvas, нажмите ЛКМ, потяните рамку — отпустите ЛКМ. Если рамка слишком маленькая (< 10px), она удалится автоматически. Это сделано для обработки ложных кликов. Также если уже существует бокс с таким же Object ID – вновь созданный сразу удалится (у одного оббъекта может быть только один бокс).
4.5 Добавление кейпоинтов
Переключитесь в режим Кейпоинт. Откроются кнопки с кейпоинтами для текущего типа (например, nose, left_eye…). Нажмите на нужную кнопку кейпоинта (она подсветится), затем кликните ЛКМ по Canvas. Точка создаётся в месте клика, цвет точки совпадет с цветом кнопки. Если вы уже создали точку с тем же Object ID и типом кейпоинта – новая удалится, и появится сообщение.
4.6 Редактирование фигур
Переключитесь в режим Трансформ. Кликните по боксу или точке, чтобы выделить элемент. Тяните за маркеры, чтобы изменить размер/положение (у точек можно менять только положение). Чтобы снять выделение – кликните в пустом месте. Также можно выделять группы объектов путем зажатия ЛКМ.
4.7 Масштаб и панорама
Инструменты зумирования могут быть полезны при разметки небольших объектов и более точной разметки. Zoom −/+ со значками лупы приближает/отдаляет центр Canvas. Reset Zoom – возвращает начальный зум и позицию (панораму). Для панорамирования зажмите колесико мыши и двигайте Canvas.
4.8 Сохранение разметки
Когда вы закончили c разметкой изображения, то обязательно нажмите кнопку сохранения. Данные отправятся на сервер и запишутся в базу данных. Когда сохранение успешно произойдет, отобразится сообщение.
5. Процесс верификации
В процессе разметки разметчик иногда допускает ошибки. Для их исправления существует процесс проверки (верификации) разметки другим разметчиком. Проверяющий осуществляет доразметку в случае, если обнаружены ошибки или неточности, или же подтверждает правильность разметки.
Для верификации датасета нужно проделать следующие шаги:
- На левой панели нужно отфильтровать список семплов датасета, нажав галочку
Доступно для верификации. После применения фильтра в таблице покажутся только те данные, которы ожидают проверки.
-
Далее нужно проверить правильность разметки. Если в разметке, есть значительная неточность или ошибка, то ее необходимо исправить. После исправления нужно нажать на кнопку сохранения, чтобы сохранить вашу версию разметки. При изменении разметки верифицировать данную разметку будет уже другой разметчик.
-
ВАЖНО: свою собственную разметку разметчик верифицировать не может, для этого обязательно нужен другой человек.
-
На панели справа под кнопкой Save показывается информация о состоянии проверки, о том, кто размечал и кто верифицировал разметку.
- Если разметка верна и ошибок не обнаружено, то проверяющему просто достаточно нажать кнопку Верифицировать, чтобы подтвердить корректность разметки.
6. Организация
6.1. Порядок работы
- Если есть какой-то приоритет по задачам (что сделать сначала, а что потом), об этом отдельно пишут в чате и стараются тегать конкретных людей, кому что делать.
- Если по приоритетам вы всё запланированное сделали, а новых задач пока нет, то:
- в приложении можно выбрать любой доступный вам датасет;
- искать в нём примеры, которые ещё не верифицированы;
- и заниматься верификацией разметки (см. раздел «Верификация разметки» ниже).
- Если ни в одном доступном вам датасете нет данных на верификацию, просто напишите в рабочий чат и тегните ответственного — он подскажет, что делать дальше.
6.2. Рекомендации по разметке
Ниже — базовые принципы разметки, которыми стоит руководствоваться, если в конкретном проекте не указаны другие специальные правила.
-
Размечаем только видимую часть объекта.
Бокс и кейпоинты ставятся по реально видимой части объекта на изображении. Не «дорисовываем» невидимое за рамками кадра или за перекрывающими предметами. -
Бокс плотно обжимает объект.
Ограничивающий прямоугольник должен идти по границам видимой части объекта: без лишнего фона вокруг, без «обрезания» внутри объекта, без включения соседних объектов. -
Один бокс — один объект.
Не обводим одним боксом сразу несколько объектов, даже если они стоят вплотную или пересекаются. Каждый логически отдельный объект размечается своим боксом и имеет свойObject ID. -
Частично обрезанные (truncated) объекты.
Если объект частично вышел за кадр или перекрыт другим объектом: - размечаем бокс строго по видимой части (не расширяем в невидимую область);
- кейпоинты ставим только там, где точка либо видна, либо её положение достаточно очевидно по контексту;
-
если видна совсем небольшая часть объекта и по ней нельзя уверенно понять его форму и положение, такой объект обычно не размечаем — в спорных случаях лучше уточнить в чате.
-
Очень мелкие объекты.
- Если объект настолько мелкий, что его размер сравним с размером самого кейпоинта, обычно достаточно разметить только бокс, без кейпоинтов.
-
Если объект совсем «крошечный» размером по длине и ширне менее 5 пикселей, чаще всего его не размечают (если в инструкциях к проекту не сказано явно «размечать вообще всё»).
-
Кейпоинты — только для видимых или достаточно уверенно определяемых точек.
- Ставим точку там, где реально видна соответствующая часть объекта.
- Дополнительно ставим «скрытые, но однозначно локализуемые» точки. Например, ухо человека, может быть скрыто под шапкой, но в большинстве случаев можно однозначно определить местоположение кейопинта.
-
Если точка полностью скрыта и вы НЕ уверены в её положении, лучше не размечать её.
-
Не размечаем отражения и «лишние» области.
Отражения в зеркалах, стекле и т. п. не считаются отдельными объектами и не размечаются. Аналогично не размечаем тени и прочные артефакты фона. -
Не забываем регулярно верифицировать изображения Верификация - очень важный процесс. Оплата производится только за верифицированные изображения.
7. Примеры
7.1 Люди (person)
Разметка кейпоинтов людей, которая используется в ML Platform, представлена на рисунке ниже:
Список кейпоинтов:
- nose - нос
- left_eye - левый глаз
- right_eye - правый глаз
- left_ear - левое ухо
- right_ear - правое ухо
- left_shoulder - левое плечо
- right_shoulder - правое плечо
- left_elbow - левый локоть
- right_elbow - правый локоть
- left_wrist - левая кисть
- right_wrist - правая кисть
- left_hip - левое бедро (область таза)
- right_hip - правое бедро
- left_knee - левое колено
- right_knee - правое колено
- left_ankle - левая пятка
- right_ankle - правая пятка
Видеодемонстрация разметки:
Если видео не воспроизводится или не перематывается, то скачайте видео или откройте его в другом браузере.
7.2 Коровы (cow)
Разметка кейпоинтов коров, которая используется в ML Platform, представлена на рисунке ниже:
Список кейпоинтов:
- nose - нос
- head - голова (место рядом с "рогами")
- neck - шея
- withers - холка
- lumbar - поясница
- tailbase - основания хвоста
- left_front_knee - левое переднее колено
- right_front_knee - правое переднее колено
- left_back_knee - левое заднее колено
- right_back_knee - правое заднее колено
- left_front_paw - левое переднее копыто
- right_front_paw - правое переднее копыто
- left_back_paw - правое заднее копыто
- right_back_paw - правое заднее копыто
Видеодемонстрация разметки:
Если видео не воспроизводится или не перематывается, то скачайте видео или откройте его в другом браузере.
Теперь вы готовы начать разметку! При возникновении вопросов — обратитесь в чат разметки.