Meet YOLO26: next-gen vision AI.

Link to this sectionFast Segment Anything Model (FastSAM)#

Fast Segment Anything Model (FastSAM) — это инновационное решение для задачи сегментации объектов в реальном времени, основанное на CNN. Эта задача разработана для сегментации любого объекта на изображении на основе различных возможных подсказок от пользователя. FastSAM значительно снижает вычислительные затраты, сохраняя при этом конкурентоспособную производительность, что делает его практичным выбором для множества задач компьютерного зрения.



Watch: Object Tracking using FastSAM with Ultralytics

Link to this sectionАрхитектура модели#

Обзор архитектуры Fast Segment Anything Model (FastSAM)

Link to this sectionОбзор#

FastSAM разработан для преодоления ограничений Segment Anything Model (SAM), тяжелой модели на основе Transformer, требующей значительных вычислительных ресурсов. FastSAM разделяет задачу сегментации на два последовательных этапа: сегментация всех экземпляров (instance segmentation) и выбор на основе подсказок. На первом этапе используется YOLOv8-seg для создания масок сегментации всех экземпляров на изображении. На втором этапе модель выдает область интереса, соответствующую подсказке.

Link to this sectionКлючевые особенности#

  1. Решение в реальном времени: Благодаря высокой вычислительной эффективности CNN, FastSAM предоставляет решение для задачи сегментации в реальном времени, что делает его ценным для промышленных приложений, требующих быстрых результатов.

  2. Эффективность и производительность: FastSAM предлагает значительное снижение вычислительных требований и ресурсов без ущерба для качества производительности. Он достигает производительности, сопоставимой с SAM, но с гораздо меньшими затратами ресурсов, что позволяет использовать его в реальном времени.

  3. Сегментация на основе подсказок: FastSAM может сегментировать любой объект на изображении, руководствуясь различными возможными подсказками от пользователя, обеспечивая гибкость и адаптивность в различных сценариях.

  4. На основе YOLOv8-seg: FastSAM основан на YOLOv8-seg, детекторе объектов с веткой для сегментации экземпляров. Это позволяет ему эффективно создавать маски сегментации для всех экземпляров на изображении.

  5. Конкурентоспособные результаты на тестах: В задаче предложения объектов на MS COCO модель FastSAM достигает высоких баллов со значительно большей скоростью, чем SAM, на одной NVIDIA RTX 3090, что демонстрирует ее эффективность и возможности.

  6. Практическое применение: Предложенный подход предоставляет новое практическое решение для большого числа задач компьютерного зрения с очень высокой скоростью, в десятки или сотни раз быстрее существующих методов.

  7. Возможность сжатия модели: FastSAM демонстрирует возможность пути, который может значительно сократить вычислительные усилия за счет введения искусственного априорного знания в структуру, тем самым открывая новые возможности для архитектуры больших моделей для общих задач компьютерного зрения.

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

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

Тип моделиПредобученные весаПоддерживаемые задачиInferenceValidationTrainingЭкспорт
FastSAM-sFastSAM-s.ptInstance Segmentation
FastSAM-xFastSAM-x.ptInstance Segmentation

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

Здесь мы сравниваем модели Meta SAM 2, включая самый маленький вариант SAM2-t, с моделями сегментации 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Примеры использования#

Модели FastSAM легко интегрируются в твои приложения на Python. Ultralytics предоставляет удобный Python API и команды CLI для оптимизации разработки.

Link to this sectionИспользование для предсказания#

Чтобы выполнить обнаружение объектов на изображении, используй метод predict, как показано ниже:

Пример
from ultralytics import FastSAM

# Define an inference source
source = "path/to/bus.jpg"

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])

# Run inference with texts prompt
results = model(source, texts="a photo of a dog")

# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")

Этот фрагмент кода демонстрирует простоту загрузки предобученной модели и запуска предсказания на изображении.

Пример FastSAMPredictor

Таким образом ты можешь запустить инференс на изображении, получить все results сегментации один раз и запускать инференс подсказок многократно, не запуская основной инференс повторно.

from ultralytics.models.fastsam import FastSAMPredictor

# Create FastSAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", model="FastSAM-s.pt", save=False, imgsz=1024)
predictor = FastSAMPredictor(overrides=overrides)

# Segment everything
everything_results = predictor("ultralytics/assets/bus.jpg")

# Prompt inference
bbox_results = predictor.prompt(everything_results, bboxes=[[200, 200, 300, 300]])
point_results = predictor.prompt(everything_results, points=[200, 200])
text_results = predictor.prompt(everything_results, texts="a photo of a dog")
Примечание

Все возвращаемые results в приведенных выше примерах — это объекты Results, которые позволяют легко получить доступ к предсказанным маскам и исходному изображению.

Link to this sectionИспользование для валидации#

Валидацию модели на наборе данных можно выполнить следующим образом:

Пример
from ultralytics import FastSAM

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Validate the model
results = model.val(data="coco8-seg.yaml")

Обрати внимание, что FastSAM поддерживает только обнаружение и сегментацию объектов одного класса. Это означает, что он будет распознавать и сегментировать все объекты как один и тот же класс. Поэтому при подготовке набора данных тебе необходимо преобразовать все ID категорий объектов в 0.

Link to this sectionИспользование для отслеживания#

