Link to this sectionSAM 2: Segment Anything Model 2#
SAM 2, преемник Segment Anything Model (SAM) от Meta, — это передовой инструмент, созданный для комплексной сегментации объектов как на изображениях, так и на видео. Он отлично справляется с обработкой сложных визуальных данных благодаря унифицированной архитектуре промптируемой модели, поддерживающей обработку в реальном времени и zero-shot обобщение.
Модели SAM 2.1 обеспечивают работу функции умной аннотации на платформе Ultralytics, позволяя выполнять сегментацию на основе кликов для быстрой разметки датасетов. Подробности см. в руководстве по аннотированию.

Link to this sectionОсновные функции#
Watch: How to Run Inference with Meta's SAM2 using Ultralytics | Step-by-Step Guide 🎉
Link to this sectionУнифицированная архитектура модели#
SAM 2 объединяет возможности сегментации изображений и видео в единой модели. Эта унификация упрощает развертывание и обеспечивает стабильную производительность для различных типов медиа. Модель использует гибкий интерфейс на основе промптов, позволяя тебе указывать интересующие объекты через различные типы подсказок, такие как точки, ограничивающие рамки (bounding boxes) или маски.
Link to this sectionПроизводительность в реальном времени#
Модель достигает скорости вывода в реальном времени, обрабатывая примерно 44 кадра в секунду. Это делает SAM 2 подходящей для приложений, требующих мгновенной обратной связи, например, для редактирования видео и дополненной реальности.
Link to this sectionZero-shot обобщение#
SAM 2 может сегментировать объекты, которые никогда раньше не встречала, демонстрируя мощное zero-shot обобщение. Это особенно полезно в разнообразных или динамично развивающихся визуальных областях, где предопределенные категории могут не охватывать все возможные объекты.
Link to this sectionИнтерактивное уточнение#
Ты можешь итеративно уточнять результаты сегментации, предоставляя дополнительные промпты, что дает возможность точно управлять выводом. Такая интерактивность незаменима при доработке результатов в таких задачах, как аннотирование видео или медицинская визуализация.
Link to this sectionПродвинутая обработка визуальных сложностей#
SAM 2 включает механизмы для решения типичных проблем сегментации видео, таких как перекрытие (окклюзия) объектов и их повторное появление. Модель использует сложный механизм памяти для отслеживания объектов между кадрами, обеспечивая непрерывность, даже когда объекты временно перекрываются или выходят из кадра и возвращаются в него.
Для более глубокого понимания архитектуры и возможностей SAM 2 изучи научную статью о SAM 2.
Link to this sectionПроизводительность и технические детали#
SAM 2 устанавливает новый стандарт в области, превосходя предыдущие модели по ряду показателей:
| Метрика | SAM 2 | Предыдущее SOTA |
|---|---|---|
| Интерактивная сегментация видео | Лучший результат | - |
| Требуемое участие человека | В 3 раза меньше | Базовый уровень |
| Точность сегментации изображений | Улучшено | SAM |
| Скорость вывода | В 6 раз быстрее | SAM |
Link to this sectionАрхитектура модели#
Link to this sectionОсновные компоненты#
- Кодировщик изображений и видео: использует архитектуру на базе Transformer для извлечения высокоуровневых признаков как из изображений, так и из видеокадров. Этот компонент отвечает за понимание визуального контента на каждом временном шаге.
- Кодировщик промптов: обрабатывает предоставленные пользователем подсказки (точки, рамки, маски) для управления задачей сегментации. Это позволяет SAM 2 адаптироваться к твоему вводу и выделять конкретные объекты в сцене.
- Механизм памяти: включает кодировщик памяти, банк памяти и модуль внимания к памяти. Эти компоненты совместно хранят и используют информацию из прошлых кадров, позволяя модели поддерживать согласованное отслеживание объектов во времени.
- Декодировщик масок: генерирует финальные маски сегментации на основе закодированных признаков изображения и промптов. В видео он также использует контекст памяти для обеспечения точного отслеживания между кадрами.

