YOLO Vision 2026:

Логотип лёгкой модели сегментации изображений 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)
    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
Скорость452ms8ms

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

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

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

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

Производительность 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 примерно в 5 раз меньше и в 7 раз быстрее исходной SAM: обработка одного изображения занимает около 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 примерно в 5 раз меньше и в 7 раз быстрее, что делает её подходящей для сегментации в реальном времени на устройствах с ограниченными вычислительными ресурсами. Благодаря своей эффективности мобильные устройства могут выполнять сегментацию изображений в реальном времени без существенных задержек. Кроме того, MobileSAM поддерживает режим вывода, оптимизированный для мобильных устройств.

  • MobileSAM обучалась на одном GPU на наборе данных из 100 тыс. изображений (1% исходных изображений) менее чем за день. Хотя код обучения будет выпущен в будущем, уже сейчас ты можешь получить предварительно обученные веса и сведения о реализации в репозитории MobileSAM на GitHub.

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

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

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

Комментарии