SAM 2

SAM 2 étend SAM avec une architecture à mémoire de streaming conçue pour la vidéo, et transforme un clic sur un point ou une boîte en masque d'objet. LibreYOLO prend en charge son chemin de segmentation d'images par une factory LibreSAM dédiée, distincte de la factory de détecteurs LibreYOLO().

Tâches
instance segmentation
Tailles
Installer
pip install libreyolo
Niveau de support
Niveau parallèle, depuis v. Une interface produit distincte avec sa propre factory et son propre contrat.
Origine
SAM 2 par Meta FAIR, Apache-2.0. Article, source
Licences
Code MIT, poids Apache-2.0. Usage commercial

Installer

SAM 2 nécessite l'extra sam, qui installe transformers et timm.

bash
pip install "libreyolo[sam]"

Prédire

LibreSAM(...) (ou LibreSAM2(...), propre à la famille) constitue un point d'entrée distinct de LibreYOLO(...) : il renvoie un segmenteur guidable et non un détecteur, car une passe n'a ici aucun sens sans requête spatiale. Il n'existe pas de commande CLI libreyolo predict pour cette famille ; utilisez l'API Python. Seule la segmentation d'images est prise en charge ; le suivi avec mémoire vidéo de SAM 2 dépasse ici le périmètre.

Requêtes par point et par boîte
from libreyolo import LibreSAM, SAMPLE_IMAGE # Alias de tailles : "sam2-tiny", "sam2-small", "sam2-base-plus",# "sam2-large" (et formes courtes "sam2-t"/"sam2-s"/"sam2-bp"/"sam2-l").model = LibreSAM("sam2-large") # Requête par point : [x, y] en coordonnées pixel, étiquette 1 = premier plan.result = model.predict(SAMPLE_IMAGE, points=[640, 420], labels=[1])print(result.masks.xy)      # un polygone par masqueprint(result.boxes.xyxy)    # boîte ajustée dérivée du masque # Requête par boîte au lieu d'un point.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700]) # Sans aucune requête, l'image entière est segmentée (générateur automatique# de masques simplifié, pas la version de référence exhaustive).result = model.predict(SAMPLE_IMAGE)
Encoder une fois, fournir plusieurs requêtes
from libreyolo import LibreSAM2, SAMPLE_IMAGE # La classe propre à la famille prend la taille sans le préfixe "sam2-".model = LibreSAM2("large") # L'encodeur d'image est la partie coûteuse. set_image() l'exécute une fois ;# chaque appel predict() suivant réutilise l'embedding mis en cache.model.set_image(SAMPLE_IMAGE)a = model.predict(points=[640, 420], labels=[1])b = model.predict(bboxes=[300, 200, 900, 700])model.reset_image()

Une requête par point accepte [x, y] pour un objet, [[x, y], ...] pour plusieurs ou des tableaux numpy. labels marque chaque point par 1 (premier plan) ou 0 (arrière-plan) et utilise par défaut le premier plan pour tous. Une requête par boîte prend [x1, y1, x2, y2] ou une liste de boîtes, avec un masque par boîte. Si vous omettez les deux types de requêtes, l'image entière est segmentée en guidant le modèle avec une grille dense et en conservant les masques confiants qui ne se chevauchent pas. Ce mode « tout segmenter » est simplifié par rapport au générateur automatique de masques de référence et peut sous-segmenter les scènes très chargées. Une véritable requête par point ou boîte constitue donc le chemin précis. conf filtre selon la qualité prédite du masque (IoU), et non une confiance de détection : fournissez 0.0 pour conserver tous les candidats. multimask=True renvoie les trois masques d'ambiguïté entre objet entier et partie de SAM pour chaque requête, au lieu du seul meilleur. device= déplace le modèle et, si une session set_image() est active, son embedding mis en cache. Chaque masque porte l'identifiant de classe 0, nommé "object", puisqu'un masque guidable ne possède aucun ensemble de classes fixe. train(), val(), export() et track() lèvent tous NotImplementedError pour cette famille : LibreYOLO ne prend ici en charge que l'inférence sur image. Consultez la prédiction pour les types de sources.

Variantes

Quatre tailles de backbone Hiera sont proposées, tiny, small, base-plus et large, toutes à la même résolution d'entrée. Aucun benchmark d'exactitude ou de latence n'est publié pour cette famille. Le choix d'une taille échange donc directement le poids de l'encodeur contre la qualité du masque : tiny est la plus rapide à encoder, large la plus lourde.

Checkpoints

Tous les fichiers de poids publiés pour cette famille.

FichierEntrée (px)Licence des poids
Instance segmentation
LibreSAM2tiny.ptapache-2.0
LibreSAM2small.ptapache-2.0
LibreSAM2base-plus.ptapache-2.0
LibreSAM2large.ptapache-2.0

Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.

Licence

Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.

Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.

Travail d'origine
SAM 2, Meta FAIR
Licence du projet d'origine
Apache-2.0
Source du projet d'origine
github.com/facebookresearch/sam2
Code de LibreYOLO
MIT
Poids
Apache-2.0, republiés sur huggingface.co/LibreYOLO
Interprétation
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.

Citation

@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}
}

Copié depuis le bloc de citation des auteurs sur github.com/facebookresearch/sam2#citing-sam-2.

Vérifié avec LibreYOLO v1.5.0. Les tableaux de support, les checkpoints et les chiffres de benchmark de cette page sont générés à partir de la bibliothèque publiée et des poids publiés, et non rédigés à la main.