Ultralytics YOLO27:

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

Сегментация всего на мобильных устройствах (MobileSAM)#

MobileSAM — компактная эффективная модель сегментации изображений, специально созданная для мобильных и периферийных устройств. Она переносит возможности модели Meta для сегментации всего (SAM) в среды с ограниченными вычислительными ресурсами и обеспечивает практически мгновенную сегментацию, сохраняя совместимость с исходным конвейером 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% от исходных изображений) менее чем за день.

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

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

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

Сравнение 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 с магистральной сетью 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, nms=False)  # YOLO26 NMS-free head; no-op for 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
Параметры637M5M
Скорость452ms8 мс

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

Декодировщик масокИсходная SAMMobileSAM
Параметры3,876M3,876M
Скорость4 мс4 мс

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

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

Производительность MobileSAM и исходной SAM ниже показана с использованием точечных подсказок и подсказок в виде рамок.

Изображение с точкой в качестве подсказки

Изображение с рамкой в качестве подсказки

MobileSAM примерно в 7 раз меньше и в 5 раз быстрее FastSAM. Дополнительную информацию можно найти на странице проекта MobileSAM.

Тестирование MobileSAM в Ultralytics#

Как и для исходной SAM, Ultralytics предоставляет простой интерфейс для тестирования MobileSAM с поддержкой точечных подсказок и подсказок в виде рамок.

Загрузка модели#

Загрузи предварительно обученные веса 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]])

Подсказка в виде рамки#

Пример
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.

Автоматическое создание наборов данных для сегментации с помощью модели обнаружения#

Чтобы автоматически аннотировать свой набор данных с помощью фреймворка 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
    
    # 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.

  • MobileSAM идеально подходит для мобильных и периферийных приложений благодаря своей легковесной конструкции и высокой скорости инференса. По сравнению с оригинальным SAM, MobileSAM имеет примерно в 66 раз меньше параметров и работает примерно в 38 раз быстрее, что делает модель подходящей для сегментации в реальном времени на устройствах с ограниченными вычислительными ресурсами. Эффективность MobileSAM позволяет мобильным устройствам выполнять сегментацию изображений в реальном времени без значительной задержки. Кроме того, MobileSAM поддерживает режим инференса, оптимизированный для мобильной производительности.

  • MobileSAM обучался на одном GPU с датасетом из 100 тыс. изображений (1% от исходных изображений SA-1B) менее чем за день, дистиллируя энкодер изображений ViT-H модели SAM в энкодер Tiny-ViT. Предобученные веса и детали реализации доступны в репозитории MobileSAM на GitHub.

  • MobileSAM предназначена для быстрой и эффективной сегментации изображений в мобильных и периферийных средах. Основные варианты использования включают:

    • Обнаружение и сегментация объектов в реальном времени для мобильных приложений
    • Обработка изображений с низкой задержкой на устройствах с ограниченными вычислительными ресурсами
    • Интеграция в мобильные приложения на основе ИИ для дополненной реальности (AR), аналитики и других задач

    Подробнее о вариантах использования и производительности см. в разделах Переход с SAM на MobileSAM и статье в блоге Ultralytics о приложениях MobileSAM.

Комментарии