Автоматизированное аннотирование изображений с помощью инструмента Auto-Annotate Tool


Достаточно просто сказать: «Аннотируйте все уличные знаки (метка) в наборе данных автономных автомобилей (каталог)» и БАМ! ГОТОВО.

В среднем, на создание одной полигональной маски и аннотирование ее с помощью какого-либо инструмента уходит около 30+ секунд. С помощью Auto-Annotate эта утомительная ручная часть аннотирования изображений может быть автоматизирована нажатием одной команды. Инструмент Auto-Annotate с открытым исходным кодом обеспечивает автоматическое аннотирование масок сегментации для объектов на изображениях внутри некоторого каталога на основе меток.

В этой статье я расскажу вам об основах аннотирования изображений, функциональности, коде и использовании инструмента Auto-Annotate. Репозиторий GitHub для Auto-Annotate можно найти здесь.

Аннотирование изображений

Аннотирование изображений является основой для создания наборов данных для моделей компьютерного зрения. Аннотирование изображений — это процесс присвоения метаданных в виде меток различным объектам на изображении. Это техника маркировки данных, которая отмечает признаки изображения, на которых мы хотим обучить модель машинного обучения.

Наиболее распространенными типами аннотаций изображений являются:

  • двумерные ограничительные рамки
  • Полигональная сегментация
  • Линии и сплайны
  • Семантическая сегментация
  • 3D кубоиды

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


Инструмент «Автоаннотация

Инструмент Auto-Annotate построен поверх Mask R-CNN для поддержки автоматических аннотаций для каждого экземпляра сегмента объекта на изображении. Auto-Annotate может предоставлять автоматические аннотации для меток, определенных в наборе данных COCO, а также поддерживает пользовательские метки.

Инструмент Auto-Annotate работает в двух режимах:

  • Аннотирование меток COCO — не требует обучения. Просто используйте веса набора данных COCO, укажите каталог с набором данных изображений, и аннотации готовы.
  • Аннотирование пользовательских меток — обучение модели для пользовательской метки. Используйте только что обученные веса в каталоге набора данных изображений, и аннотации будут готовы в считанные минуты.

ПРИМЕЧАНИЕ: Пожалуйста, обратитесь к файлу knownIssues.md в репозитории, чтобы узнать об известных проблемах и их решении. Пожалуйста, не стесняйтесь вносить свой вклад в случае возникновения каких-либо ошибок/проблем во время установки и использования инструмента.

Образец JSON-аннотации:

(Этот пример иллюстрирует аннотацию пользовательских меток, в которой модель была обучена идентифицировать и аннотировать «птичьи домики»)

ПРИМЕЧАНИЕ: Структура ответа JSON остается одинаковой для обоих вариантов инструмента Auto-Annotate и очень легко настраивается для удовлетворения ваших потребностей. Для любой настройки обратитесь к разделу «Формат JSON» в разделе Code Walkthrough ниже.

Описание формата JSON:

  • filename: Имя файла изображения.
  • id: Уникальный идентификатор.
  • label: метка для аннотации. (метка на основе Coco или пользовательская метка)
  • bbox: [ x, y, w, h ] — координаты x, y верхней левой точки ограничительной рамки. w, h задают ширину и высоту ограничительной рамки. «Формат соответствует формату ответа Coco JSON для ограничительной рамки».
  • сегментация: [ x1, y1, x2, y2,…] — Для Xi, Yi принадлежность пиксельного расположения сегмента маски.
  • «Формат соответствует формату ответа Coco JSON для сегментации».

Установка инструмента Auto-Annotate:

  • Клонируйте репозиторий Auto-Annotate на GitHub.
  • Установите зависимости с помощью:
pip3 install -r requirements.txt
Войдите в полноэкранный режим Выйти из полноэкранного режима
  • Если аннотируются метки, поддерживаемые набором данных COCO, загрузите предварительно обученные веса COCO (mask_rcnn_coco.h5) со страницы релизов Mask R-CNN. Если аннотируются пользовательские объекты, обучите модель с помощью Mask R-CNN и используйте веса только что обученной модели. (Более подробную информацию см. ниже в разделе Обучение пользовательских объектов).
  • Выполните приведенные ниже команды в зависимости от режима.

