Перейти к содержанию

MobileSAM Логотип

Мобильный сегмент "Все что угодно" (MobileSAM)

MobileSAM - это компактная, эффективная модель сегментации изображений, специально разработанная для мобильных и периферийных устройств. Разработанная для использования возможностей модели Segment Anything Model (SAM) в среды с ограниченными вычислительными ресурсами, MobileSAM обеспечивает практически мгновенную сегментацию, сохраняя при этом совместимость с оригинальным конвейером SAM . Независимо от того, разрабатываете ли вы приложения в реальном времени или легкие развертывания, MobileSAM обеспечивает впечатляющие результаты сегментации при меньших требованиях к размеру и скорости, чем его предшественники.



Смотреть: Как выполнить вывод с помощью MobileSAM , используя Ultralytics | Пошаговое руководство 🎉

MobileSAM был использован в различных проектах, включая SAM, AnyLabeling и Segment Anything in 3D.

MobileSAM был обучен на одном GPU на наборе данных из 100 тысяч изображений (1% от исходных изображений) менее чем за сутки. Код обучения будет опубликован в будущем.

Доступные модели, поддерживаемые задачи и режимы работы

В приведенной ниже таблице указаны доступные модели MobileSAM , их предварительно обученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как Inference, Validation, Training и Export. Поддерживаемые режимы обозначены ✅, а неподдерживаемые - ❌.

Тип модели Предварительно обученные веса Поддерживаемые задачи Заключение Валидация Обучение Экспорт
MobileSAM mobile_sam.pt Сегментация экземпляров

Сравнение MobileSAM с YOLO

Приведенное ниже сравнение показывает различия между вариантами SAM от Meta, MobileSAM, и моделями сегментации Ultralytics, включающими YOLO11n-seg:

Модель Размер
(МБ)
Параметры
(M)
Скорость (CPU)
(мс/им)
Мета SAM-b 375 93.7 49401
Мета SAM2-b 162 80.8 31901
Мета SAM2-t 78.1 38.9 25997
MobileSAM 40.7 10.1 25381
FastSAM смагистралью YOLOv8 23.7 11.8 55.9
Ultralytics YOLOv8n 6,7 (11,7x меньше) 3,4 (на 11,4 меньше) 24,5 (в 1061 раз быстрее)
Ultralytics YOLO11n-seg 5,9 (13,2x меньше) 2,9 (13,4x меньше) 30.1 (864x быстрее)

Это сравнение демонстрирует существенные различия в размере и скорости моделирования между вариантами SAM и моделями сегментации YOLO . В то время как модели SAM предлагают уникальные возможности автоматической сегментации, модели YOLO - особенно YOLOv8n и YOLO11n-seg - значительно меньше, быстрее и более эффективны с вычислительной точки зрения.

Тесты проводились на Apple M4 Pro 2025 года выпуска с 24 ГБ оперативной памяти с использованием torch==2.6.0 и ultralytics==8.3.90. Чтобы воспроизвести эти результаты:

Пример

from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profile YOLO models
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

Адаптация с сайта SAM на MobileSAM

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

Ключевое отличие заключается в кодировщике изображений: MobileSAM заменяет оригинальный кодер ViT-H (632 М параметров) на гораздо более компактный кодер Tiny-ViT (5 М параметров). На одном GPU MobileSAM обрабатывает изображение примерно за 12 мс (8 мс на кодер, 4 мс на декодер маски).

Сравнение кодировщиков изображений на основе ViT

Кодировщик изображений Оригинал SAM MobileSAM
Параметры 611M 5M
Скорость 452 мс 8 мс

Дешифратор масок с подсказками

Декодер масок Оригинал SAM MobileSAM
Параметры 3.876M 3.876M
Скорость 4 мс 4 мс

Сравнение целых трубопроводов

Целый трубопровод (Enc+Dec) Оригинал SAM MobileSAM
Параметры 615M 9.66M
Скорость 456 мс 12 мс

Ниже показана производительность MobileSAM и оригинального SAM с использованием подсказок в виде точек и квадратиков.

Изображение с точкой в качестве подсказки

Изображение с рамкой в качестве подсказки

MobileSAM примерно в 5 раз меньше и в 7 раз быстрее, чем FastSAM. Более подробную информацию можно найти на странице проектаMobileSAM .

Тестирование MobileSAM в Ultralytics

Как и оригинал SAMUltralytics предоставляет простой интерфейс для тестирования MobileSAM, поддерживая как точечные, так и коробочные подсказки.

Скачать модель

