SAM 2

SAM 2 розширює SAM архітектурою потокової пам'яті для відео й перетворює клік точкою або рамкою на маску об'єкта. LibreYOLO підтримує її шлях сегментації зображень через окрему фабрику LibreSAM, відмінну від фабрики детекторів LibreYOLO().

Задачі
instance segmentation
Розміри
Встановлення
pip install libreyolo
Рівень підтримки
Суміжний рівень, починаючи з v. Окремий інтерфейс продукту з власною фабрикою та контрактом.
Першоджерело
SAM 2, автори: Meta FAIR, ліцензія Apache-2.0. Стаття, джерело
Ліцензії
Код: MIT, ваги: Apache-2.0. Комерційне використання

Встановлення

SAM 2 потребує додаткового набору залежностей sam, який установлює transformers і timm.

bash
pip install "libreyolo[sam]"

Передбачення

LibreSAM(...) (або фабрика конкретного сімейства LibreSAM2(...)) є окремою точкою входу від LibreYOLO(...): вона повертає сегментатор за запитами, а не детектор, оскільки прямий прохід тут не має сенсу без просторового запиту. Для цього сімейства немає команди CLI libreyolo predict; використовуйте API Python. Підтримується лише сегментація зображень; відстеження у відео з пам'яттю SAM 2 тут не охоплюється.

Запити точками та рамками
from libreyolo import LibreSAM, SAMPLE_IMAGE # Псевдоніми розмірів: "sam2-tiny", "sam2-small", "sam2-base-plus",# "sam2-large" (також скорочені форми "sam2-t"/"sam2-s"/"sam2-bp"/"sam2-l").model = LibreSAM("sam2-large") # Запит точкою: [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]) # Без запиту сегментується все зображення (спрощений автоматичний# генератор масок, а не вичерпна еталонна реалізація).result = model.predict(SAMPLE_IMAGE)
Одне кодування, багато запитів
from libreyolo import LibreSAM2, SAMPLE_IMAGE # Клас конкретного сімейства приймає розмір без префікса "sam2-".model = LibreSAM2("large") # Енкодер зображення є найдорожчою частиною. set_image() запускає його один раз;# кожен наступний виклик predict() повторно використовує кешований ембединг.model.set_image(SAMPLE_IMAGE)a = model.predict(points=[640, 420], labels=[1])b = model.predict(bboxes=[300, 200, 900, 700])model.reset_image()

Запит точкою приймає [x, y] для одного об'єкта, [[x, y], ...] для кількох або масиви numpy. labels позначає кожну точку як 1 (передній план) або 0 (тло), а типово всі точки належать до переднього плану. Запит рамкою приймає [x1, y1, x2, y2] або список рамок і повертає по одній масці на рамку. Якщо пропустити обидва запити, усе зображення сегментується через запити за щільною сіткою зі збереженням упевнених масок без перекриття. Цей режим «сегментувати все» спрощено порівняно з еталонним автоматичним генератором масок, і він може недостатньо сегментувати переповнені сцени. Точний результат дає справжній запит точкою або рамкою. conf фільтрує за передбаченою якістю маски (IoU), а не за впевненістю виявлення: передайте 0.0, щоб зберегти всіх кандидатів. multimask=True повертає всі три маски неоднозначності ціле-проти-частини від SAM для кожного запиту замість однієї найкращої. device= переміщує модель і, якщо активний сеанс set_image(), кешований ембединг. Кожна маска має ідентифікатор класу 0 із назвою "object", оскільки маска за запитом не має фіксованого набору класів. train(), val(), export() і track() спричиняють NotImplementedError для цього сімейства: LibreYOLO підтримує тут інференс зображень. Типи джерел описано в розділі передбачення.

Варіанти

Доступні чотири розміри бекбона Hiera: tiny, small, base-plus і large, усі з однаковою вхідною роздільною здатністю. Бенчмарків правильності чи затримки для цього сімейства ще не опубліковано, тому вибір розміру прямо зіставляє вагу енкодера з якістю масок: tiny кодує найшвидше, а large є найважчим.

Контрольні точки

Усі опубліковані файли ваг цього сімейства.

ФайлВхід (пікс.)Ліцензія ваг
Instance segmentation
LibreSAM2tiny.ptapache-2.0
LibreSAM2small.ptapache-2.0
LibreSAM2base-plus.ptapache-2.0
LibreSAM2large.ptapache-2.0

Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
SAM 2, Meta FAIR
Ліцензія першоджерела
Apache-2.0
Джерело першоджерела
github.com/facebookresearch/sam2
Код LibreYOLO
MIT
Ваги
Apache-2.0, повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
Apache-2.0 is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy you redistribute, and it grants a patent license. LibreYOLO loads SAM 2 through the Apache-2.0 Transformers implementation and republishes Transformers-compatible snapshots of the tiny, small, base-plus and large checkpoints on its own Hugging Face org, tagged Apache-2.0 there as well. LibreYOLO ships image inference only; SAM 2's video-memory tracking is out of scope for this family.

Цитування

@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 arXiv:2408.00714},
  url={https://arxiv.org/abs/2408.00714},
  year={2024}
}

Скопійовано з блоку цитування авторів на сторінці github.com/facebookresearch/sam2#citing-sam-2.

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