Использование сегментации изображений Matterport

В нашем обзоре статей Обнаружение объектов мы рассмотрели несколько решений, в том числе Mask R-CNN. Модель классифицирует и локализует объекты с помощью ограничивающих рамок. Он также классифицирует каждый пиксель по набору категорий.

Следовательно, он также создает маску сегментации для каждой области интереса. В этой части мы рассмотрим реализацию Mask R-CNN в Python для сегментации изображений.

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

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

Мы будем использовать реализацию Mask R-CNN с открытым исходным кодом от Matterport. Он создает ограничивающие рамки и маски сегментации для объектов, обнаруженных на изображении. Он основан на сети Feature Pyramid Network (FPN) и магистрали ResNet101. Проект содержит предварительно натренированные гири от MS COCO. Таким образом, нам не нужно обучать модель с нуля.



Начнем с пары импортированных:

  • os, чтобы установить путь к нашему корневому каталогу
  • skimage для обработки изображений
  • Matplotlib для визуализации

Затем мы устанавливаем корневой каталог.

Теперь мы можем импортировать Mask R-CNN.

Далее мы импортируем конфигурации для MS COCO. Затем мы устанавливаем путь для сохранения обученной модели и журналов.

Если веса COCO недоступны в нашем локальном каталоге, мы их загружаем. После этого мы устанавливаем путь для изображений, которые мы будем использовать для сегментации изображений:

Давайте воспользуемся конфигурацией COCO, чтобы установить размер партии. Мы устанавливаем размер пакета равным 1, так как мы будем делать прогнозы для одного изображения. Затем мы отображаем конфигурации.

Затем мы можем создать экземпляр модели. Мы устанавливаем модель на вывод, потому что мы не собираемся ее тренировать. Затем мы загружаем веса COCO, которые мы скачали ранее.

На экране конфигурации мы видим, что COCO имеет 81 класс. Ниже мы создаем список с этими классами.

Теперь давайте обработаем изображение, которое мы собираемся использовать:

Теперь, когда это сделано, мы можем выполнить прогноз:

Визуализировать результаты довольно просто:

Как видите, это довольно просто. Однако между этой реализацией и официальной бумагой есть несколько отличий:

  • Изменение размеров всех изображений до одинакового размера для поддержки обучения нескольких изображений в пакете. В официальном документе изменение размера выполняется таким образом, что наименьшая сторона составляет 800 пикселей, а наибольшая обрезается до 1000 пикселей.
  • Игнорирование ограничивающих рамок, которые поставляются с набором данных, чтобы генерировать их на лету.
  • Использование скорости обучения ниже 0,02, предложенной в статье. Более низкие темпы обучения сходились быстрее.

Поскольку я внес небольшие изменения в исходный код на GitHub, я предоставляю исходный код, используемый для этой статьи ниже.



Заключение

Как видите, Matterport предоставляет быстрый и простой способ реализации сегментации изображений с помощью Mask R-CNN. Если вы хотите провести собственное обучение работе с изображениями, загляните в этот Блокнот на их странице GitHub. Вы также можете ознакомиться с другой моей статьей о сегментации изображений.



Примечание редактора: Heartbeat - это онлайн-публикация и сообщество, созданное авторами и посвященное предоставлению первоклассных образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Независимая редакция, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по обработке данных и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.