Погружение в SAM от Meta AI: Всё, что нужно знать о сегментации изображений

Автор статьи, участник AI-Лаборатории УИИ Михайлов Александр
В эпоху, когда искусственный интеллект проникает в каждый аспект нашей жизни, одно
инновационное решение от Meta AI выделяется своими передовыми возможностями в области
компьютерного зрения. Segment Anything Model (SAM) — это не просто модель распознавания
объектов, это инструмент, способный интерпретировать контекст, форму и взаимосвязи объектов на изображении. SAM от Meta AI (Meta Platforms, Inc., деятельность которой запрещена в России) открывает новые горизонты для анализа данных и автоматизации, предлагая техническим специалистам мощный инструмент для решения сложных задач в области сегментации изображений. Эта модель обеспечивает высокую точность и универсальность, что делает её незаменимой для разработчиков и исследователей, работающих над созданием интеллектуальных систем и приложений в сфере компьютерного зрения.

Кейсы применения модели SAM:

1. Медицинская диагностика: SAM используется для сегментации медицинских изображений,
таких как МРТ и КТ, что позволяет врачам точно выделять и анализировать патологические
образования.

2. Автономное вождение: в автомобильной промышленности SAM применяется для точного
распознавания и сегментации дорожных знаков, пешеходов и препятствий, что повышает
безопасность вождения.

3. Ритейл: в розничной торговле SAM помогает в анализе полок магазинов, автоматизируя процесс учета товаров и их расположения.

4. Городское планирование: SAM используется для анализа спутниковых снимков, что помогает в
планировании городской инфраструктуры и мониторинге изменений окружающей среды.

Обзор технологии: Краткое введение в SAM и её возможности

