
Mobile Segment Anything (MobileSAM)#
MobileSAM — компактная и эффективная модель сегментации изображений, специально созданная для мобильных и периферийных устройств. Она переносит возможности модели сегментации любых объектов от Meta (SAM) на устройства с ограниченными вычислительными ресурсами и обеспечивает почти мгновенную сегментацию, сохраняя совместимость с исходным конвейером SAM. MobileSAM позволяет добиваться впечатляющих результатов сегментации при значительно меньших требованиях к размеру модели и скорости работы, будь то разработка приложений реального времени или развёртывание облегчённых решений.
Смотри: Как запустить инференс с MobileSAM с помощью Ultralytics | Пошаговое руководство 🎉
MobileSAM используется в различных проектах, включая Grounding-SAM, AnyLabeling и Segment Anything in 3D.
MobileSAM обучили менее чем за сутки на одном GPU с использованием набора данных из 100 тыс. изображений (1% от исходного количества изображений).
Доступные модели, поддерживаемые задачи и режимы работы#
В таблице ниже указаны доступная модель MobileSAM, её предварительно обученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как инференс, валидация, обучение и экспорт. Поддерживаемые режимы отмечены ✅, а неподдерживаемые — ❌.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Обучение | Валидация | Инференс | Экспорт |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | Сегментация экземпляров | ❌ | ❌ | ✅ | ❌ |
Сравнение MobileSAM и YOLO#
В следующем сравнении показаны различия между вариантами SAM от Meta, MobileSAM и моделями сегментации Ultralytics, включая YOLO26n-seg:
| Модель | Размер (МБ) | Параметры (M) | Скорость (CPU) (мс/изобр.) |
|---|---|---|---|
| SAM-b от Meta | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s с базовой сетью YOLOv8 | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (в 11.0 раз меньше) | 3.4 (в 11.4 раза меньше) | 24.8 (в 945 раз быстрее) |
| Ultralytics YOLO11n-seg | 6.2 (в 12.6 раза меньше) | 2.9 (в 13.4 раза меньше) | 24.3 (в 964 раза быстрее) |
| Ultralytics YOLO26n-seg | 6.7 (в 11.7 раза меньше) | 2.7 (в 14.4 раза меньше) | 25.2 (в 930 раз быстрее) |
Это сравнение демонстрирует существенные различия в размере и скорости моделей между вариантами SAM и моделями YOLO для сегментации. Хотя модели SAM обладают уникальными возможностями автоматической сегментации, модели YOLO — особенно YOLOv8n-seg, YOLO11n-seg и YOLO26n-seg — значительно компактнее, быстрее и эффективнее используют вычислительные ресурсы.
Скорость SAM измерялась с PyTorch, скорость YOLO — с ONNX Runtime. Тесты проводились на Apple M4 Air 2025 года с 16 ГБ оперативной памяти с использованием torch==2.10.0, ultralytics==8.4.31 и onnxruntime==1.24.4. Чтобы воспроизвести эти результаты:
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Профилировать 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)
# Профилирование FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Профилировать модели YOLO (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
model = YOLO(file_name)
model.info()
onnx_path = model.export(format="onnx", dynamic=True, nms=False) # Голова YOLO26 без NMS; ничего не делает для YOLOv8/YOLO11
model = YOLO(onnx_path)
model(ASSETS)Переход с SAM на MobileSAM#
MobileSAM сохраняет тот же конвейер, что и оригинальная SAM, включая предварительную обработку, постобработку и все интерфейсы. Это позволяет перейти с SAM на MobileSAM с минимальными изменениями рабочего процесса.
Ключевое отличие — кодировщик изображений: MobileSAM заменяет оригинальный кодировщик ViT-H (637 млн параметров) гораздо меньшим кодировщиком Tiny-ViT (5 млн параметров). На одном GPU MobileSAM обрабатывает изображение примерно за 12 мс (8 мс занимает кодировщик, 4 мс — декодер масок).
Сравнение кодировщиков изображений на основе ViT#
| Кодировщик изображений | Оригинальная SAM | MobileSAM |
|---|---|---|
| Параметры | 637M | 5 млн |
| Скорость | 452ms | 8 мс |
Декодер масок с управлением по подсказкам#
| Декодер масок | Оригинальная SAM | MobileSAM |
|---|---|---|
| Параметры | 3,876 млн | 3,876 млн |
| Скорость | 4 мс | 4 мс |
Сравнение всего конвейера#
| Весь конвейер (кодировщик + декодер) | Оригинальная SAM | MobileSAM |
|---|---|---|
| Параметры | 641M | 9,66 млн |
| Скорость | 456ms | 12 мс |
Ниже показана производительность MobileSAM и оригинальной SAM с подсказками в виде точек и рамок.