Загрузите предварительно обученные веса MobileSAM из активовUltralytics .

Точечная подсказка

Пример

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Коробка Prompt

Пример

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

Оба MobileSAM и SAM используют один и тот же API. Для получения более подробной информации об использовании см. Документация SAM.

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

Чтобы автоматически аннотировать ваш набор данных с помощью фреймворка Ultralytics , воспользуйтесь функцией auto_annotate как показано ниже:

Пример

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
Аргумент Тип По умолчанию Описание
data str требуется Путь к каталогу, содержащему целевые изображения для аннотации или сегментации.
det_model str 'yolo11x.pt' YOLO траектория модели обнаружения для первоначального обнаружения объекта.
sam_model str 'sam_b.pt' Путь модели SAM для сегментации (поддерживает модели SAM, SAM2 и mobile_sam).
device str '' Вычислительное устройство (например, 'cuda:0', 'cpu' или '' для автоматического определения устройства).
conf float 0.25 YOLO порог достоверности обнаружения для фильтрации слабых обнаружений.
iou float 0.45 Порог IoU для не максимального подавления для фильтрации перекрывающихся ящиков.
imgsz int 640 Входной размер для изменения размера изображений (должен быть кратен 32).
max_det int 300 Максимальное количество обнаружений на одно изображение для экономии памяти.
classes list[int] None Список индексов классов для обнаружения (например, [0, 1] для человека и велосипеда).
output_dir str None Каталог сохранения аннотаций (по умолчанию './labels' относительно пути к данным).

Цитаты и благодарности

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

@article{mobile_sam,
  title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
  author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung Ho and Lee, Seungkyu and Hong, Choong Seon},
  journal={arXiv preprint arXiv:2306.14289},
  year={2023}
}

Читайте полный текст статьиMobileSAM на arXiv.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Что такое MobileSAM и чем он отличается от оригинальной модели SAM ?

MobileSAM - это легкая и быстрая модель сегментации изображений, оптимизированная для мобильных и краевых приложений. Она использует тот же конвейер, что и оригинальный SAM , но заменяет большой кодер ViT-H (632 М параметров) на компактный кодер Tiny-ViT (5 М параметров). В результате MobileSAM стал примерно в 5 раз меньше и в 7 раз быстрее оригинального SAM, работая примерно за 12 мс на изображение против 456 мс у SAM. Подробнее о реализации MobileSAM можно узнать в репозиторииMobileSAM на GitHub.

Как протестировать MobileSAM с помощью Ultralytics?

Тестирование MobileSAM в Ultralytics очень простое. Для прогнозирования сегментов можно использовать подсказки Point и Box. Например, с помощью подсказки Point:

from ultralytics import SAM

# Load the model
model = SAM("mobile_sam.pt")

# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

Более подробную информацию см. в разделе Тестирование MobileSAM в Ultralytics.

Почему я должен использовать MobileSAM для своего мобильного приложения?

MobileSAM идеально подходит для мобильных и пограничных приложений благодаря своей легкой конструкции и высокой скорости вычислений. По сравнению с оригинальным SAM, MobileSAM примерно в 5 раз меньше и в 7 раз быстрее, что делает его пригодным для сегментации в реальном времени на устройствах с ограниченными вычислительными ресурсами. Его эффективность позволяет мобильным устройствам выполнять сегментацию изображений в реальном времени без значительных задержек. Кроме того, MobileSAM поддерживает режим Inference, оптимизированный для работы на мобильных устройствах.

Как проходило обучение MobileSAM , и доступен ли код обучения?

MobileSAM был обучен на одном GPU на наборе данных из 100 тысяч изображений (1% от исходных изображений) менее чем за сутки. Код обучения будет выпущен в будущем, но в настоящее время вы можете получить доступ к предварительно обученным весам и деталям реализации в репозиторииMobileSAM на GitHub.

Каковы основные сценарии использования MobileSAM?

MobileSAM предназначен для быстрой и эффективной сегментации изображений в мобильных и пограничных средах. Основные области применения включают:

  • Обнаружение и сегментация объектов в реальном времени для мобильных приложений
  • Обработка изображений с низкой задержкой на устройствах с ограниченным количеством вычислений
  • Интеграция в мобильные приложения на базе ИИ для дополненной реальности (AR), аналитики и многого другого

Более подробную информацию о вариантах использования и производительности можно найти в разделе "Адаптация SAM к MobileSAM и блогеUltralytics о приложениях MobileSAM .



📅 Создано 1 год назад ✏️ Обновлено 1 месяц назад

Комментарии