Ultralytics YOLO27:
Get Started

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

Mobile Segment Anything (MobileSAM)#

MobileSAM — компактная и эффективная модель сегментации изображений, специально созданная для мобильных и периферийных устройств. Она переносит возможности модели сегментации любых объектов от Meta (SAM) на устройства с ограниченными вычислительными ресурсами и обеспечивает почти мгновенную сегментацию, сохраняя совместимость с исходным конвейером SAM. MobileSAM позволяет добиваться впечатляющих результатов сегментации при значительно меньших требованиях к размеру модели и скорости работы, будь то разработка приложений реального времени или развёртывание облегчённых решений.



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

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

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

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

В таблице ниже указаны доступная модель MobileSAM, её предварительно обученные веса, поддерживаемые задачи и совместимость с различными режимами работы, такими как инференс, валидация, обучение и экспорт. Поддерживаемые режимы отмечены ✅, а неподдерживаемые — ❌.

Тип моделиПредобученные весаПоддерживаемые задачиОбучениеВалидацияИнференсЭкспорт
MobileSAMmobile_sam.ptСегментация экземпляров❌❌✅❌

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

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

МодельРазмер
(МБ)
Параметры
(M)
Скорость (CPU)
(мс/изобр.)
SAM-b от Meta37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s с базовой сетью 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

# Профилировать 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#

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

Декодер масок с управлением по подсказкам#

Декодер масокОригинальная SAMMobileSAM
Параметры3,876 млн3,876 млн
Скорость4 мс4 мс

Сравнение всего конвейера#

Весь конвейер (кодировщик + декодер)Оригинальная SAMMobileSAM
Параметры641M9,66 млн
Скорость456ms12 мс

Ниже показана производительность 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")
АргументТипПо умолчаниюОписание
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 для подавления немаксимумов, чтобы отфильтровать перекрывающиеся рамки.
imgszint640Размер входных изображений (при необходимости округляется вверх до ближайшего числа, кратного 32).
max_detint300Максимальное число детекций на изображение для экономии памяти.
classeslist[int]NoneСписок индексов классов для обнаружения (например, [0, 1] для человека и велосипеда).
output_dirstrNoneКаталог для сохранения аннотаций (по умолчанию: соседний каталог <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.

Комментарии