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

Вопрос создания обучающих выборок внутри Deep Systems вставал не один раз. Как результат, мы разработали собственный web-инструмент разметки объектов на изображениях.

Web
Annotation
Computer vision
Node.js

2016

Коротко о главном

Задача

Разработать приложение для быстрого и эффективного аннотирования изображений.

Решение

  • Разработан веб-клиент на основе Angular JS
  • Создано серверное ПО для хранения и обработки данных
  • Подготовлены утилиты для импорта и экспорта датасетов

перейти на Supervise.ly

Данные — ключевой фактор

На сегодняшний день наиболее успешные приложения Deep Learning в бизнесе — это результат использования Supervised Learning подходов. Все лучшие системы распознавания и сегментации изображений, понимания речи, машинного перевода с одного языка на другой и т.д. имеют одно общее свойство: наличие огромной обучающей выборки.

Так для системы детектирования пешеходов обучающая выборка состоит из большого количества следующих пар:

  • Изображение, где могут находиться пешеходы
  • Координаты обрамляющих прямоугольников, обведенных вокруг всех пешеходов на картинке

Для систем машинного перевода с русского языка на английский обучающая выборка будет состоять из следующих пар предложений:

  • Предложение на русском (исходном) языке
  • Предложение на английском (целевом) языке

Вместе с сегодняшним взлетом AI технологий имеет место еще один сильный тренд: большинство гигантов индустрии IT (Google, Facebook, IBM и т.д.) публикуют в общий доступ статьи и исходные коды Deep Learning решений, причем зачастую эти решения являются ключевыми для данных компаний. То, что компании не публикуют — это обучающие выборки, на основе которых можно построить потрясающие продукты.

Рис 1. Суть аннотирования изображения

Итак, на сегодня, обучающие выборки являются основным активом компаний, работающих в сфере AI. Гиганты индустрии тут находятся в привилегированном положении, поскольку именно их Internet-сервисы генерируют терабайты данных, часть из которых может быть использована для построения Deep Learning моделей.

Также не публикуются в открытый доступ инструменты, позволяющие автоматизировать и ускорить сбор обучающих выборок.

Сосредоточимся на конкретных задачах: семантической сегментации сцены и детектирования объектов на изображениях. У гигантов индустрии и больших компаний, несомненно, есть внутренний инструментарий для создания обучающих выборок для решения данных задач. Для остальных же участников рынка имеются следующие альтернативы при решении обозначенных задач:

  • Использовать открытые размеченные обучающие выборки (тут надо отметить, что зачастую лицензия не позволяет использовать эти выборки для коммерческих целей)
  • Использовать открытые инструменты типа LabelMe
  • Разрабатывать собственный инструментарий

Рис 2. Пример разметки в нашем инструменте
Рис 3. Пример разметки в нашем инструменте

Открытые обучающие выборки и близко не покрывают перечень актуальных AI-приложений. Удобных и открытых инструментов, позволяющих удобно размечать изображения, нет на рынке. Создание и развитие собственных инструментов разметки изображений может быть долгим и дорогостоящим процессом, особенно для небольших компаний.

Мы в Deep Systems уже несколько лет берем на аутсорс задачи распознавания / сегментации / детектирования. Вопрос сбора обучающих выборок для нас вставал снова и снова. Как результат, развивался внутренний web-инструмент разметки объектов на изображениях.

Когда такой инструмент может быть Вам полезен?

Приведем несколько сценариев, когда наш инструмент может оказаться полезным для Вашего бизнеса:

  • Создание обучающей выборки с нуля
  • Дополнение обучающей выборки новыми объектами
  • Объединение нескольких обучающих выборок в одну
  • Помощь в создании обучающих выборок

Пожалуй, LabelMe — единственный близкий аналог, но его функционал серьезно ограничен:

Наше приложение Label Me
Экспорт разметки
Пользователи
Поддержка Mturk
Попиксельная разметка
Работа с большими изображениями
Горячие клавиши
Фильтрация классов и отдельных объектов
Поддержка тысяч объектов на одной сцене
Типы объектов ✓ Прямоугольник
✓ Полигон
✓ Точка
✓ Линия
✓ Скелет
✓ Прямоугольник
✓ Полигон
Обновления Еженедельно Не обновлялся с Jul 2016
Простота развертывания Node.js Apache, SSI, perl/CGI, PHP
Таблица 1. Сравнение Label Me и нашего решения

Технология

Пусть инструмент Label Me и имеет долгую историю развития, эта утилита была разработана еще в 2008 году. При разработке нашего решения мы изначально старались учесть данный опыт.

Для отрисовки объектов на кадре используется Canvas и библиотека Fabric JS, что позволяет работать с сотнями и даже с тысячами объектов на изображении. Использование возможностей взаимодействия с объектами в браузере, такими как Panning, Rotate и Zoom и др., позволяет выполнять точную попиксельную разметку — это необходимое условие в ряде задач Machine Learning.

В качестве серверного решения используется связка Node.js и MongoDB, хорошо зарекомендовавшая себя в других проектах.

Контейнеризация Docker позволяет развернуть и запустить приложение на любой операционной системе за считанные минуты.

Следующий проект

Распознавание дорожной сцены