Чтобы выполнить отслеживание объектов на изображении, используй метод track, как показано ниже:

Пример
from ultralytics import FastSAM

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Track with a FastSAM model on a video
results = model.track(source="path/to/video.mp4", imgsz=640)

Link to this sectionОфициальное использование FastSAM#

FastSAM также доступен непосредственно из репозитория https://github.com/CASIA-IVA-Lab/FastSAM. Вот краткий обзор типичных шагов, которые ты можешь предпринять для использования FastSAM:

Link to this sectionУстановка#

  1. Клонируй репозиторий FastSAM:

    git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
  2. Создай и активируй среду Conda с Python 3.9:

    conda create -n FastSAM python=3.9
    conda activate FastSAM
  3. Перейди в клонированный репозиторий и установи необходимые пакеты:

    cd FastSAM
    pip install -r requirements.txt
  4. Установи модель CLIP:

    pip install git+https://github.com/ultralytics/CLIP.git

Link to this sectionПример использования#

  1. Скачай чекпоинт модели.

  2. Используй FastSAM для инференса. Примеры команд:

    • Сегментировать все на изображении:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
    • Сегментировать конкретные объекты с помощью текстовой подсказки:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog"
    • Сегментировать объекты внутри bounding box (укажи координаты рамки в формате xywh):

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]"
    • Сегментировать объекты рядом с определенными точками:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"

Кроме того, ты можешь попробовать FastSAM через демо-версию Colab от CASIA-IVA-Lab.

Link to this sectionЦитирование и благодарности#

Мы хотели бы поблагодарить авторов FastSAM за их значительный вклад в область сегментации экземпляров в реальном времени:

Цитата
  @misc{zhao2023fast,
        title={Fast Segment Anything},
        author={Xu Zhao and Wenchao Ding and Yongqi An and Yinglong Du and Tao Yu and Min Li and Ming Tang and Jinqiao Wang},
        year={2023},
        eprint={2306.12156},
        archivePrefix={arXiv},
        primaryClass={cs.CV}
  }

Оригинальную статью о FastSAM можно найти на arXiv. Авторы сделали свою работу общедоступной, а кодовую базу можно найти на GitHub. Мы ценим их усилия по развитию области и обеспечению доступа к своей работе для широкого сообщества.

Link to this sectionFAQ#

Link to this sectionЧто такое FastSAM и чем он отличается от SAM?#

FastSAM (сокращение от Fast Segment Anything Model) — это решение, основанное на сверточных нейронных сетях (CNN), работающее в реальном времени. Оно разработано для снижения вычислительных нагрузок при сохранении высокой производительности в задачах сегментации объектов. В отличие от Segment Anything Model (SAM), которая использует более тяжелую архитектуру на основе Transformer, FastSAM использует Ultralytics YOLOv8-seg для эффективной сегментации экземпляров в два этапа: сегментация всех экземпляров, а затем выбор на основе подсказок.

Link to this sectionКак FastSAM достигает производительности сегментации в реальном времени?#

FastSAM достигает сегментации в реальном времени за счет разделения задачи сегментации на этапы: сегментация всех экземпляров с помощью YOLOv8-seg и этап выбора на основе подсказок. Используя вычислительную эффективность CNN, FastSAM предлагает значительное снижение затрат ресурсов при сохранении конкурентоспособной производительности. Этот двухэтапный подход позволяет FastSAM обеспечивать быструю и эффективную сегментацию, подходящую для приложений, требующих оперативных результатов.

Link to this sectionКаковы практические применения FastSAM?#

FastSAM применим для множества задач компьютерного зрения, требующих производительности сегментации в реальном времени. Приложения включают:

  • Промышленная автоматизация для контроля и обеспечения качества
  • Видеоанализ в реальном времени для безопасности и наблюдения
  • Автономные транспортные средства для обнаружения и сегментации объектов
  • Медицинская визуализация для точных и быстрых задач сегментации

Способность обрабатывать различные подсказки от пользователя делает FastSAM адаптивным и гибким для самых разных сценариев.

Link to this sectionКак использовать модель FastSAM для инференса в Python?#

Для использования FastSAM для инференса в Python ты можешь следовать примеру ниже:

from ultralytics import FastSAM

# Define an inference source
source = "path/to/bus.jpg"

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])

# Run inference with texts prompt
results = model(source, texts="a photo of a dog")

# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")

Более подробную информацию о методах инференса смотри в разделе Использование для предсказания документации.

Link to this sectionКакие типы подсказок поддерживает FastSAM для задач сегментации?#

FastSAM поддерживает несколько типов подсказок для управления задачами сегментации:

  • Подсказка «Всё» (Everything Prompt): Генерирует сегментацию для всех видимых объектов.
  • Подсказка Bounding Box: Сегментирует объекты внутри указанной рамки.
  • Текстовая подсказка: Использует описательный текст для сегментации объектов, соответствующих описанию.
  • Точечная подсказка: Сегментирует объекты рядом с конкретными точками, заданными пользователем.

Эта гибкость позволяет FastSAM адаптироваться к широкому спектру сценариев взаимодействия с пользователем, повышая его полезность в различных приложениях. Для получения дополнительной информации об использовании этих подсказок обратись к разделу Основные функции.

Комментарии