COCO Label Annotation:

python3 annotate.py annotateCoco --image_directory=/path/to/the/image/directory/ --label=object_label_to_annotate --weights=/path/to/weights.h5 --displayMaskedImages=False
Войти в полноэкранный режим Выход из полноэкранного режима

Примечание: — label=object_label_to_annotate должно соответствовать меткам набора данных COCO. Более подробную информацию см. в Наборе данных COCO.

Аннотация пользовательской метки:

python3 annotate.py annotateCustom --image_directory=/path/to/the/image/directory/ --label=object_label_to_annotate --weights=/path/to/weights.h5 --displayMaskedImages=False
Вход в полноэкранный режим Выход из полноэкранного режима

Примечание: — label=object_label_to_annotate должна быть меткой, для которой выполняется обучение и предоставляются веса.

Более подробную информацию о параметрах arg см. ниже в разделе Code Walkthrough.

  • Найдите аннотации в каталоге — /path/to/the/image/directory/, указанном выше.

Обучение на собственном наборе данных

Прочитайте оригинальную статью Валида Абдуллы в его блоге об обучении с помощью статьи Splash of Color, где он очень красиво объяснил процесс пользовательского обучения, начиная с аннотирования изображений и заканчивая обучением с помощью Mask R-CNN.

Затем используйте customTrain.py, который является модифицированной версией оригинального balloon.py, написанного Валидом, который теперь сосредоточен только на части обучения.

# Train a new model starting from pre-trained COCO weights
    python3 customTrain.py train --dataset=/path/to/custom/dataset --weights=coco
# Resume training a model that you had trained earlier
    python3 customTrain.py train --dataset=/path/to/custom/dataset --weights=last
Вход в полноэкранный режим Выход из полноэкранного режима

Краткое описание кода

В этом разделе кратко описаны составные части файла annotate.py в репозитории Auto-Annotate GitHub.

Парсер аргументов

Здесь описано использование различных аргументов командной строки, которые можно передать в annotate.py.

  • команда: Может принимать любое из двух значений в зависимости от желаемого режима.Значения — (annotateCoco или annotateCustom)
  • image_directory: Указывает на каталог набора данных. В настоящее время поддерживаются форматы изображений «.jpg», «.jpeg», «.png», и они могут быть расширены путем изменения кода в методе annotateImagesInDirectory().
  • веса: Если команда = annotateCoco, путь к предварительно обученным весам COCO (mask_rcnn_coco.h5). Если команда = annotateCustom, путь к весам новой обученной модели. (можно найти в каталоге /log после завершения обучения пользовательской модели).
  • метка: Если command = annotateCoco, метки, которые могут быть идентифицированы набором данных COCO. Полный список меток и последовательностей набора данных Coco см. здесь. Если команда = annotateCustom, то метка, для которой выполняется обучение, и веса указаны выше.
  • displayMaskedImages: По умолчанию это булево значение установлено в False, при переключении на True отображается маскированное изображение, на котором идентифицируется аннотированный объект.

Формат JSON

Этот метод может быть изменен в соответствии с форматом аннотации ответа JSON для поддержки любого типа настройки ответа в соответствии с вашими потребностями.

Структура ограничивающего поля «bbox» может быть изменена для поддержки левого верхнего и правого нижнего ограничивающего поля.

Сегментация может быть изменена для поддержки формата [x1, x2, …, xn, y1, y2, …,yn].

Можно также добавить область в аннотацию.


Спасибо, что прочитали эту статью! Если вы нашли эту статью или инструмент полезными, то выразите свою любовь. ❤️ 👏

Подключайтесь ко мне на Linkedin здесь.

Будьте здоровы!

Оцените статью
devanswers.ru
Добавить комментарий