MobileSAM
MobileSAM замінює енкодер зображень ViT-H моделі SAM дистильованим енкодером TinyViT, тому той самий процес сегментації за запитами точками й рамками працює на менш потужному обладнанні. LibreYOLO містить нативний порт через окрему фабрику LibreSAM, відмінну від фабрики детекторів LibreYOLO().
- Задачі
- instance segmentation
- Розміри
- tiny at 1024 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Суміжний рівень, починаючи з v. Окремий інтерфейс продукту з власною фабрикою та контрактом.
- Ліцензії
- Код: Apache-2.0, ваги: Apache-2.0. Комерційне використання
Встановлення
MobileSAM потребує додаткового набору залежностей sam: власне завантаження
ваг LibreYOLO і далі використовує інструменти знімків Hugging Face із
transformers, хоча інференс працює в нативному декодері без transformers.
pip install "libreyolo[sam]"Передбачення
LibreSAM(...) (або фабрика конкретного сімейства LibreMobileSAM(...))
є окремою точкою входу від LibreYOLO(...): вона повертає сегментатор за
запитами, а не детектор, оскільки прямий прохід тут не має сенсу без
просторового запиту. Для цього сімейства немає команди CLI
libreyolo predict; використовуйте API Python.
from libreyolo import LibreSAM, SAMPLE_IMAGE # MobileSAM має один розмір "tiny", тому інші псевдоніми не потрібні.model = LibreSAM("mobilesam") # Запит точкою: [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 LibreMobileSAM, SAMPLE_IMAGE model = LibreMobileSAM() # Енкодер зображення є найдорожчою частиною. 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 для цього сімейства: MobileSAM у LibreYOLO призначена
лише для передбачення. Типи джерел описано в розділі
передбачення.
Варіанти
Доступний один розмір tiny із фіксованим входом 1024 px: MobileSAM постачає один енкодер TinyViT замість драбини base/large/huge, яку пропонує SAM-1.
Контрольні точки
Усі опубліковані файли ваг цього сімейства.
| Файл | Вхід (пікс.) | Ліцензія ваг |
|---|---|---|
| Instance segmentation | ||
| LibreMobileSAM.pt | apache-2.0 | |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- MobileSAM, Kyung Hee University
- Ліцензія першоджерела
- Apache-2.0
- Джерело першоджерела
- github.com/ChaoningZhang/MobileSAM
- Код 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 carries a native port of the TinyViT image encoder, prompt encoder, two-way transformer and mask decoder rather than vendoring upstream files unmodified, checked for bit-exact parity against the original Apache-2.0 implementation, with a NOTICE recording that provenance. The converted checkpoint is hosted as LibreMobileSAM.pt on the LibreYOLO Hugging Face org, tagged Apache-2.0 there as well.
Цитування
@article{mobile_sam,
title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung-Ho and Lee, Seungkyu and Hong, Choong Seon},
journal={arXiv preprint arXiv:2306.14289},
year={2023}
}Скопійовано з блоку цитування авторів на сторінці github.com/ChaoningZhang/MobileSAM#bibtex-of-our-mobilesam.