Link to this sectionМеханизм памяти и обработка окклюзий#
Механизм памяти позволяет SAM 2 учитывать временные зависимости и окклюзии в видеоданных. По мере перемещения и взаимодействия объектов SAM 2 записывает их характеристики в банк памяти. Когда объект перекрывается, модель опирается на эту память, чтобы предсказать его положение и внешний вид после появления. Специальная головка для обработки окклюзий определяет сценарии, когда объекты не видны, предсказывая вероятность перекрытия объекта.
Link to this sectionРазрешение неоднозначности при наличии нескольких масок#
В ситуациях неопределенности (например, при наложении объектов друг на друга) SAM 2 может генерировать несколько предсказаний масок. Эта функция критически важна для точного представления сложных сцен, где одна маска не может адекватно описать все нюансы.
Link to this sectionДатасет SA-V#
Датасет SA-V, разработанный для обучения SAM 2, является одним из самых больших и разнообразных наборов данных для сегментации видео. Он включает:
- 51 000+ видео: снятых в 47 странах, что обеспечивает широкий спектр реальных сценариев.
- 600 000+ аннотаций масок: подробные пространственно-временные аннотации, называемые "маскетами" (masklets), охватывающие целые объекты и их части.
- Масштаб датасета: содержит в 4,5 раза больше видео и в 53 раза больше аннотаций, чем предыдущие крупнейшие датасеты, обеспечивая беспрецедентное разнообразие и сложность.
Link to this sectionБенчмарки#
Link to this sectionСегментация видеообъектов#
SAM 2 продемонстрировала превосходные результаты в ключевых тестах по сегментации видео:
| Датасет | J&F | J | F |
|---|---|---|---|
| DAVIS 2017 | 82.5 | 79.8 | 85.2 |
| YouTube-VOS | 81.2 | 78.9 | 83.5 |
Link to this sectionИнтерактивная сегментация#
В задачах интерактивной сегментации SAM 2 показывает высокую эффективность и точность:
| Датасет | NoC@90 | AUC |
|---|---|---|
| DAVIS Interactive | 1.54 | 0.872 |
Link to this sectionУстановка#
Чтобы установить SAM 2, используй следующую команду. Все модели SAM 2 будут автоматически загружены при первом запуске.
pip install ultralyticsLink to this sectionКак использовать SAM 2: Универсальность в сегментации изображений и видео#
В следующей таблице представлены подробные сведения о доступных моделях SAM 2, их предобученных весах, поддерживаемых задачах и совместимости с различными режимами, такими как Inference, Validation, Training и Export.
| Тип модели | Предобученные веса | Поддерживаемые задачи | Вывод (Inference) | Валидация | Обучение | Экспорт |
|---|---|---|---|---|---|---|
| SAM 2 tiny | sam2_t.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2 small | sam2_s.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2 base | sam2_b.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2 large | sam2_l.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2.1 tiny | sam2.1_t.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2.1 small | sam2.1_s.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2.1 base | sam2.1_b.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
| SAM 2.1 large | sam2.1_l.pt | Сегментация экземпляров | ✅ | ❌ | ❌ | ❌ |
Link to this sectionПримеры предсказаний SAM 2#
SAM 2 можно использовать для широкого спектра задач, включая редактирование видео в реальном времени, медицинскую визуализацию и автономные системы. Способность сегментировать как статические, так и динамические визуальные данные делает ее универсальным инструментом для исследователей и разработчиков.
Link to this sectionСегментация с подсказками#
Используй подсказки для сегментации конкретных объектов на изображениях или видео.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Run inference with single point
results = model(points=[900, 370], labels=[1])
# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])Link to this sectionСегментация всего#
Сегментируй все содержимое изображения или видео без использования специальных подсказок.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference
model("path/to/video.mp4")Link to this sectionСегментация видео и отслеживание объектов#
Сегментируй все содержимое видео с помощью специальных подсказок и отслеживай объекты.
from ultralytics.models.sam import SAM2VideoPredictor
# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)
# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=[1])
# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])- В этом примере показано, как можно использовать SAM 2 для сегментации всего содержимого изображения или видео, если не предоставлены никакие подсказки (bboxes/точки/маски).
Link to this sectionДинамическая интерактивная сегментация и отслеживание#
SAM2DynamicInteractivePredictor — это продвинутое расширение SAM2, не требующее обучения, которое позволяет динамически взаимодействовать с несколькими кадрами и обладает возможностями непрерывного обучения. Этот предиктор поддерживает обновление подсказок в реальном времени и управление памятью для улучшения качества отслеживания в последовательности изображений. По сравнению с оригинальной SAM2, SAM2DynamicInteractivePredictor перестраивает поток вывода так, чтобы максимально эффективно использовать предварительно обученные модели SAM2 без необходимости дополнительного обучения.

