
Link to this sectionMobile Segment Anything (MobileSAM)#
MobileSAM — это компактная и эффективная модель сегментации изображений, созданная специально для мобильных и периферийных устройств. Разработанная для того, чтобы перенести мощь модели Meta Segment Anything (SAM) в условия ограниченных вычислительных ресурсов, MobileSAM обеспечивает практически мгновенную сегментацию, сохраняя совместимость с оригинальным конвейером SAM. Независимо от того, разрабатываешь ли ты приложения реального времени или легкие развертывания, MobileSAM предоставляет впечатляющие результаты сегментации, требуя при этом значительно меньше ресурсов по размеру и скорости, чем ее предшественники.
Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉
MobileSAM была внедрена в различных проектах, включая Grounding-SAM, AnyLabeling и Segment Anything in 3D.
MobileSAM была обучена на одном GPU с использованием набора данных из 100 тыс. изображений (1% от оригинальных) менее чем за день. Код обучения будет выпущен в будущем.
Link to this sectionДоступные модели, поддерживаемые задачи и режимы работы#
В таблице ниже представлены доступная модель MobileSAM, ее предварительно обученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как Inference, Validation, Training и Export. Поддерживаемые режимы отмечены ✅, неподдерживаемые — ❌.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Inference | Validation | Training | Экспорт |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | Instance Segmentation | ✅ | ❌ | ❌ | ❌ |
Link to this sectionСравнение MobileSAM и YOLO#
Следующее сравнение подчеркивает различия между вариантами SAM от Meta, MobileSAM и моделями сегментации Ultralytics, включая YOLO26n-seg:
| Модель | Размер (МБ) | Параметры (М) | Скорость (CPU) (мс/из) |
|---|---|---|---|
| Meta SAM-b | 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 с backbone 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
# 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 (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)
model = YOLO(onnx_path)
model(ASSETS)Link to this sectionАдаптация от SAM к MobileSAM#
MobileSAM сохраняет тот же конвейер, что и оригинальный SAM, включая предварительную обработку, постобработку и все интерфейсы. Это означает, что ты можешь перейти от SAM к MobileSAM с минимальными изменениями в своем рабочем процессе.
Ключевое отличие заключается в кодировщике изображений: MobileSAM заменяет оригинальный кодировщик ViT-H (637M параметров) на гораздо более компактный кодировщик Tiny-ViT (5M параметров). На одном GPU MobileSAM обрабатывает изображение примерно за 12мс (8мс на кодировщик, 4мс на декодер масок).
Link to this sectionСравнение кодировщиков изображений на базе ViT#
| Кодировщик изображений | Оригинальный SAM | MobileSAM |
|---|---|---|
| Параметры | 637M | 5M |
| Скорость | 452 мс | 8 мс |
Link to this sectionДекодер масок с подсказками#
| Декодер масок | Оригинальный SAM | MobileSAM |
|---|---|---|
| Параметры | 3.876M | 3.876M |
| Скорость | 4 мс | 4 мс |
Link to this sectionСравнение всего конвейера#
| Весь конвейер (кодировщик + декодер) | Оригинальный SAM | MobileSAM |
|---|---|---|
| Параметры | 641M | 9.66M |
| Скорость | 456 мс | 12 мс |
Производительность MobileSAM и оригинального SAM проиллюстрирована ниже с использованием подсказок в виде точек и рамок.


MobileSAM примерно в 7 раз меньше и в 5 раз быстрее, чем FastSAM. Для получения дополнительной информации посети страницу проекта MobileSAM.
Link to this sectionТестирование MobileSAM в Ultralytics#
Так же, как и для оригинального SAM, Ultralytics предоставляет простой интерфейс для тестирования MobileSAM, поддерживающий подсказки как в виде точек, так и в виде рамок.
Link to this sectionЗагрузка модели#
Скачай предварительно обученные веса MobileSAM из активов Ultralytics.
Link to this sectionПодсказка в виде точки#
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]])Link to this sectionПодсказка в виде рамки#
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a single box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])
# Predict multiple segments based on multiple box prompts
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])И MobileSAM, и SAM используют один и тот же API. Дополнительные сведения об использовании см. в документации SAM.
Link to this sectionАвтоматическое создание наборов данных для сегментации с использованием модели обнаружения#
Чтобы автоматически аннотировать свой набор данных с помощью фреймворка 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 для NMS для фильтрации перекрывающихся рамок. |
imgsz | int | 640 | Размер входного изображения для изменения размера (должен быть кратен 32). |
max_det | int | 300 | Максимальное количество обнаружений на изображение для экономии памяти. |
classes | list[int] | None | Список индексов классов для обнаружения (например, [0, 1] для человека и велосипеда). |
output_dir | str | None | Директория сохранения аннотаций (по умолчанию: папка, соседняя с <data>_auto_annotate_labels). |
Link to this sectionЦитирование и благодарности#
Если 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.
Link to this sectionFAQ#
Link to this sectionЧто такое MobileSAM и чем она отличается от оригинальной модели SAM?#
MobileSAM — это легкая и быстрая модель сегментации изображений, оптимизированная для мобильных и периферийных устройств. Она сохраняет тот же конвейер, что и оригинальная SAM, но заменяет крупный кодировщик ViT-H (637M параметров) на компактный кодировщик Tiny-ViT (5M параметров). В результате MobileSAM примерно в 5 раз меньше и в 7 раз быстрее оригинальной SAM, работая со скоростью около 12мс на изображение против 456мс у SAM. Узнай больше о реализации MobileSAM в репозитории MobileSAM на GitHub.
Link to this sectionКак я могу протестировать MobileSAM с помощью Ultralytics?#
Тестирование MobileSAM в Ultralytics не требует усилий. Ты можешь использовать подсказки в виде точек и рамок для предсказания сегментов. Например, при использовании подсказки в виде точки:
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.
Link to this sectionПочему мне следует использовать MobileSAM для моего мобильного приложения?#
MobileSAM идеально подходит для мобильных и периферийных приложений благодаря своей легкости и высокой скорости вывода. По сравнению с оригинальным SAM, MobileSAM примерно в 5 раз меньше и в 7 раз быстрее, что делает ее подходящей для сегментации в реальном времени на устройствах с ограниченными вычислительными ресурсами. Ее эффективность позволяет мобильным устройствам выполнять сегментацию изображений в реальном времени без существенной задержки. Кроме того, MobileSAM поддерживает режим Inference, оптимизированный для мобильной производительности.
Link to this sectionКак обучалась MobileSAM и доступен ли код обучения?#
MobileSAM была обучена на одном GPU с набором данных из 100 тыс. изображений (1% от исходных) менее чем за день. Хотя код обучения будет выпущен в будущем, сейчас ты можешь получить доступ к предварительно обученным весам и деталям реализации в репозитории MobileSAM на GitHub.
Link to this sectionКаковы основные сценарии использования MobileSAM?#
MobileSAM предназначена для быстрой и эффективной сегментации изображений в мобильных и периферийных средах. Основные сценарии использования включают:
- Обнаружение и сегментация объектов в реальном времени для мобильных приложений
- Обработка изображений с низкой задержкой на устройствах с ограниченными вычислительными ресурсами
- Интеграция в мобильные приложения с поддержкой ИИ для дополненной реальности (AR), аналитики и многого другого
Более подробную информацию о сценариях использования и производительности см. в разделах Адаптация от SAM к MobileSAM и блоге Ultralytics о применении MobileSAM.