MobileSAM примерно в 7 раз компактнее и в 5 раз быстрее FastSAM. Подробности смотри на странице проекта MobileSAM.
Тестирование MobileSAM в Ultralytics#
Как и для оригинальной SAM, в Ultralytics предусмотрен простой интерфейс для тестирования MobileSAM с поддержкой подсказок в виде точек и рамок.
Загрузка модели#
Скачай предварительно обученные веса MobileSAM из ресурсов Ultralytics.
Подсказка-точка#
from ultralytics import SAM
# Загрузи модель
model = SAM("mobile_sam.pt")
# Предсказание сегмента по одной подсказке-точке
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
# Предсказание нескольких сегментов по нескольким подсказкам-точкам
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])
# Предсказание сегмента по нескольким подсказкам-точкам для каждого объекта
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Предсказание сегмента с использованием положительных и отрицательных подсказок.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])Подсказка-рамка#
from ultralytics import SAM
# Загрузи модель
model = SAM("mobile_sam.pt")
# Предсказание сегмента по одной подсказке-рамке
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])
# Предсказание нескольких сегментов по нескольким подсказкам-рамкам
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])MobileSAM и SAM используют один и тот же API. Подробности об использовании смотри в документации SAM.
Автоматическое создание датасетов для сегментации с помощью модели обнаружения#
Чтобы автоматически разметить датасет с помощью фреймворка Ultralytics, используй функцию auto_annotate, как показано ниже:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
data | str | обязательно | Путь к каталогу с изображениями, которые нужно аннотировать или сегментировать. |
det_model | str | 'yolo26x.pt' | Путь к модели обнаружения YOLO для первоначального обнаружения объектов. |
sam_model | str | 'sam_b.pt' | Путь к модели SAM для сегментации (поддерживаются веса SAM, SAM 2, MobileSAM и SAM 3). |
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 | Каталог для сохранения аннотаций (по умолчанию: соседний каталог <data>_auto_annotate_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, но заменяет большой кодировщик ViT-H (637 млн параметров) компактным кодировщиком Tiny-ViT (5 млн параметров). Благодаря этому весь конвейер MobileSAM примерно в 66 раз компактнее оригинальной SAM (9,66 млн против 641 млн параметров) и примерно в 38 раз быстрее: обработка одного изображения занимает около 12 мс против 456 мс у SAM. Подробнее о реализации MobileSAM можно узнать в репозитории MobileSAM на GitHub.
Протестировать MobileSAM в Ultralytics просто. Для предсказания сегментов можно использовать подсказки в виде точек и рамок. Например, подсказка-точка:
from ultralytics import SAM # Загрузи модель model = SAM("mobile_sam.pt") # Предсказание сегмента по подсказке-точке model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])Подробнее смотри в разделе «Тестирование MobileSAM в Ultralytics».
MobileSAM отлично подходит для мобильных и периферийных приложений благодаря компактной архитектуре и высокой скорости инференса. По сравнению с оригинальной SAM у MobileSAM примерно в 66 раз меньше параметров, а работает она примерно в 38 раз быстрее, поэтому подходит для сегментации в реальном времени на устройствах с ограниченными вычислительными ресурсами. Благодаря высокой эффективности мобильные устройства могут выполнять сегментацию изображений в реальном времени без значительных задержек. Кроме того, MobileSAM поддерживает режим инференса, оптимизированный для мобильных устройств.
MobileSAM обучили менее чем за день на одном GPU с датасетом из 100 тыс. изображений (1% исходных изображений SA-1B), дистиллировав кодировщик изображений ViT-H модели SAM в кодировщик Tiny-ViT. Предварительно обученные веса и подробности реализации доступны в репозитории MobileSAM на GitHub.
MobileSAM предназначена для быстрой и эффективной сегментации изображений на мобильных и периферийных устройствах. Основные сценарии использования:
- Обнаружение и сегментация объектов в реальном времени в мобильных приложениях
- Обработка изображений с низкой задержкой на устройствах с ограниченными вычислительными ресурсами
- Интеграция в мобильные приложения на базе ИИ для дополненной реальности (AR), аналитики и других задач
Подробнее о сценариях использования и производительности смотри в разделе «Переход с SAM на MobileSAM» и блоге Ultralytics о применении Segment Anything.