Link to this sectionОсновные функции#
Она предлагает три значительных улучшения:
- Динамическое взаимодействие: добавляй новые подсказки для объединения или отслеживания новых экземпляров в последующих кадрах в любой момент во время обработки видео
- Непрерывное обучение: добавляй новые подсказки для существующих экземпляров, чтобы улучшить работу модели со временем
- Независимая поддержка нескольких изображений: обрабатывай несколько независимых изображений (не обязательно из видеопоследовательности) с общим использованием памяти и отслеживанием объектов на разных изображениях
Link to this sectionОсновные возможности#
- Гибкость подсказок: принимает ограничивающие рамки, точки и маски в качестве подсказок
- Управление банком памяти: поддерживает динамический банк памяти для хранения состояний объектов между кадрами
- Отслеживание нескольких объектов: поддерживает отслеживание нескольких объектов одновременно с индивидуальными идентификаторами объектов
- Обновления в реальном времени: позволяет добавлять новые подсказки во время вывода без повторной обработки предыдущих кадров
- Независимая обработка изображений: обрабатывай отдельные изображения с общим контекстом памяти для обеспечения согласованности объектов на разных изображениях
from ultralytics.models.sam import SAM2DynamicInteractivePredictor
# Create SAM2DynamicInteractivePredictor
overrides = dict(conf=0.01, task="segment", mode="predict", imgsz=1024, model="sam2_t.pt", save=False)
predictor = SAM2DynamicInteractivePredictor(overrides=overrides, max_obj_num=10)
# Define a category by box prompt
predictor(source="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[0], update_memory=True)
# Detect this particular object in a new image
results = predictor(source="image2.jpg")
# Add new category with a new object ID
results = predictor(
source="image4.jpg",
bboxes=[[300, 300, 400, 400]], # New object
obj_ids=[1], # New object ID
update_memory=True, # Add to memory
)
# Perform inference
results = predictor(source="image5.jpg")
# Add refinement prompts to the same category to boost performance
# This helps when object appearance changes significantly
results = predictor(
source="image6.jpg",
points=[[150, 150]], # Refinement point
labels=[1], # Positive point
obj_ids=[1], # Same object ID
update_memory=True, # Update memory with new information
)
# Perform inference on new image
results = predictor(source="image7.jpg")SAM2DynamicInteractivePredictor разработан для работы с моделями SAM2 и поддерживает добавление/уточнение категорий с помощью всех box/point/mask prompts, которые изначально поддерживает SAM2. Он особенно полезен в сценариях, где объекты появляются или меняются со временем, например, при аннотировании видео или интерактивном редактировании.
Link to this sectionАргументы#
| Название | Значение по умолчанию | Тип данных | Описание |
|---|---|---|---|
max_obj_num | 3 | int | Предустановленное максимальное количество категорий |
update_memory | False | bool | Нужно ли обновлять память новыми подсказками |
obj_ids | None | List[int] | Список идентификаторов объектов, соответствующих подсказкам |
Link to this sectionВарианты использования#
SAM2DynamicInteractivePredictor идеально подходит для:
- Рабочих процессов аннотирования видео, где новые объекты появляются во время последовательности
- Интерактивного редактирования видео, требующего добавления и уточнения объектов в реальном времени
- Систем видеонаблюдения, требующих динамического отслеживания объектов
- Медицинской визуализации для отслеживания анатомических структур во временных рядах
- Автономных систем, требующих адаптивного обнаружения и отслеживания объектов
- Наборов данных из нескольких изображений для последовательной сегментации объектов на независимых изображениях
- Анализа коллекции изображений, где объекты необходимо отслеживать в разных сценах
- Междоменной сегментации, использующей память из различных контекстов изображений
- Полуавтоматического аннотирования для эффективного создания наборов данных с минимальным ручным вмешательством
Link to this sectionСравнение SAM с YOLO#
Здесь мы сравниваем модели Meta SAM 2, включая самый маленький вариант SAM2-t, с моделями сегментации Ultralytics, включая YOLO26n-seg:
| Модель | Размер (МБ) | Параметры (М) | Скорость (CPU) (мс/из) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s с backbone YOLOv8 | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (в 11.0 раз меньше) | 3.4 (в 11.4 раз меньше) | 24.8 (в 945 раз быстрее) |
| Ultralytics YOLO11n-seg | 6.2 (в 12.6 раз меньше) | 2.9 (в 13.4 раз меньше) | 24.3 (в 964 раз быстрее) |
| Ultralytics YOLO26n-seg | 6.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Автоматическое аннотирование: эффективное создание наборов данных#
Автоматическое аннотирование — это мощная функция SAM 2, позволяющая пользователям быстро и точно создавать наборы данных для сегментации, используя предварительно обученные модели. Эта возможность особенно полезна для создания больших высококачественных наборов данных без значительных ручных усилий.
Link to this sectionКак выполнять автоматическое аннотирование с SAM 2#
Watch: Auto Annotation with Meta's Segment Anything 2 Model using Ultralytics | Data Labeling
Чтобы автоматически аннотировать свой набор данных с помощью SAM 2, следуй этому примеру:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam2_b.pt")| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
data | str | обязательно | Путь к директории, содержащей целевые изображения для аннотирования или сегментации. |
det_model | str | 'yolo26x.pt' | Путь к модели обнаружения YOLO для начального обнаружения объектов. |
sam_model | str | 'sam_b.pt' | Путь к модели SAM для сегментации (поддерживает веса SAM, SAM 2, MobileSAM и SAM 3). |
device | str | '' | Вычислительное устройство (например, 'cuda:0', 'cpu' или '' для автоматического определения устройства). |
conf | float | 0.25 | Порог уверенности обнаружения YOLO для фильтрации слабых обнаружений. |
iou | float | 0.45 | Порог IoU для NMS для фильтрации перекрывающихся рамок. |
imgsz | int | 640 | Размер входного изображения для изменения масштаба (должен быть кратен 32). |
max_det | int | 300 | Максимальное количество обнаружений на изображение для оптимизации памяти. |
classes | list[int] | None | Список индексов классов для обнаружения (например, [0, 1] для человека и велосипеда). |
output_dir | str | None | Директория сохранения аннотаций (по умолчанию: рядом с <data>_auto_annotate_labels). |
Эта функция способствует быстрому созданию качественных наборов данных для сегментации, что идеально подходит для исследователей и разработчиков, стремящихся ускорить свои проекты.
Link to this sectionОграничения#
Несмотря на свои сильные стороны, у SAM 2 есть определенные ограничения:
- Стабильность отслеживания: SAM 2 может терять объекты из виду во время длинных последовательностей или значительных изменений ракурса.
- Путаница объектов: Модель иногда может путать похожие объекты, особенно в переполненных сценах.
- Эффективность при работе с несколькими объектами: Эффективность сегментации снижается при одновременной обработке нескольких объектов из-за отсутствия взаимодействия между объектами.
- Детальная точность: Может пропускать мелкие детали, особенно у быстро движущихся объектов. Дополнительные подсказки могут частично решить эту проблему, но временная плавность не гарантируется.
Link to this sectionЦитирование и благодарности#
Если SAM 2 является важной частью твоего исследования или разработки, пожалуйста, сошлися на него, используя следующую ссылку:
@article{ravi2024sam2,
title={SAM 2: Segment Anything in Images and Videos},
author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
journal={arXiv preprint},
year={2024}
}Мы выражаем благодарность Meta AI за их вклад в сообщество ИИ с этой революционной моделью и набором данных.
Link to this sectionЧасто задаваемые вопросы (FAQ)#
Link to this sectionЧто такое SAM 2 и как он улучшает оригинальную модель Segment Anything Model (SAM)?#
SAM 2, преемник Segment Anything Model (SAM) от Meta, — это передовой инструмент, предназначенный для комплексной сегментации объектов как на изображениях, так и на видео. Он превосходно справляется с обработкой сложных визуальных данных благодаря унифицированной архитектуре модели с поддержкой промптов, которая поддерживает обработку в реальном времени и zero-shot обобщение. SAM 2 предлагает несколько улучшений по сравнению с оригинальным SAM, включая:
- Унифицированная архитектура модели: Объединяет возможности сегментации изображений и видео в одной модели.
- Производительность в реальном времени: Обрабатывает примерно 44 кадра в секунду, что делает его подходящим для приложений, требующих немедленной обратной связи.
- Zero-shot обобщение: Сегментирует объекты, которые никогда раньше не встречал, что полезно в различных визуальных областях.
- Интерактивное уточнение: Позволяет пользователям итеративно уточнять результаты сегментации, предоставляя дополнительные подсказки.
- Расширенная обработка визуальных задач: Управляет типичными проблемами сегментации видео, такими как перекрытие объектов и их повторное появление.
Чтобы узнать больше об архитектуре и возможностях SAM 2, изучи научную статью о SAM 2.
Link to this sectionКак использовать SAM 2 для сегментации видео в реальном времени?#
SAM 2 можно использовать для сегментации видео в реальном времени, используя его интерфейс на основе подсказок и возможности вывода в реальном времени. Вот базовый пример:
Используй подсказки для сегментации конкретных объектов на изображениях или видео.
from ultralytics import SAM
# Load a model
model = SAM("sam2_b.pt")
# Display model information (optional)
model.info()
# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])Для более полного использования обратись к разделу Как использовать SAM 2.
Link to this sectionКакие наборы данных используются для обучения SAM 2 и как они повышают его производительность?#
SAM 2 обучается на наборе данных SA-V, одном из самых больших и разнообразных наборов данных для сегментации видео. Набор данных SA-V включает:
- 51 000+ видео: снятых в 47 странах, что обеспечивает широкий спектр реальных сценариев.
- 600 000+ аннотаций масок: подробные пространственно-временные аннотации, называемые "маскетами" (masklets), охватывающие целые объекты и их части.
- Масштаб набора данных: Содержит в 4.5 раза больше видео и в 53 раза больше аннотаций, чем предыдущие крупнейшие наборы данных, предлагая беспрецедентное разнообразие и сложность.
Этот обширный набор данных позволяет SAM 2 достигать превосходной производительности в основных бенчмарках сегментации видео и улучшает его способности к zero-shot обобщению. Для получения дополнительной информации смотри раздел Набор данных SA-V.
Link to this sectionКак SAM 2 обрабатывает перекрытия и повторное появление объектов при сегментации видео?#
SAM 2 включает сложный механизм памяти для управления временными зависимостями и перекрытиями в видеоданных. Механизм памяти состоит из:
- Кодировщик памяти и банк памяти: Сохраняет признаки из прошлых кадров.
- Модуль внимания к памяти: Использует сохраненную информацию для поддержания согласованного отслеживания объектов во времени.
- Голова перекрытия: Специально обрабатывает сценарии, где объекты не видны, предсказывая вероятность перекрытия объекта.
Этот механизм обеспечивает непрерывность, даже когда объекты временно скрыты или выходят из кадра и возвращаются в него. За подробностями обращайся к разделу Механизм памяти и обработка перекрытий.
Link to this sectionКак SAM 2 соотносится с другими моделями сегментации, такими как YOLO26?#
Модели SAM 2, такие как SAM2-t и SAM2-b от Meta, предлагают мощные возможности zero-shot сегментации, но они значительно больше и медленнее по сравнению с моделями YOLO. Например, YOLO26n-seg примерно в 24 раза меньше и более чем в 1145 раз быстрее, чем SAM2-b на CPU. Хотя SAM 2 превосходен в универсальных сценариях сегментации на основе подсказок и zero-shot, YOLO26 оптимизирован для скорости, эффективности и приложений реального времени с выводом end-to-end без NMS, что делает его лучше подходящим для развертывания в условиях ограниченных ресурсов.