Link to this sectionFast Segment Anything Model (FastSAM)#
Il Fast Segment Anything Model (FastSAM) è una soluzione innovativa basata su CNN in tempo reale per l'attività di Segment Anything. Questa attività è progettata per segmentare qualsiasi oggetto all'interno di un'immagine in base a vari possibili prompt di interazione dell'utente. FastSAM riduce significativamente le richieste computazionali pur mantenendo prestazioni competitive, rendendolo una scelta pratica per una varietà di attività di visione artificiale.
Watch: Object Tracking using FastSAM with Ultralytics
Link to this sectionArchitettura del modello#

Link to this sectionPanoramica#
FastSAM è progettato per superare i limiti del Segment Anything Model (SAM), un pesante modello Transformer con notevoli requisiti di risorse computazionali. Il FastSAM disaccoppia l'attività di segmentazione in due fasi sequenziali: instance segmentation completa e selezione guidata da prompt. La prima fase utilizza YOLOv8-seg per produrre maschere di segmentazione di tutte le istanze nell'immagine. Nella seconda fase, restituisce la regione di interesse corrispondente al prompt.
Link to this sectionCaratteristiche principali#
-
Soluzione in tempo reale: Sfruttando l'efficienza computazionale delle CNN, FastSAM fornisce una soluzione in tempo reale per l'attività di segmentazione, rendendolo prezioso per applicazioni industriali che richiedono risultati rapidi.
-
Efficienza e prestazioni: FastSAM offre una riduzione significativa delle richieste computazionali e di risorse senza compromettere la qualità delle prestazioni. Ottiene prestazioni paragonabili a SAM ma con risorse computazionali drasticamente ridotte, consentendo l'applicazione in tempo reale.
-
Segmentazione guidata da prompt: FastSAM può segmentare qualsiasi oggetto all'interno di un'immagine guidato da vari possibili prompt di interazione dell'utente, fornendo flessibilità e adattabilità in diversi scenari.
-
Basato su YOLOv8-seg: FastSAM è basato su YOLOv8-seg, un rilevatore di oggetti dotato di un ramo per l'instance segmentation. Ciò gli consente di produrre efficacemente maschere di segmentazione di tutte le istanze in un'immagine.
-
Risultati competitivi sui benchmark: Nell'attività di proposta di oggetti su MS COCO, FastSAM ottiene punteggi elevati a una velocità significativamente maggiore rispetto a SAM su una singola NVIDIA RTX 3090, dimostrando la sua efficienza e capacità.
-
Applicazioni pratiche: L'approccio proposto fornisce una nuova soluzione pratica per un gran numero di attività di visione a una velocità davvero elevata, decine o centinaia di volte più veloce rispetto ai metodi attuali.
-
Fattibilità della compressione del modello: FastSAM dimostra la fattibilità di un percorso in grado di ridurre significativamente lo sforzo computazionale introducendo un prior artificiale nella struttura, aprendo così nuove possibilità per l'architettura di grandi modelli per attività di visione generale.
Link to this sectionModelli disponibili, attività supportate e modalità operative#
Questa tabella presenta i modelli disponibili con i loro specifici pesi pre-addestrati, le attività che supportano e la loro compatibilità con diverse modalità operative come Inferenza, Validazione, Addestramento ed Esportazione, indicate dalle emoji ✅ per le modalità supportate e dalle emoji ❌ per le modalità non supportate.
| Tipo di modello | Pesi pre-addestrati | Attività supportate | Inferenza | Validazione | Addestramento | Esportazione |
|---|---|---|---|---|---|---|
| FastSAM-s | FastSAM-s.pt | Segmentazione di istanze | ✅ | ❌ | ❌ | ✅ |
| FastSAM-x | FastSAM-x.pt | Segmentazione di istanze | ✅ | ❌ | ❌ | ✅ |
Link to this sectionConfronto tra FastSAM e YOLO#
Qui confrontiamo i modelli SAM 2 di Meta, inclusa la variante più piccola SAM2-t, con i modelli di segmentazione Ultralytics inclusi YOLO26n-seg:
| Modello | Dimensioni (MB) | Parametri (M) | Velocità (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s con YOLOv8 backbone | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (11.0x più piccolo) | 3.4 (11.4x in meno) | 24.8 (945x più veloce) |
| Ultralytics YOLO11n-seg | 6.2 (12.6x più piccolo) | 2.9 (13.4x in meno) | 24.3 (964x più veloce) |
| Ultralytics YOLO26n-seg | 6.7 (11.7x più piccolo) | 2.7 (14.4x in meno) | 25.2 (930x più veloce) |
Questo confronto dimostra le sostanziali differenze nelle dimensioni e nelle velocità dei modelli tra le varianti SAM e i modelli di segmentazione YOLO. Mentre SAM fornisce capacità di segmentazione automatica uniche, i modelli YOLO, in particolare YOLOv8n-seg, YOLO11n-seg e YOLO26n-seg, sono significativamente più piccoli, più veloci e più efficienti dal punto di vista computazionale.
Velocità SAM misurate con PyTorch, velocità YOLO misurate con ONNX Runtime. Test eseguiti su un Apple M4 Air del 2025 con 16GB di RAM utilizzando torch==2.10.0, ultralytics==8.4.31 e onnxruntime==1.24.4. Per riprodurre questo test:
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
model = SAM(file)
model.info()
model(ASSETS)
# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Profile YOLO models (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
model = YOLO(file_name)
model.info()
onnx_path = model.export(format="onnx", dynamic=True)
model = YOLO(onnx_path)
model(ASSETS)Link to this sectionEsempi di utilizzo#
I modelli FastSAM sono facili da integrare nelle tue applicazioni Python. Ultralytics fornisce API Python e comandi CLI intuitivi per semplificare lo sviluppo.
Link to this sectionUtilizzo di Predict#
Per eseguire il object detection su un'immagine, usa il metodo predict come mostrato di seguito:
from ultralytics import FastSAM
# Define an inference source
source = "path/to/bus.jpg"
# Create a FastSAM model
model = FastSAM("FastSAM-s.pt") # or FastSAM-x.pt
# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)
# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])
# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])
# Run inference with texts prompt
results = model(source, texts="a photo of a dog")
# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")Questo snippet dimostra la semplicità di caricare un modello preaddestrato ed eseguire una previsione su un'immagine.
In questo modo puoi eseguire l'inferenza sull'immagine, ottenere tutti i results di segmentazione una volta sola ed eseguire l'inferenza dei prompt più volte senza dover rieseguire l'intera inferenza.
from ultralytics.models.fastsam import FastSAMPredictor
# Create FastSAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", model="FastSAM-s.pt", save=False, imgsz=1024)
predictor = FastSAMPredictor(overrides=overrides)
# Segment everything
everything_results = predictor("ultralytics/assets/bus.jpg")
# Prompt inference
bbox_results = predictor.prompt(everything_results, bboxes=[[200, 200, 300, 300]])
point_results = predictor.prompt(everything_results, points=[200, 200])
text_results = predictor.prompt(everything_results, texts="a photo of a dog")Tutti i results restituiti negli esempi sopra sono oggetti Results che consentono un facile accesso alle maschere previste e all'immagine sorgente.
Link to this sectionUtilizzo di Val#
La convalida del modello su un set di dati può essere eseguita come segue:
from ultralytics import FastSAM
# Create a FastSAM model
model = FastSAM("FastSAM-s.pt") # or FastSAM-x.pt
# Validate the model
results = model.val(data="coco8-seg.yaml")Tieni presente che FastSAM supporta solo il rilevamento e la segmentazione di una singola classe di oggetti. Ciò significa che riconoscerà e segmenterà tutti gli oggetti come la stessa classe. Pertanto, durante la preparazione del set di dati, è necessario convertire tutti gli ID delle categorie di oggetti in 0.
Link to this sectionUtilizzo di Track#
Per eseguire il monitoraggio degli oggetti su un'immagine, usa il metodo track come mostrato di seguito:
from ultralytics import FastSAM
# Create a FastSAM model
model = FastSAM("FastSAM-s.pt") # or FastSAM-x.pt
# Track with a FastSAM model on a video
results = model.track(source="path/to/video.mp4", imgsz=640)Link to this sectionUtilizzo ufficiale di FastSAM#
FastSAM è disponibile anche direttamente dal repository https://github.com/CASIA-IVA-Lab/FastSAM. Ecco una breve panoramica dei passaggi tipici che potresti compiere per utilizzare FastSAM:
Link to this sectionInstallazione#
-
Clona il repository FastSAM:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git -
Crea e attiva un ambiente Conda con Python 3.9:
conda create -n FastSAM python=3.9 conda activate FastSAM -
Passa al repository clonato e installa i pacchetti necessari:
cd FastSAM pip install -r requirements.txt -
Installa il modello CLIP:
pip install git+https://github.com/ultralytics/CLIP.git
Link to this sectionEsempio di utilizzo#
-
Scarica un checkpoint del modello.
-
Usa FastSAM per l'inferenza. Esempio di comandi:
-
Segmenta tutto in un'immagine:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg -
Segmenta oggetti specifici utilizzando un prompt di testo:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog" -
Segmenta oggetti all'interno di un bounding box (fornisci le coordinate del box nel formato xywh):
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]" -
Segmenta oggetti vicino a punti specifici:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"
-
Inoltre, puoi provare FastSAM tramite la demo Colab del CASIA-IVA-Lab.
Link to this sectionCitazioni e Riconoscimenti#
Desideriamo ringraziare gli autori di FastSAM per i loro significativi contributi nel campo dell'instance segmentation in tempo reale:
@misc{zhao2023fast,
title={Fast Segment Anything},
author={Xu Zhao and Wenchao Ding and Yongqi An and Yinglong Du and Tao Yu and Min Li and Ming Tang and Jinqiao Wang},
year={2023},
eprint={2306.12156},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Il paper originale di FastSAM è disponibile su arXiv. Gli autori hanno reso il loro lavoro pubblicamente disponibile e la codebase può essere consultata su GitHub. Apprezziamo i loro sforzi nel far progredire il campo e nel rendere il loro lavoro accessibile alla comunità più ampia.
Link to this sectionFAQ#
Link to this sectionCos'è FastSAM e in cosa differisce da SAM?#
FastSAM, abbreviazione di Fast Segment Anything Model, è una soluzione in tempo reale basata su convolutional neural network (CNN) progettata per ridurre le richieste computazionali mantenendo prestazioni elevate nelle attività di segmentazione degli oggetti. A differenza del Segment Anything Model (SAM), che utilizza un'architettura più pesante basata su Transformer, FastSAM sfrutta Ultralytics YOLOv8-seg per un'efficiente instance segmentation in due fasi: segmentazione di tutte le istanze seguita da selezione guidata da prompt.
Link to this sectionCome ottiene FastSAM prestazioni di segmentazione in tempo reale?#
FastSAM ottiene la segmentazione in tempo reale disaccoppiando l'attività di segmentazione in una fase di segmentazione di tutte le istanze con YOLOv8-seg e una fase di selezione guidata da prompt. Utilizzando l'efficienza computazionale delle CNN, FastSAM offre riduzioni significative delle richieste computazionali e di risorse pur mantenendo prestazioni competitive. Questo approccio a due fasi consente a FastSAM di fornire una segmentazione veloce ed efficiente, adatta ad applicazioni che richiedono risultati rapidi.
Link to this sectionQuali sono le applicazioni pratiche di FastSAM?#
FastSAM è pratico per una varietà di attività di computer vision che richiedono prestazioni di segmentazione in tempo reale. Le applicazioni includono:
- Automazione industriale per il controllo e l'assicurazione della qualità
- Analisi video in tempo reale per sicurezza e sorveglianza
- Autonomous vehicles per il rilevamento e la segmentazione di oggetti
- Imaging medico per attività di segmentazione precise e rapide
La sua capacità di gestire vari prompt di interazione dell'utente rende FastSAM adattabile e flessibile per diversi scenari.
Link to this sectionCome utilizzo il modello FastSAM per l'inferenza in Python?#
Per utilizzare FastSAM per l'inferenza in Python, puoi seguire l'esempio qui sotto:
from ultralytics import FastSAM
# Define an inference source
source = "path/to/bus.jpg"
# Create a FastSAM model
model = FastSAM("FastSAM-s.pt") # or FastSAM-x.pt
# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)
# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])
# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])
# Run inference with texts prompt
results = model(source, texts="a photo of a dog")
# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")Per ulteriori dettagli sui metodi di inferenza, consulta la sezione Predict Usage della documentazione.
Link to this sectionQuali tipi di prompt supporta FastSAM per le attività di segmentazione?#
FastSAM supporta molteplici tipi di prompt per guidare le attività di segmentazione:
- Everything Prompt: Genera la segmentazione per tutti gli oggetti visibili.
- Bounding Box (BBox) Prompt: Segmenta gli oggetti all'interno di un bounding box specificato.
- Text Prompt: Utilizza un testo descrittivo per segmentare gli oggetti corrispondenti alla descrizione.
- Point Prompt: Segmenta gli oggetti vicino a punti specifici definiti dall'utente.
Questa flessibilità consente a FastSAM di adattarsi a un'ampia gamma di scenari di interazione dell'utente, migliorandone l'utilità in diverse applicazioni. Per ulteriori informazioni sull'utilizzo di questi prompt, consulta la sezione Key Features.