Faza 04 · lecția 24
SAM 3 și segmentarea cu vocabular deschis
Scopul lecției: Oferiți unui model un prompt textual și o imagine, iar acesta produce măști pentru fiecare obiect corespunzător. SAM 3 a transformat acest lucru într-o singură trecere înainte.
Versiunea curentă AlexBred.com: primele 100 de lecții ale programului în limba română.
Cuprinsul lecției
- Obiective de învățare
- Problema
- Conceptul
- Cele trei generații
- Segmentarea conceptelor promptabilă
- Componente arhitecturale esențiale
- Antrenarea la scară mare
- SAM 3.1 Object Multiplex
- Unde Grounded SAM rămâne relevant în 2026
- YOLO-World comparat cu SAM 3
- Eficiența SAM-MI
- Formatul de ieșire pentru cele trei modele
- Construiți
- Pasul 1: construirea promptului
- Pasul 2: ajutoare pentru postprocesare
- Pasul 3: o interfață unificată pentru segmentare cu vocabular deschis
- Pasul 4: utilizarea SAM 3 prin Hugging Face (referință)
- Pasul 5: măsurați ce oferea gratuit Grounded SAM 2
- Utilizați
- Livrați
- Exerciții
- Termeni-cheie
- Lecturi suplimentare
Oferiți unui model un prompt textual și o imagine, iar acesta produce măști pentru fiecare obiect corespunzător. SAM 3 a transformat acest lucru într-o singură trecere înainte.
Tip: Utilizați + construiți Limbaje: Python Cerințe prealabile: Faza 4 Lecția 07 (U-Net), Faza 4 Lecția 08 (Mask R-CNN), Faza 4 Lecția 18 (CLIP) Timp: ~60 de minute
Obiective de învățare
- Deosebiți SAM (numai prompturi vizuale), Grounded SAM / SAM 2 (detector + SAM) și SAM 3 (prompturi text native prin segmentarea conceptelor promptabilă, Promptable Concept Segmentation)
- Explicați arhitectura SAM 3: backbone partajat + detector de imagini + tracker video bazat pe memorie + cap de prezență + proiectare detector–tracker decuplată
- Utilizați integrarea SAM 3 din Hugging Face
transformerspentru detectare, segmentare și urmărire video cu prompt textual - Alegeți între SAM 3, Grounded SAM 2, YOLO-World și SAM-MI în funcție de latență, complexitatea conceptului și ținta de implementare
Problema
SAM din 2023 era un model numai cu prompturi vizuale: selectați un punct sau desenați o casetă, iar el returnează o mască. Pentru „dați-mi toate portocalele din această fotografie”, era nevoie de un detector (Grounding DINO) care să producă casete, apoi de SAM pentru a segmenta fiecare casetă. Grounded SAM a transformat aceasta într-un pipeline, însă era o cascadă de două modele înghețate, cu acumulare inevitabilă de erori.
SAM 3 (Meta, noiembrie 2025, ICLR 2026) a eliminat cascada. Acceptă o expresie nominală scurtă sau un exemplar de imagine ca prompt și returnează toate măștile corespunzătoare și ID-urile instanțelor într-o singură trecere înainte. Aceasta este segmentarea conceptelor promptabilă (Promptable Concept Segmentation, PCS). Combinat cu actualizarea Object Multiplex din martie 2026 (SAM 3.1), urmărește eficient mai multe instanțe ale aceluiași concept într-un videoclip.
Această lecție tratează schimbarea structurală pe care o reprezintă acest fapt. Segmentarea 2D, detectarea și ancorarea text–imagine au fuzionat într-un singur model. Întrebarea de producție nu mai este „ce pipeline înlănțuiți”, ci „ce model promptabil tratează cazul de utilizare capăt la capăt”.
Conceptul
Cele trei generații
Segmentarea conceptelor promptabilă
Un „prompt de concept” este o expresie nominală scurtă („autobuz școlar galben”, „umbrelă roșie cu dungi”, „mână care ține o cană”) sau un exemplar de imagine. Modelul returnează măști de segmentare pentru fiecare instanță din imagine care corespunde conceptului, plus un ID unic de instanță pentru fiecare corespondență.
Aceasta diferă de SAM clasic, cu prompt vizual, în trei moduri:
- Nu este necesar un prompt pentru fiecare instanță — un singur prompt textual returnează toate potrivirile.
- Are vocabular deschis — conceptul poate fi orice poate fi descris în limbaj natural.
- Returnează simultan mai multe instanțe, nu o mască pentru fiecare prompt.
Componente arhitecturale esențiale
- Backbone partajat — un singur ViT procesează imaginea. Atât capul detectorului, cât și trackerul bazat pe memorie îl folosesc.
- Cap de prezență — prezice dacă acel concept este prezent sau nu în imagine. Decuplează întrebarea „există aici?” de „unde este?”. Reduce rezultatele fals pozitive pentru concepte absente.
- Detector–tracker decuplat — detectarea la nivel de imagine și urmărirea la nivel video au capete separate, astfel încât nu se interferează.
- Bancă de memorie — stochează caracteristici pentru fiecare instanță între cadre, pentru urmărirea video (același mecanism folosit de SAM 2).
Antrenarea la scară mare
SAM 3 a fost antrenat pe 4 milioane de concepte unice, generate de un motor de date care adnotează și corectează iterativ cu IA + revizuire umană. Noul benchmark SA-CO conține 270K concepte unice, de 50 de ori mai multe decât benchmarkurile anterioare. SAM 3 atinge 75–80% din performanța umană pe SA-CO și dublează sistemele existente pentru PCS pe imagini + videoclipuri.
Notă tehnică a traducerii: Dimensiunea exactă a SA-Co depinde de versiunea resursei: lucrarea SAM 3 raportează 207K concepte unice pentru benchmarkul descris, iar pagina proiectului raportează 270K. Procentele față de performanța umană, precum și „dublează”, sunt legate de metrică, subset și protocol; nu constituie o garanție pentru fiecare concept sau datele proprii.
SAM 3.1 Object Multiplex
Actualizare din martie 2026: Object Multiplex introduce un mecanism cu memorie partajată pentru urmărirea împreună a mai multor instanțe ale aceluiași concept. Anterior, urmărirea a N instanțe însemna N bănci de memorie separate. Multiplex le reduce la o memorie partajată cu interogări pentru fiecare instanță. Rezultatul: urmărire cu mai multe obiecte substanțial mai rapidă, fără a sacrifica acuratețea.
Notă tehnică a traducerii: Meta descrie Object Multiplex pentru până la 16 obiecte într-o trecere înainte și raportează creșterea de la 16 la 32 fps pe un H100 pentru un număr mediu de obiecte. Aceasta este o măsurătoare a implementării și configurației publicate, nu o promisiune de viteză sau acuratețe pentru orice număr de instanțe, videoclip ori hardware.
Unde Grounded SAM rămâne relevant în 2026
- Când este necesară înlocuirea cu un detector specific cu vocabular deschis (DINO-X, Florence-2).
- Când licența SAM 3 (cu acces controlat pe HF) este un impediment.
- Când este necesar un control mai bun asupra pragului detectorului decât expune SAM 3.
- Pentru lucrări de cercetare / ablație asupra componentei detectorului.
Pipeline-urile modulare își păstrează rolul. Pentru majoritatea lucrărilor de producție, SAM 3 este răspunsul mai simplu.
Notă tehnică a traducerii: Alegerea implicită depinde de licența checkpointului, versiune, latență, consumul de memorie, cerința de urmărire și date. Afirmațiile despre accesul controlat sau suprafața de configurare trebuie verificate în model card-ul și documentația versiunii implementate.
YOLO-World comparat cu SAM 3
- YOLO-World — numai detector cu vocabular deschis (fără măști). În timp real. Este potrivit când sunt necesare casete la fps ridicat.
- SAM 3 — segmentare + urmărire complete. Mai lent, însă cu rezultat mai bogat.
Separarea pentru producție: YOLO-World pentru pipeline-uri rapide numai de detectare (navigație robotică, tablouri de bord rapide), SAM 3 pentru orice are nevoie de măști sau urmărire.
Notă tehnică a traducerii: Lucrarea YOLO-World documentează detectarea cu vocabular deschis și o măsurătoare de 52 fps pe V100 pentru configurația sa evaluată. Viteza, disponibilitatea măștilor și alegerea pentru robotică depind de modelul, rezoluția, hardware-ul și postprocesarea concrete; nu comparați direct fps-uri raportate cu protocoale diferite.
Eficiența SAM-MI
SAM-MI (2025–2026) abordează blocajul decodorului SAM. Idei esențiale:
- Prompturi cu puncte rare — utilizează câteva puncte bine alese în loc de prompturi dense; reduce apelurile decodorului cu 96%.
- Agregare superficială a măștilor — unește predicții brute de măști într-o mască mai clară.
- Injectare decuplată a măștilor — decodorul primește caracteristici de măști calculate în prealabil în loc să ruleze din nou.
Rezultat: accelerare de ~1,6× față de Grounded-SAM pe benchmarkuri cu vocabular deschis.
Notă tehnică a traducerii: SAM-MI este un cadru pentru segmentare semantică cu vocabular deschis, iar lucrarea sa raportează 1,6× pe benchmarkul MESS; nu demonstrează o accelerare universală a decodorului SAM sau a tuturor pipeline-urilor Grounded-SAM. Reduceți afirmația la sarcina și protocolul evaluate.
Formatul de ieșire pentru cele trei modele
Toate returnează aceeași structură generală (casete + etichete + scoruri + măști + ID-uri), ceea ce ajută — pipeline-ul din aval nu trebuie să ramifice după modelul rulat.
Notă tehnică a traducerii: Aceasta este o interfață de aplicație care trebuie proiectată, nu un contract comun al modelelor. YOLO-World este în principal un detector de casete, iar SAM 3 și Grounded SAM expun structuri și postprocesări dependente de bibliotecă; ID-urile persistente sunt în special o preocupare a trackerului video. Normalizați explicit schema de ieșire în adaptorul propriu.
Construiți
Pasul 1: construirea promptului
Construiți un ajutor care transformă o propoziție a utilizatorului într-o listă de prompturi de concept SAM 3. Aceasta este granița unde „ce a introdus utilizatorul” întâlnește „ce consumă modelul”.
def split_concepts(sentence):
"""
Heuristic splitter for multi-concept prompts.
Returns list of short noun phrases.
"""
for sep in [",", ";", "and", "or", "&"]:
if sep in sentence:
parts = [p.strip() for p in sentence.replace("and ", ",").split(",")]
return [p for p in parts if p]
return [sentence.strip()]
print(split_concepts("cats, dogs and balloons"))
SAM 3 acceptă un concept pentru fiecare trecere înainte; pentru interogări cu mai multe concepte, parcurgeți-le într-o buclă sau în loturi.
Notă tehnică a traducerii: Fragmentul este o euristică demonstrativă, nu un parser de expresii nominale. Deși iterează prin
";","or"și"&", codul înlocuiește numai"and "și împarte numai după virgulă; prin urmare, acei separatori nu sunt procesați corect. Afirmația despre un concept pentru fiecare trecere înainte depinde de backend și versiune: integrarea Transformers documentează și inferență în lot cu prompturi text diferite. Pentru prompturi de producție, utilizați un parser explicit sau validați lista înainte de inferență.
Pasul 2: ajutoare pentru postprocesare
Transformați ieșirile brute ale SAM 3 într-o listă curată de detecții care respectă contractul pipeline-ului din Faza 4 Lecția 16.
from dataclasses import dataclass
from typing import List
@dataclass
class ConceptDetection:
concept: str
instance_id: int
box: tuple # (x1, y1, x2, y2)
score: float
mask_rle: str # run-length encoded
def rle_encode(binary_mask):
flat = binary_mask.flatten().astype("uint8")
runs = []
prev, count = flat[0], 0
for v in flat:
if v == prev:
count += 1
else:
runs.append((int(prev), count))
prev, count = v, 1
runs.append((int(prev), count))
return ";".join(f"{v}x{c}" for v, c in runs)
RLE menține dimensiunea redusă a sarcinilor utile ale răspunsurilor chiar și pentru multe măști de înaltă rezoluție. Același format funcționează pentru SAM 2, SAM 3, Grounded SAM 2.
Notă tehnică a traducerii: Acest RLE este un format demonstrativ propriu: pentru decodare sunt necesare forma măștii și ordinea de parcurgere, iar o mască goală produce o eroare la
flat[0]. Formatele interoperabile, precum COCO RLE, stabilesc convențiile în mod explicit; nu presupuneți compatibilitatea acestui șir cu API-urile altor instrumente.
Pasul 3: o interfață unificată pentru segmentare cu vocabular deschis
Încapsulați orice backend disponibil (SAM 3, Grounded SAM 2, YOLO-World + SAM 2) în spatele unei singure metode. Codul din aval nu se schimbă când se schimbă backendul.
from abc import ABC, abstractmethod
import numpy as np
class OpenVocabSeg(ABC):
@abstractmethod
def detect(self, image: np.ndarray, concept: str) -> List[ConceptDetection]:
...
class StubOpenVocabSeg(OpenVocabSeg):
"""
Deterministic stub used for pipeline testing when real models are not loaded.
"""
def detect(self, image, concept):
h, w = image.shape[:2]
return [
ConceptDetection(
concept=concept,
instance_id=0,
box=(w * 0.2, h * 0.3, w * 0.5, h * 0.8),
score=0.89,
mask_rle="0x100;1x50;0x200",
),
ConceptDetection(
concept=concept,
instance_id=1,
box=(w * 0.55, h * 0.25, w * 0.85, h * 0.75),
score=0.74,
mask_rle="0x80;1x40;0x220",
),
]
Subclasa reală SAM3OpenVocabSeg ar încapsula transformers.Sam3Model și Sam3Processor.
Pasul 4: utilizarea SAM 3 prin Hugging Face (referință)
Pentru modelul efectiv, integrarea transformers:
from transformers import Sam3Processor, Sam3Model
import torch
processor = Sam3Processor.from_pretrained("facebook/sam3")
model = Sam3Model.from_pretrained("facebook/sam3").eval()
inputs = processor(images=pil_image, return_tensors="pt")
inputs = processor.set_text_prompt(inputs, "yellow school bus")
with torch.no_grad():
outputs = model(**inputs)
masks = processor.post_process_masks(
outputs.masks, inputs.original_sizes, inputs.reshaped_input_sizes
)
boxes = outputs.boxes
scores = outputs.scores
Un prompt, toate potrivirile returnate într-un singur apel.
Notă tehnică a traducerii: Codul este păstrat fidel din original, însă amestecă API-ul Python nativ
sam3cu API-ul Hugging Face Transformers și nu corespunde documentației curente Transformers. Acolo promptul text este furnizat prinprocessor(images=pil_image, text="yellow school bus", return_tensors="pt"), iar rezultatul se obține cupost_process_instance_segmentation(outputs, threshold, mask_threshold, target_sizes=...), care furnizează măști, casete și scoruri.Sam3Processornu documenteazăset_text_prompt, iarpost_process_masks(outputs.masks, ...)nu este fluxul PCS documentat. Consultați documentația oficială Transformers pentru SAM3 înainte de rulare.
Pasul 5: măsurați ce oferea gratuit Grounded SAM 2
Un benchmark onest: ce se întâmplă când înlocuiți Grounded SAM 2 cu SAM 3 într-un pipeline real?
- Latență: SAM 3 economisește o trecere înainte (fără detector separat), însă modelul însuși este mai greu; de obicei, rezultatul net este neutru sau o ușoară accelerare.
- Acuratețe: SAM 3 este substanțial mai bun pentru concepte rare sau compoziționale („umbrelă roșie cu dungi”). Este similar pentru concepte uzuale dintr-un singur cuvânt.
- Flexibilitate: Grounded SAM 2 permite schimbarea detectoarelor (DINO-X, Florence-2, Grounding DINO 1.5); SAM 3 este monolitic.
Concluzie: SAM 3 este valoarea implicită pentru segmentarea cu vocabular deschis în 2026. Grounded SAM 2 rămâne răspunsul corect când sunt necesare flexibilitatea detectorului sau termeni de licență diferiți.
Notă tehnică a traducerii: Latența, acuratețea și alegerea „implicită” nu rezultă numai din numărul de treceri înainte. Măsurați end-to-end pe aceleași imagini sau videoclipuri, praguri, rezoluție, hardware și metrici; modele diferite pot avea avantajul opus pe altă distribuție de concepte.
Utilizați
Tipare de implementare în producție:
- Adnotare în timp real — SAM 3 + funcția CVAT de etichetare ca prompt textual. Adnotatorii aleg un nume de etichetă; SAM 3 pre-etichetează fiecare instanță corespunzătoare. Revizuiți și corectați.
- Analiză video — SAM 3.1 Object Multiplex pentru urmărirea mai multor obiecte; trimiteți cadrele trackerului bazat pe memorie.
- Robotică — SAM 3 pentru manipulare cu vocabular deschis („ridicați cana roșie”); rulează ca primitivă de planificare.
- Imagistică medicală — SAM 3 ajustat fin pentru concepte medicale; necesită cerere de acces pe HF.
Notă tehnică a traducerii: Acestea sunt direcții de integrare, nu fluxuri gata validate de documentația SAM 3. În special, modelele pentru medicină și robotică necesită validare specifică domeniului, evaluarea riscurilor și, unde este cazul, conformitate de reglementare; accesul, licența și suportul CVAT pot varia între versiuni.
Ultralytics încapsulează SAM 3 în pachetul său Python:
from ultralytics import SAM
model = SAM("sam3.pt")
results = model(image_path, prompts="yellow school bus")
Aceeași interfață ca YOLO și SAM 2.
Notă tehnică a traducerii: Codul este păstrat fidel din original, dar fluxul documentat de Ultralytics pentru
SAM("sam3.pt")este segmentarea vizuală cu puncte, casete sau măști; nu folosește argumentulprompts=pentru PCS textual. Pentru prompturi textuale, documentația curentă cereSAM3SemanticPredictorși argumentultext. Consultați documentația oficială Ultralytics pentru SAM 3 și adaptați codul la versiunea instalată.
Livrați
Această lecție produce:
outputs/prompt-open-vocab-stack-picker.md— un prompt care alege SAM 3 / Grounded SAM 2 / YOLO-World / SAM-MI în funcție de latență, complexitatea conceptului și licențiere.outputs/skill-concept-prompt-designer.md— o competență care transformă enunțurile utilizatorului în prompturi de concept SAM 3 bine formate (separare, dezambiguizare, alternative).
Exerciții
- (Ușor) Rulați SAM 3 pe 10 imagini cu prompturi de concept alese de dumneavoastră. Comparați cu SAM 2 + Grounding DINO 1.5 pe aceleași imagini. Raportați conceptele omise de fiecare model.
- (Mediu) Construiți o interfață „clic pentru includere / clic pentru excludere” peste SAM 3: un prompt textual returnează instanțe candidate; utilizatorul selectează prin clic care dintre ele contează ca pozitive. Produceți setul final de concepte ca JSON.
- (Dificil) Ajustați fin SAM 3 pe un set de concepte personalizat (de exemplu, 5 tipuri de componente electronice), cu câte 20 de imagini etichetate pentru fiecare. Comparați cu SAM 3 zero-shot pe același set de test; măsurați îmbunătățirea IoU a măștii.
Notă tehnică a traducerii: Douăzeci de imagini pentru fiecare concept reprezintă un exercițiu minimal, nu o dimensiune suficientă generală pentru ajustare fină. Raportați împărțirea fără suprapuneri între antrenare și test, protocolul de adnotare, checkpointul zero-shot fixat drept bază de comparație, hiperparametrii și intervalele de incertitudine ale IoU.
Termeni-cheie
| Termen | Ce spun oamenii | Ce înseamnă de fapt |
|---|---|---|
| Segmentare cu vocabular deschis | „Segmentare după text” | Produce măști pentru obiecte descrise în limbaj natural, nu pentru un set fix de etichete |
| PCS | „Promptable Concept Segmentation” | Sarcina centrală a SAM 3 — dată o expresie nominală sau un exemplar de imagine, segmentează toate instanțele corespunzătoare |
| Prompt de concept | „Intrarea textuală” | Expresie nominală scurtă sau exemplar de imagine; nu o propoziție completă |
| Cap de prezență | „Este aici?” | Modul SAM 3 care decide dacă acel concept există în imagine înainte de localizare |
| SA-Co | „Benchmarkul SAM 3” | Benchmark de segmentare cu vocabular deschis, cu circa 270K concepte; de peste 50 de ori mai mare decât benchmarkurile anterioare cu vocabular deschis |
| Object Multiplex | „Actualizarea SAM 3.1” | Urmărire cu mai multe obiecte prin memorie partajată; urmărire rapidă împreună a multor instanțe |
| Grounded SAM 2 | „Pipeline modular” | Cascadă detector + SAM 2; rămâne relevantă când schimbarea detectorului contează |
| SAM-MI | „Variantă SAM eficientă” | Mask Injection pentru accelerare de 1,6× față de Grounded-SAM |
Lecturi suplimentare
- SAM 3: Segment Anything with Concepts (arXiv 2511.16719)
- SAM 3.1 Object Multiplex (Meta AI, martie 2026)
- Pagina modelului SAM 3 pe Hugging Face
- Tutorial Grounded SAM 2 (PyImageSearch)
- Documentația Ultralytics SAM 3
- SAM3-I: Instruction-aware SAM (arXiv 2512.04585)
Sursă: Originalul în limba engleză
Navigare: ← Lecția 04.23 — Transformere de difuzie și flux rectificat · Faza 4 — Viziune computerizată · Lecția 04.25 — Modele viziune–limbaj — tiparul ViT-MLP-LLM → · Catalog complet