Модель Segment Anything (SAM), выпущенная компанией Meta в апреле 2023 года, произвела
революцию в стандарте качества сегментации изображений. Получив входное изображение, SAM пытается сегментировать все объекты на изображении и создавать маски сегментации. Затем эти маски передаются моделям, таким как те, которые используются для преобразования изображений, для создания масок указанных объектов.
Расширенные возможности SAM являются результатом её обучения на миллионах изображений и масок, собранных с помощью "механизма обработки данных" типа "модель в цикле". Исследователи использовали SAM и его данные для интерактивного аннотирования изображений и обновления модели. Этот цикл повторялся много раз, чтобы улучшить как модель, так и набор данных. “После аннотирования достаточного количества масок с помощью SAM, мы смогли использовать модель с глубоким обучением, с учетом неоднозначности для полностью автоматического аннотирования новых изображений. Для этого мы представляем SAM сетку точек на изображении и просим SAM сегментировать все в каждой точке. Наш окончательный набор данных включает более 1,1 миллиарда масок сегментации, собранных на ~ 11 миллионах лицензированных изображений, сохраняющих конфиденциальность” - это говорят сами разработчики. (https://segment-anything.com/)

Список задач, которые решает Segment Anything Model:

· Быстрое и качественное вырезание объектов
· Отделение фона от объекта
· Разделение изображения на составляющие
· Вырезать любой объект на изображении одним щелчком

Архитектура модели Segment Anything Model(SAM)

Революционные возможности SAM в первую очередь основаны на его революционной архитектуре, которая состоит из трех основных компонентов: кодировщика изображений, кодировщика подсказок и декодера масок.
(https://viso.ai/deep-learning/segment-anything-model-sam-explained/)

Кодировщик изображений

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

Используя подход на основе трансформеров, аналогичный тем, что применяются в современных NLP-моделях, этот кодировщик сжимает изображения в плотную матрицу признаков. Эта матрица формирует базовое понимание, на основе которого модель идентифицирует различные элементы изображения.

Кодировщик подсказок

Кодировщик запросов — это особая часть SAM, которая отличает её от обычных моделей
сегментации изображений. Он обрабатывает разные типы входных запросов, такие как текст, точки, грубые маски или их сочетания. Этот кодировщик преобразует запросы в векторное представление, которое помогает направлять процесс сегментации. Это позволяет модели акцентировать внимание на конкретных областях или объектах изображения в соответствии с заданными входными данными. То, как компоненты взаимодействуют друг с другом, столь же важно для эффективной сегментации изображений, как и их возможности: Кодировщик изображений сначала создает детальное представление обо всем изображении, разбивая его на функции, которые может проанализировать движок. Затем кодировщик подсказок добавляет контекст, фокусируя внимание модели на предоставленных входных данных, будь то простая точка или сложное текстовое описание.

Кодировщик масок

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

Взаимодействие этих компонентов критически важно для достижения эффективной сегментации.
Сначала кодировщик изображений анализирует входное изображение, создавая его детальное
представление и извлекая ключевые признаки. Далее кодировщик запросов добавляет контекст,
позволяя модели сосредоточить внимание на определенных аспектах, основываясь на полученных данных — будь то простая точка или сложное текстовое описание. В заключение, кодировщик масок использует объединенную информацию для точной сегментации, обеспечивая соответствие выходных данных заданным целям и намерениям входного запроса.
Источник: https://viso.ai/deep-learning/segment-anything-model-sam-explained/
SAM может эффективно работать как с отдельными изображениями, так и с последовательностями изображений в виде видео. Это делает его универсальным инструментом для различных задач компьютерного зрения.

Использование модели на практике

Модель SAM может быть загружена с 3 различными кодерами: ViT-B, ViT-L и ViT-H. Кодер ViT-H
существенно превосходит ViT-B, но имеет лишь незначительный выигрыш по сравнению с ViT-L. Эти энкодеры имеют разное количество параметров: ViT-B имеет 91M, ViT-L - 308M и ViT-H-
636M параметров. Эта разница в размере также влияет на скорость вывода, поэтому имейте это в виду при выборе кодера для вашего конкретного варианта использования. Документация:
https://docs.ultralytics.com/ru/models/sam/.
*Код приведен для использования в среде Google Colaboratory

Ниже приведенный код показывает автоматическую разметку (маркировку) объектов с помощью SAM

Результат можно видеть на рисунке Рис.1.

Рис.1.

Как видно из фото маскирование бывает с различными погрешностями, для исправления такого
положения дел мы можем применить два подхода - ручная коррекция либо фокусировка модели на конкретном объекте.

Сгенерируйте маску сегментации с помощью ограничивающей рамки

Ниже приведенный код помогает SAM акцентировать внимание на объекте, используя
ограничивающую рамку.
В итоге имеем:
На одном изображении вы можете выделить, сколько вам необходимо ограничивающих рамок. Но
использовать в данный момент только ту рамку, которая вам нужна.
Стоит отметить, что ограничивающая рамка имеет формат [x_min, y_min, x_max, y_max].

Визуализация результатов с помощью Supervision

Можно сказать, что переходим к финальному этапу – этапу сегментации. Пакет supervision
(https://github.com/roboflow/supervision?ref=blog.roboflow.com) (начиная с версии 0.5.0)
предоставляет встроенную поддержку SAM, упрощая аннотирование сегментов на изображении.
Теперь результат уже значительно лучше. И хотя такая разметка быстрее чем ручное маскирование, она все же занимает значительное количество времени и усилий.

Как полностью автоматизировать процесс сегментации без потери качества?

Например, используя библиотеку Autodistill, можно проводить автоматическую маркировку
необходимых объектов.
Автоматическая маркировка позволяет автоматически маркировать изображения для использования при обучении точно настроенных моделей зрения. Это работает с использованием базовых моделей (таких как Grounding DINO и GroundedSAM), которые обычно слишком медленные для использования в производстве. Одним из преимуществ является то, что Grounding DINO и GroundingSAM являются моделями с нулевым снимком; они работают без точной настройки пользовательских данных. В результате автоматическая маркировка полезна с самого начала проекта.
https://blog.roboflow.com/launch-auto-label/
В данной статье рассмотрим автоматическую маркировку с помощью модели GroundedSAM.
Создадим папку с изображениями для дальнейшей работы. Это будет наш набор данных.
Визуализируем исходное изображение:
Выбираем нужную категорию:

Исходное изображение

Загрузка набора данных и запуск модели GroundedSAM:
Аннотирование изображений и присвоения меток:
Результат сегментированных изображений

На картинке ниже можно видеть совместную работу SAM и Grounded

Модель GroundedSAM, которая найдет все изображения с бурым медведем. После этого можно
добавлять метки к каждой из интересующих вас масок на вашем изображении. В вышеупомянутом примере вы могли бы отправлять в свой набор данных только метки масок, подтверждающие, что отчеты GroundedSAM содержат медведей.
Здесь можно заметить, что объект, в данном случае бурый медведь, находится далеко. Но, несмотря на это, SAM справляется хорошо. Это еще раз подтверждает, что Segment Anything Model предлагает мощное и универсальное решение для сегментации объектов на изображениях, позволяющее улучшать ваши наборы данных с помощью масок сегментации.

Преимущества и инновации модели Segment Anything Model (SAM) перед другими методами сегментации изображений заключаются в следующем:

1. Мультимодальное обучение: SAM обучена на миллионах изображений и масок, что позволяет
ей точно сегментировать объекты в различных контекстах и условиях освещения.

2. Высокая точность: Благодаря обширному набору данных и продвинутым алгоритмам, SAM
демонстрирует высокую точность в сегментации, что особенно важно в критических приложениях, таких как медицинская диагностика.

3. Эффективность: SAM способна обрабатывать изображения быстрее, чем традиционные
методы, благодаря оптимизированной архитектуре и использованию механизма обработки данных типа "модель в цикле".

4. Гибкость: Модель может быть адаптирована под различные задачи и условия, что делает её
универсальным инструментом для множества отраслей.
Автоматизация аннотирования: SAM упрощает процесс аннотирования изображений, что
сокращает время и ресурсы, необходимые для подготовки данных для обучения других моделей.

Заключение

Способность SAM сегментировать видео расширяет возможности использования этой технологии в самых различных областях. Это открывает новые горизонты для автоматизации, анализа данных и улучшения качества предоставляемых услуг. Важно продолжать исследования и разработки в этом направлении, чтобы преодолевать возникающие вызовы и максимально использовать потенциал SAM.
Благодаря высокой скорости обработки и различным режимам вывода, SAM является ценным
инструментом для приложений компьютерного зрения. Чтобы разметить свои данные с помощью SAM, вы можете использовать Roboflow Annotate, который предлагает автоматизированный инструмент для создания многоугольников, Smart Polygon, на базе SAM. (Piotr Skalski. (22 января 2024 г.). Как использовать модель Segment Anything (SAM). Блог Roboflow: https://blog.roboflow.com/how-to-use-segment-anything-model-sam/ )

Список используемой информации:

  1. Статья: Кириллов А. и др. (2023). Сегментируйте что угодно. Препринт arXiv:
  2. 2304.02643. https://arxiv.org/abs/2304.02643
  3. · Страница проекта Segment Anything Model(SAM) : https://segment-anything.com/
  4. · GitHub: https://github.com/facebookresearch/segment-anything/
  5. · Карточка модели: https://segment-anything.com/model_card.pdf
  6. · Демонстрационное видео: https://www.youtube.com/watch?v=c7ymdZ2K-z4
  7. · Документация https://docs.ultralytics.com/ru/models/sam/
  8. · Чандхок, С. “СЭМ из Meta AI (часть 1): сегментация с помощью подсказок”, PyImageSearch, П.
  9. Чуг, А. Р. Гостхипати, С. Хуот, К. Кидрявстева и Р. Раха, ред., 2023, https://pyimg.co/0ivy4
Made on
Tilda