Meet YOLO26: next-gen vision AI.

Логотип легкой модели сегментации изображений MobileSAM

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. Поддерживаемые режимы отмечены ✅, неподдерживаемые — ❌.

Тип моделиПредобученные весаПоддерживаемые задачиInferenceValidationTrainingЭкспорт
MobileSAMmobile_sam.ptInstance Segmentation

Link to this sectionСравнение MobileSAM и YOLO#

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

МодельРазмер
(МБ)
Параметры
(М)
Скорость (CPU)
(мс/из)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s с backbone YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7.1 (в 11.0 раз меньше)3.4 (в 11.4 раза меньше)24.8 (в 945 раз быстрее)
Ultralytics YOLO11n-seg6.2 (в 12.6 раз меньше)2.9 (в 13.4 раза меньше)24.3 (в 964 раза быстрее)
Ultralytics YOLO26n-seg6.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#

Кодировщик изображенийОригинальный SAMMobileSAM
Параметры637M5M
Скорость452 мс8 мс

Link to this sectionДекодер масок с подсказками#

Декодер масокОригинальный SAMMobileSAM
Параметры3.876M3.876M
Скорость4 мс4 мс

Link to this sectionСравнение всего конвейера#

Весь конвейер (кодировщик + декодер)Оригинальный SAMMobileSAM
Параметры641M9.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")
АргументТипПо умолчаниюОписание
datastrобязательноПуть к директории, содержащей целевые изображения для аннотирования или сегментации.
det_modelstr'yolo26x.pt'Путь к модели обнаружения YOLO для начального обнаружения объектов.
sam_modelstr'sam_b.pt'Путь к модели SAM для сегментации (поддерживает веса SAM, SAM 2, MobileSAM и SAM 3).
devicestr''Вычислительное устройство (например, 'cuda:0', 'cpu' или '' для автоматического определения устройства).
conffloat0.25Порог уверенности YOLO для фильтрации слабых обнаружений.
ioufloat0.45Порог IoU для NMS для фильтрации перекрывающихся рамок.
imgszint640Размер входного изображения для изменения размера (должен быть кратен 32).
max_detint300Максимальное количество обнаружений на изображение для экономии памяти.
classeslist[int]NoneСписок индексов классов для обнаружения (например, [0, 1] для человека и велосипеда).
output_dirstrNoneДиректория сохранения аннотаций (по умолчанию: папка, соседняя с <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.

Комментарии