SAM 3

SAM 3 добавляет к обычным точкам и рамкам промпт-концепт в виде текста, поэтому фраза вроде «жёлтый школьный автобус» возвращает все подходящие экземпляры. LibreYOLO поддерживает у него сегментацию изображений через отдельную фабрику LibreSAM, не связанную с фабрикой детекторов LibreYOLO().

Задачи
instance segmentation
Размеры
large at 1008 px
Установка
pip install libreyolo
Уровень поддержки
Смежный уровень, начиная с v. Отдельная часть продукта со своей фабрикой и контрактом.
Исходный проект
SAM 3 от Meta FAIR, SAM License (Meta custom, gated). Статья, исходный код
Лицензии
Код: MIT, веса: SAM License (Meta custom, gated). Коммерческое использование

Установка

Для SAM 3 нужен extra sam, который подтягивает transformers и timm.

bash
pip install "libreyolo[sam]"

Доступ к весам ограничен: зайдите на huggingface.co/facebook/sam3, примите лицензию Meta SAM License, а затем перед первым скачиванием выполните hf auth login (или задайте HF_TOKEN). При первом скачивании моделей этого семейства LibreYOLO выводит в лог уведомление о лицензии.

Предсказание

LibreSAM(...) (или специфичный для семейства LibreSAM3(...)) — отдельная от LibreYOLO(...) точка входа: она возвращает сегментатор по промптам, а не детектор, потому что прямой проход здесь бессмыслен без промпта. CLI-команды libreyolo predict для этого семейства нет; используйте Python API. Поддерживается только инференс на изображениях; видеомодели SAM 3 здесь за рамками.

Промпты точкой и рамкой
from libreyolo import LibreSAM, SAMPLE_IMAGE # "sam3" — единственный размер ("large"); псевдонимы: "sam3", "sam-3", "sam3-large".model = LibreSAM("sam3") # Точечный промпт: [x, y] в пиксельных координатах, метка 1 = передний план.result = model.predict(SAMPLE_IMAGE, points=[640, 420], labels=[1])print(result.masks.xy)      # полигон на каждую маскуprint(result.boxes.xyxy)    # плотная рамка, полученная из маски # Промпт-рамка вместо точки.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700])
Текстовый промпт (концепт)
from libreyolo import LibreSAM3, SAMPLE_IMAGE model = LibreSAM3("large") # Находит все экземпляры, подходящие под фразу, а не один объект.# text= несовместим с points, bboxes, labels и masks.result = model.predict(SAMPLE_IMAGE, text="a person")print(result.names)         # {0: "a person"}print(result.boxes.conf)    # оценка детекции PCS на каждый экземпляр
Одно кодирование, много промптов
from libreyolo import LibreSAM3, SAMPLE_IMAGE model = LibreSAM3("large") # Энкодер изображения — дорогая часть. set_image() запускает его один# раз; каждый следующий вызов predict() переиспользует закэшированный# эмбеддинг. Вызов с text= кодирует заново внутри себя, потому что у# трекера и энкодера концептной сегментации нет общего кэша.model.set_image(SAMPLE_IMAGE)a = model.predict(points=[640, 420], labels=[1])b = model.predict(bboxes=[300, 200, 900, 700])model.reset_image()

Сценарий с точкой и рамкой совпадает с остальным семейством SAM: точечный промпт принимает [x, y] для одного объекта или [[x, y], ...] для нескольких, labels помечает каждую точку как 1 (передний план) или 0 (фон), а промпт-рамка принимает [x1, y1, x2, y2] или список рамок. На этом пути conf фильтрует по предсказанному качеству маски (IoU), а не по уверенности детекции.

Путь через text= — то, что добавляет SAM 3: строка-концепт возвращает все подходящие экземпляры на изображении через Promptable Concept Segmentation и не сочетается с точками, рамками, метками или масками. conf там — оценка детекции PCS, а не IoU маски; если оставить значение по умолчанию, применяется собственный порог модели 0.3, а conf=0.0 оставляет всех кандидатов. В возвращаемом names идентификатор класса 0 сопоставлен с запрошенной строкой-концептом, потому что в остальном у маски по промпту нет фиксированного набора классов. device= переносит модель, а если активна сессия set_image() — и её закэшированный эмбеддинг. train(), val(), export() и track() для этого семейства вызывают NotImplementedError: в LibreYOLO SAM 3 работает только на предсказание, а отслеживание в видео здесь за рамками. Типы источников описаны в разделе предсказание.

Варианты

Один размер, large, с фиксированным входом 1008 px. SAM 3.1 не поддерживается: у его реализации собственная лицензия, которую нельзя внести в этот репозиторий под MIT, а версия Transformers, от которой зависит LibreYOLO, пока не читает формат его чекпойнта.

Лицензирование

Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.

Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.

Оригинальная работа
SAM 3, Meta FAIR
Лицензия исходного проекта
SAM License (Meta custom, gated)
Исходный код проекта
github.com/facebookresearch/sam3
Код LibreYOLO
MIT
Веса
SAM License (Meta custom, gated), распространяются авторами. LibreYOLO не размещает и не зеркалирует их.
Толкование
The SAM License is Meta's own agreement, not an OSI-approved license like MIT or Apache-2.0. It grants a worldwide, royalty-free license to use, reproduce, distribute and create derivative works, and does not itself say the weights are non-commercial. It does add terms Apache and MIT do not: publications that use the results must acknowledge SAM Materials, reverse engineering is prohibited, use is subject to export-control and sanctions compliance, filing IP litigation against Meta over the materials terminates your license, and Meta may amend the agreement. Weights are gated on facebook/sam3 on Hugging Face: you must accept the terms there and authenticate before downloading. LibreYOLO calls SAM 3 through the Apache-2.0 Transformers implementation and vendors none of Meta's model source, but does not redistribute the weights themselves; read the license yourself before relying on it commercially.

LibreYOLO не хранит собственную копию весов SAM 3 и не распространяет их. LibreSAM("sam3") скачивает их напрямую из репозитория facebook/sam3 компании Meta на Hugging Face, доступ к которому ограничен: перед первым скачиванием нужно принять лицензию Meta SAM License и пройти аутентификацию.

Цитирование

@misc{carion2025sam3segmentconcepts,
      title={SAM 3: Segment Anything with Concepts},
      author={Nicolas Carion and Laura Gustafson and Yuan-Ting Hu and Shoubhik Debnath and Ronghang Hu and Didac Suris and Chaitanya Ryali and Kalyan Vasudev Alwala and Haitham Khedr and Andrew Huang and Jie Lei and Tengyu Ma and Baishan Guo and Arpit Kalla and Markus Marks and Joseph Greer and Meng Wang and Peize Sun and Roman Rädle and Triantafyllos Afouras and Effrosyni Mavroudi and Katherine Xu and Tsung-Han Wu and Yu Zhou and Liliane Momeni and Rishi Hazra and Shuangrui Ding and Sagar Vaze and Francois Porcher and Feng Li and Siyuan Li and Aishwarya Kamath and Ho Kei Cheng and Piotr Dollár and Nikhila Ravi and Kate Saenko and Pengchuan Zhang and Christoph Feichtenhofer},
      year={2025},
      eprint={2511.16719},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2511.16719},
}

Скопировано из блока цитирования авторов на странице github.com/facebookresearch/sam3#citing-sam-3.

Проверено с LibreYOLO v1.5.0. Таблицы поддержки, чекпойнты и результаты бенчмарков на этой странице сгенерированы из выпущенной библиотеки и опубликованных весов, а не написаны вручную.