SAM
SAM (Segment Anything) transforme un clic sur un point ou une bounding box en masque d'objet. LibreYOLO le charge au moyen d'une fabrique LibreSAM dédiée, distincte de la fabrique de détecteurs LibreYOLO(), car un modèle guidable nécessite une signature d'appel différente.
- Tâches
- instance segmentation
- Tailles
- base, large, huge at 1024 px
- Installer
pip install libreyolo- Niveau de support
- Niveau parallèle, depuis v. Une interface produit distincte avec sa propre factory et son propre contrat.
- Licences
- Code MIT, poids Apache-2.0. Usage commercial
Installer
SAM nécessite l'extra sam, qui installe transformers et timm.
pip install "libreyolo[sam]"Prédire
LibreSAM(...) est un point d'entrée distinct de LibreYOLO(...)\u00a0: il
renvoie un segmenteur guidable plutôt qu'un détecteur, car une passe forward
n'a ici aucun sens sans prompt spatial. Il n'existe aucune commande CLI
libreyolo predict pour cette famille\u00a0; utilisez l'API Python.
from libreyolo import LibreSAM, SAMPLE_IMAGE # "base" télécharge automatiquement facebook/sam-vit-base à la première utilisation.# Autres tailles : "large", "huge" (ainsi que "b"/"l"/"h").model = LibreSAM("base") # Un prompt par point : [x, y] en pixels, é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) # bounding box ajustée dérivée du masque # Un prompt par bounding box à la place d'un point.result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700]) # Sans prompt, l'image entière est segmentée (générateur de masques# automatique simplifié, différent de la version de référence exhaustive).result = model.predict(SAMPLE_IMAGE)from libreyolo import LibreSAM, SAMPLE_IMAGE model = LibreSAM("base") # L'encodeur d'image est la partie coûteuse. set_image() ne l'exécute qu'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()Un prompt par point accepte [x, y] pour un objet, [[x, y], ...] pour
plusieurs objets ou des tableaux numpy\u00a0; labels associe à chaque point la
valeur 1 (premier plan) ou 0 (arrière-plan), tous les points étant au
premier plan par défaut. Un prompt par bounding box prend
[x1, y1, x2, y2] ou une liste de bounding boxes, avec un masque par bounding
box. Si vous omettez les deux prompts, l'image entière est segmentée en
appliquant des prompts sur une grille dense et en conservant les masques
fiables qui ne se chevauchent pas\u00a0; ce mode «\u00a0tout segmenter\u00a0» est simplifié
par rapport au générateur automatique de masques de référence et peut
sous-segmenter les scènes encombrées. Un véritable prompt par point ou
bounding box est donc la méthode précise. conf filtre selon la qualité de
masque prédite (IoU), et non selon une confiance de détection\u00a0: transmettez
0.0 pour conserver chaque candidat. multimask=True renvoie, pour chaque
prompt, les trois masques d'ambiguïté objet complet ou partie de SAM plutôt
que le seul meilleur masque. 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
dispose d'aucun ensemble de classes fixe. train(), val(), export() et
track() lèvent tous NotImplementedError pour cette famille\u00a0: dans LibreYOLO,
SAM sert uniquement à la prédiction et le suivi vidéo est hors périmètre.
Consultez la prédiction pour les types de sources.
Variantes
Trois tailles d'encodeur d'image ViT\u00a0: base, large et huge, toutes avec une entrée fixe de 1024\u00a0px. Aucun benchmark d'exactitude ou de latence n'est encore publié pour cette famille. Le choix d'une taille met donc directement en balance le poids de l'encodeur et la qualité du masque\u00a0: base est la plus rapide à encoder, huge la plus lourde.
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 (Segment Anything), Meta AI Research (FAIR)
- Licence du projet d'origine
- Apache-2.0
- Source du projet d'origine
- github.com/facebookresearch/segment-anything
- Code de LibreYOLO
- MIT
- Poids
- Apache-2.0, distribués par leurs auteurs. LibreYOLO ne les héberge pas et n'en fournit pas de miroir.
- 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 does not mirror SAM-1 weights on its own Hugging Face org: LibreSAM downloads the base, large and huge checkpoints directly from Meta's own facebook/sam-vit-base, facebook/sam-vit-large and facebook/sam-vit-huge repositories, each tagged Apache-2.0 there as well.
LibreYOLO n'héberge pas sa propre copie des poids de SAM-1. LibreSAM("base"),
"large" et "huge" les téléchargent directement depuis les dépôts
facebook/sam-vit-base, facebook/sam-vit-large et facebook/sam-vit-huge
de Meta sur Hugging Face, chacun y étant étiqueté Apache-2.0 indépendamment de
LibreYOLO.
Citation
@article{kirillov2023segany,
title={Segment Anything},
author={Kirillov, Alexander and Mintun, Eric and Ravi, Nikhila and Mao, Hanzi and Rolland, Chloe and Gustafson, Laura and Xiao, Tete and Whitehead, Spencer and Berg, Alexander C. and Lo, Wan-Yen and Doll{\'a}r, Piotr and Girshick, Ross},
journal={arXiv:2304.02643},
year={2023}
}Copié depuis le bloc de citation des auteurs sur github.com/facebookresearch/segment-anything#citing-segment-anything.