EdgeTAM
EdgeTAM — вариант SAM 2 для работы на устройстве, рассчитанный на скорость инференса на мобильных, но сохраняющий тот же сценарий с промптами-точками и промптами-рамками. LibreYOLO поддерживает у него сегментацию изображений через отдельную фабрику LibreSAM, не связанную с фабрикой детекторов LibreYOLO().
- Задачи
- instance segmentation
- Размеры
- Установка
pip install libreyolo- Уровень поддержки
- Смежный уровень, начиная с v. Отдельная часть продукта со своей фабрикой и контрактом.
- Исходный проект
- EdgeTAM от Meta Reality Labs, Apache-2.0. Статья, исходный код
- Лицензии
- Код: MIT, веса: Apache-2.0. Коммерческое использование
Установка
Для EdgeTAM нужен extra sam, который подтягивает transformers и timm.
pip install "libreyolo[sam]"Предсказание
LibreSAM(...) (или специфичный для семейства LibreEdgeTAM(...)) — отдельная
от LibreYOLO(...) точка входа: она возвращает сегментатор по промптам, а не
детектор, потому что прямой проход здесь бессмыслен без пространственного
промпта. CLI-команды libreyolo predict для этого семейства нет; используйте
Python API. Поддерживается только сегментация изображений; отслеживание в видео
у EdgeTAM здесь за рамками.
from libreyolo import LibreSAM, SAMPLE_IMAGE # У EdgeTAM один размер, "edge". Псевдонимы: "edgetam", "edge-tam",# "edgetam-edge".model = LibreSAM("edgetam") # Точечный промпт: [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 LibreEdgeTAM, SAMPLE_IMAGE model = LibreEdgeTAM() # Энкодер изображения — дорогая часть. 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 поддерживает здесь
инференс на изображениях. Типы источников описаны в разделе
предсказание.
Варианты
Один размер, edge, с фиксированным входным разрешением, поэтому выбор этого семейства вместо остальных моделей уровня SAM — решение по железу, а не по размеру: EdgeTAM существует именно для инференса на устройстве в стеснённых условиях.
Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| Instance segmentation | ||
| LibreEdgeTAM.pt | apache-2.0 | |
Все перечисленные выше файлы уже доступны в организации LibreYOLO и скачиваются при первом использовании.
Лицензирование
Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.
Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.
- Оригинальная работа
- EdgeTAM, Meta Reality Labs
- Лицензия исходного проекта
- Apache-2.0
- Исходный код проекта
- github.com/facebookresearch/EdgeTAM
- Код 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 does not vendor EdgeTAM's model source: it calls the Apache-2.0 Transformers adapter and reproduces the pinned upstream image and prompt-coordinate transforms from facebookresearch/EdgeTAM commit 7711e012a30a2402c4eaab637bdb00a521302c91. The republished LibreYOLO/LibreEdgeTAM snapshot is converted from facebook/EdgeTAM revision 14d7ecc48c656b94e5184519f698cd5386c5a2bf, checked tensor-by-tensor against a Transformers-format reference before publication, and tagged Apache-2.0 on the LibreYOLO Hugging Face org. LibreYOLO ships image inference only; EdgeTAM's video tracking is out of scope for this family.
Цитирование
@article{zhou2025edgetam,
title={EdgeTAM: On-Device Track Anything Model},
author={Zhou, Chong and Zhu, Chenchen and Xiong, Yunyang and Suri, Saksham and Xiao, Fanyi and Wu, Lemeng and Krishnamoorthi, Raghuraman and Dai, Bo and Loy, Chen Change and Chandra, Vikas and Soran, Bilge},
journal={arXiv preprint arXiv:2501.07256},
year={2025}
}Скопировано из блока цитирования авторов на странице github.com/facebookresearch/EdgeTAM#citing-edgetam.