YOLO Vision 2026:

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

Mobile Segment Anything (MobileSAM)#

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

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

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

Тип моделиПредобученные весаПоддерживаемые задачиTrainingValidationInferenceЭкспорт
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 (637M параметров) на гораздо более компактный кодировщик Tiny-ViT (5M параметров). На одном 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 для NMS для фильтрации перекрывающихся рамок.
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.

FAQ#

  • MobileSAM — это легкая и быстрая модель сегментации изображений, оптимизированная для мобильных и периферийных приложений. Она сохраняет тот же конвейер, что и оригинальный SAM, но заменяет большой энкодер ViT-H (637M параметров) на компактный энкодер Tiny-ViT (5M параметров). В результате 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 поддерживает режим Inference, оптимизированный для мобильной производительности.

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

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

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

    Дополнительные сведения о вариантах использования и производительности см. в разделах Адаптация с SAM на MobileSAM и Блог Ultralytics о приложениях MobileSAM.

Комментарии