Мобильный сегмент "Все что угодно" (MobileSAM)
Статья MobileSAM теперь доступна на сайте arXiv.
Демонстрация работы MobileSAM на CPU доступна по этой демонстрационной ссылке. Выполнение на CPU Mac i5 занимает около 3 секунд. На Hugging Face интерфейс и менее производительные процессоры способствуют более медленному отклику, но он продолжает эффективно работать.
Смотреть: Как выполнить вывод с помощью MobileSAM , используя Ultralytics | Пошаговое руководство 🎉
MobileSAM реализована в различных проектах, включая Grounding-SAM, AnyLabeling и Segment Anything in 3D.
MobileSAM обучается на одном GPU с набором данных 100 тыс. (1% от исходных изображений) менее чем за сутки. Код для этого обучения будет доступен в будущем.
Доступные модели, поддерживаемые задачи и режимы работы
В этой таблице представлены доступные модели с определенными предварительно обученными весами, задачи, которые они поддерживают, и их совместимость с различными режимами работы, такими как Inference, Validation, Training и Export, обозначенные ✅ emojis для поддерживаемых режимов и ❌ emojis для неподдерживаемых режимов.
Тип модели | Предварительно обученные веса | Поддерживаемые задачи | Заключение | Валидация | Обучение | Экспорт |
---|---|---|---|---|---|---|
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 по производительности сопоставим с оригинальным SAM и сохраняет тот же конвейер, за исключением изменения кодировщика изображений. В частности, мы заменяем оригинальный тяжелый кодер ViT-H (632 Мбайт) на более компактный Tiny-ViT (5 Мбайт). На одном GPU, MobileSAM работает примерно 12 мс на изображение: 8 мс на кодер изображения и 4 мс на декодер маски.
В следующей таблице представлено сравнение кодировщиков изображений на базе технологии ViT:
Кодировщик изображений | Оригинал SAM | MobileSAM |
---|---|---|
Параметры | 611M | 5M |
Скорость | 452 мс | 8 мс |
И в оригинальном SAM , и в MobileSAM используется один и тот же декодер масок, управляемый подсказками:
Декодер масок | Оригинал 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
Как и оригинал SAMмы предлагаем в Ultralytics простой метод тестирования, включающий режимы для точечных и коробочных подсказок.
Скачать модель
Предварительно обученные веса 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
как показано ниже:
Пример
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
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 полезным в ваших исследованиях или разработках, пожалуйста, подумайте о том, чтобы сослаться на нашу статью:
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Что такое MobileSAM и чем она отличается от оригинальной модели SAM ?
MobileSAM - это легкая и быстрая модель сегментации изображений, предназначенная для мобильных приложений. В ней сохранен тот же конвейер, что и в оригинальном SAM , но тяжелый кодер ViT-H (632 М параметров) заменен на более компактный кодер Tiny-ViT (5 М параметров). В результате этого изменения MobileSAM стал примерно в 5 раз меньше и в 7 раз быстрее оригинального SAM. Например, MobileSAM работает примерно за 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.
Почему я должен использовать MobileSAM для своего мобильного приложения?
MobileSAM идеально подходит для мобильных приложений благодаря своей легкой архитектуре и высокой скорости вычислений. По сравнению с оригинальным SAM, MobileSAM примерно в 5 раз меньше и в 7 раз быстрее, что делает его подходящим для сред, где вычислительные ресурсы ограничены. Благодаря такой эффективности мобильные устройства могут выполнять сегментацию изображений в реальном времени без значительных задержек. Кроме того, модели MobileSAM, такие как Inference, оптимизированы для работы на мобильных устройствах.
Как проходило обучение на сайте MobileSAM , и доступен ли код обучения?
MobileSAM был обучен на одном GPU с набором данных 100 тыс. изображений, что составляет 1% от исходных изображений, менее чем за день. Хотя код обучения будет доступен в будущем, в настоящее время вы можете изучить другие аспекты MobileSAM в репозиторииMobileSAM на GitHub. Этот репозиторий включает в себя предварительно обученные веса и детали реализации для различных приложений.
Каковы основные сценарии использования MobileSAM?
MobileSAM предназначен для быстрой и эффективной сегментации изображений в мобильных условиях. Основные области применения включают:
- Обнаружение и сегментация объектов в реальном времени для мобильных приложений.
- Обработка изображений с низкой задержкой в устройствах с ограниченными вычислительными ресурсами.
- Интеграция в мобильные приложения, управляемые ИИ, для таких задач, как дополненная реальность (AR) и аналитика в реальном времени.
Более подробные примеры использования и сравнения производительности приведены в разделе Адаптация с SAM на MobileSAM.