Ultralytics YOLO27:
Get Started

Modell zur schnellen Segmentierung beliebiger Objekte (FastSAM)#

Das Modell zur schnellen Segmentierung beliebiger Objekte (FastSAM) ist eine neuartige, echtzeitfähige CNN-basierte Lösung für die Aufgabe, beliebige Objekte zu segmentieren. Bei dieser Aufgabe werden Objekte in einem Bild anhand verschiedener möglicher Interaktionsvorgaben segmentiert. FastSAM reduziert den Rechenaufwand erheblich und bietet zugleich eine konkurrenzfähige Leistung. Damit ist es eine praktische Wahl für vielfältige Bildverarbeitungsaufgaben.



Ansehen: Objektverfolgung mit FastSAM über Ultralytics

Modellarchitektur#

Architekturübersicht des Modells zur schnellen Segmentierung beliebiger Objekte (FastSAM)

Übersicht#

FastSAM wurde entwickelt, um die Einschränkungen des Segment Anything Model (SAM) zu überwinden, eines rechenintensiven Transformers mit hohem Bedarf an Rechenressourcen. FastSAM teilt die Aufgabe, beliebige Objekte zu segmentieren, in zwei aufeinanderfolgende Schritte auf: Instanzsegmentierung aller Objekte und promptgesteuerte Auswahl. Im ersten Schritt verwendet das Modell YOLOv8-seg, um Segmentierungsmasken für alle Instanzen im Bild zu erzeugen. Im zweiten Schritt gibt es den zur Vorgabe passenden Interessenbereich aus.

Wichtige Funktionen#

  1. Echtzeitlösung: Dank der Recheneffizienz von CNNs bietet FastSAM eine Echtzeitlösung für die Segmentierung beliebiger Objekte. Das macht das Modell für industrielle Anwendungen wertvoll, bei denen schnelle Ergebnisse erforderlich sind.

  2. Effizienz und Leistung: FastSAM senkt den Rechen- und Ressourcenbedarf erheblich, ohne die Leistungsqualität zu beeinträchtigen. Es erzielt eine mit SAM vergleichbare Leistung, benötigt aber deutlich weniger Rechenressourcen und ermöglicht so Echtzeitanwendungen.

  3. Promptgesteuerte Segmentierung: FastSAM kann beliebige Objekte in einem Bild anhand verschiedener möglicher Interaktionsvorgaben segmentieren und bietet so Flexibilität und Anpassungsfähigkeit in unterschiedlichen Situationen.

  4. Basiert auf YOLOv8-seg: FastSAM basiert auf YOLOv8-seg, einem Objektdetektor mit einem Zweig für die Instanzsegmentierung. Dadurch kann das Modell Segmentierungsmasken für alle Instanzen in einem Bild effektiv erzeugen.

  5. Konkurrenzfähige Benchmark-Ergebnisse: Bei der Aufgabe, Objektvorschläge zu ermitteln, erzielt FastSAM auf MS COCO mit einer einzelnen NVIDIA RTX 3090 hohe Werte und ist dabei deutlich schneller als SAM. Das belegt seine Effizienz und Leistungsfähigkeit.

  6. Praktische Anwendungen: Der vorgeschlagene Ansatz bietet eine neue, praktische Lösung für zahlreiche Bildverarbeitungsaufgaben und ist dabei äußerst schnell – zehn- bis hundertmal schneller als aktuelle Methoden.

  7. Machbarkeit der Modellkomprimierung: FastSAM zeigt, dass sich der Rechenaufwand deutlich senken lässt, indem der Modellstruktur eine künstliche Vorannahme hinzugefügt wird. Dadurch eröffnen sich neue Möglichkeiten für große Modellarchitekturen für allgemeine Bildverarbeitungsaufgaben.

Verfügbare Modelle, unterstützte Aufgaben und Betriebsmodi#

Diese Tabelle zeigt die verfügbaren Modelle mit ihren jeweiligen vortrainierten Gewichten, den unterstützten Aufgaben und der Kompatibilität mit verschiedenen Betriebsmodi wie Inferenz, Validierung, Training und Export. ✅ kennzeichnet unterstützte Modi, ❌ nicht unterstützte Modi.

ModelltypVortrainierte GewichteUnterstützte AufgabenTrainingValidierungInferenzExportieren
FastSAM-sFastSAM-s.ptInstanzsegmentierung❌✅✅✅
FastSAM-xFastSAM-x.ptInstanzsegmentierung❌✅✅✅

FastSAM im Vergleich zu YOLO#

Hier vergleichen wir FastSAM-s mit den SAM-Varianten von Meta und den Segmentierungsmodellen von Ultralytics, darunter YOLO26n-seg:

ModellGröße
(MB)
Parameter
(M)
Geschwindigkeit (CPU)
(ms/Bild)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s mit YOLOv8-Backbone23.911.858.0
Ultralytics YOLOv8n-seg7.1 (11.0-mal kleiner)3.4 (11.4-mal weniger)24.8 (945-mal schneller)
Ultralytics YOLO11n-seg6.2 (12.6-mal kleiner)2.9 (13.4-mal weniger)24.3 (964-mal schneller)
Ultralytics YOLO26n-seg6.7 (11.7-mal kleiner)2.7 (14.4-mal weniger)25.2 (930-mal schneller)

Dieser Vergleich zeigt die erheblichen Unterschiede bei Modellgrößen und Geschwindigkeiten zwischen SAM-Varianten und YOLO-Segmentierungsmodellen. SAM bietet zwar einzigartige Möglichkeiten zur automatischen Segmentierung, doch YOLO-Modelle, insbesondere YOLOv8n-seg, YOLO11n-seg und YOLO26n-seg, sind deutlich kleiner, schneller und recheneffizienter.

Die Geschwindigkeiten von SAM wurden mit PyTorch gemessen, die von YOLO mit ONNX Runtime. Die Tests wurden auf einem Apple M4 Air aus dem Jahr 2025 mit 16 GB RAM und torch==2.10.0, ultralytics==8.4.31 und onnxruntime==1.24.4 durchgeführt. So kannst du diesen Test reproduzieren:

Beispiel
from ultralytics import ASSETS, SAM, YOLO, FastSAM

# SAM2-t, SAM2-b, SAM-b, MobileSAM profilieren
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# FastSAM-s profilieren
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# YOLO-Modelle profilieren (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, nms=False)  # NMS-freier YOLO26-Head; für YOLOv8/YOLO11 ohne Funktion
    model = YOLO(onnx_path)
    model(ASSETS)

Anwendungsbeispiele#

Die FastSAM-Modelle lassen sich einfach in deine Python-Anwendungen integrieren. Ultralytics stellt eine benutzerfreundliche Python-API und CLI-Befehle bereit, um die Entwicklung zu vereinfachen.

Verwendung für Vorhersagen#

Verwende zur Segmentierung eines Bildes die Methode predict wie unten gezeigt:

Beispiel
from ultralytics import FastSAM

# Inferenzquelle definieren
source = "path/to/bus.jpg"

# Ein FastSAM-Modell erstellen
model = FastSAM("FastSAM-s.pt")  # oder FastSAM-x.pt

# Eine Inferenz auf einem Bild ausführen
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

# Inferenz mit Begrenzungsrahmen-Prompt ausführen
results = model(source, bboxes=[439, 437, 524, 709])

# Inferenz mit Punktvorgaben ausführen
results = model(source, points=[[200, 200]], labels=[1])

# Inferenz mit Textvorgaben ausführen
results = model(source, texts="a photo of a dog")

# Inferenz gleichzeitig mit BBoxes, Punkten und Textvorgaben ausführen
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")

Dieses Codebeispiel zeigt, wie einfach es ist, ein vortrainiertes Modell zu laden und eine Vorhersage für ein Bild auszuführen.

FastSAMPredictor-Beispiel

So kannst du einmalig die Inferenz für ein Bild ausführen und alle Segmentierungen mit results erhalten. Anschließend kannst du mehrfach Inferenz mit Vorgaben ausführen, ohne die Inferenz wiederholt auszuführen.

from ultralytics.models.fastsam import FastSAMPredictor

# FastSAMPredictor erstellen
overrides = {"conf": 0.25, "task": "segment", "mode": "predict", "model": "FastSAM-s.pt", "save": False, "imgsz": 1024}
predictor = FastSAMPredictor(overrides=overrides)

# Alles segmentieren
everything_results = predictor("ultralytics/assets/bus.jpg")

# Inferenz mit Vorgaben
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")
Hinweis

Alle in den obigen Beispielen zurückgegebenen results sind Results-Objekte, über die du einfach auf die vorhergesagten Masken und das Quellbild zugreifen kannst.

Verwendung zur Validierung#

Bitte beachte, dass FastSAM nur die Erkennung und Segmentierung einer einzigen Objektklasse unterstützt. Das bedeutet, dass das Modell alle Objekte als derselben Klasse zugehörig erkennt und segmentiert. Daher musst du beim Vorbereiten des Datensatzes alle Objektkategorie-IDs in 0 umwandeln.

Die Validierung des Modells auf einem Datensatz kann wie folgt durchgeführt werden:

Beispiel
from ultralytics import FastSAM

# Ein FastSAM-Modell erstellen
model = FastSAM("FastSAM-s.pt")  # oder FastSAM-x.pt

# Das Modell validieren
results = model.val(data="coco8-seg.yaml")

Tracking-Nutzung#

Um Objekte in einem Bild zu verfolgen, verwende die Methode track wie unten gezeigt:

Beispiel
from ultralytics import FastSAM

# Ein FastSAM-Modell erstellen
model = FastSAM("FastSAM-s.pt")  # oder FastSAM-x.pt

# Tracking mit einem FastSAM-Modell in einem Video
results = model.track(source="path/to/video.mp4", imgsz=640)

Offizielle FastSAM-Nutzung#

FastSAM ist auch direkt im Repository CASIA-LMC-Lab/FastSAM verfügbar. Hier findest du einen kurzen Überblick über die üblichen Schritte zur Verwendung von FastSAM:

Installation#

  1. Klone das FastSAM-Repository:

    git clone https://github.com/CASIA-LMC-Lab/FastSAM.git
  2. Erstelle und aktiviere eine Conda-Umgebung mit Python 3.9:

    conda create -n FastSAM python=3.9
    conda activate FastSAM
  3. Wechsle in das geklonte Repository und installiere die erforderlichen Pakete:

    cd FastSAM
    pip install -r requirements.txt
  4. Installiere das CLIP-Modell:

    pip install git+https://github.com/ultralytics/CLIP.git

Anwendungsbeispiel#

  1. Lade einen Modell-Checkpoint herunter.

  2. Verwende FastSAM für die Inferenz. Beispielbefehle:

    • Segmentiere alle Objekte in einem Bild:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
    • Segmentiere bestimmte Objekte mithilfe eines Text-Prompts:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog"
    • Segmentiere Objekte innerhalb einer Begrenzungsbox (gib die Boxkoordinaten im xywh-Format an):

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]"
    • Segmentiere Objekte in der Nähe bestimmter Punkte:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"

Außerdem kannst du FastSAM über die Colab-Demo von CASIA-LMC-Lab ausprobieren.

Zitate und Danksagungen#

Wir möchten den FastSAM-Autoren für ihre bedeutenden Beiträge auf dem Gebiet der Echtzeit-Instanzsegmentierung danken:

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

Das Originalpaper zu FastSAM findest du auf arXiv. Die Autoren haben ihre Arbeit öffentlich zugänglich gemacht; der Code ist auf GitHub verfügbar. Wir schätzen ihre Bemühungen, das Fachgebiet voranzubringen und ihre Arbeit einer breiteren Community zugänglich zu machen.

Häufig gestellte Fragen#

  • FastSAM, kurz für Fast Segment Anything Model, ist eine auf einem konvolutionalen neuronalen Netz (CNN) basierende Lösung für die Echtzeitverarbeitung. Sie wurde entwickelt, um den Rechenaufwand zu verringern und zugleich eine hohe Leistung bei der Objektsegmentierung zu erzielen. Anders als das Segment Anything Model (SAM), das eine rechenintensivere Transformer-Architektur verwendet, nutzt FastSAM Ultralytics YOLOv8-seg für eine effiziente Instanzsegmentierung in zwei Schritten: Segmentierung aller Instanzen und anschließende promptgesteuerte Auswahl.

  • FastSAM erreicht Segmentierung in Echtzeit, indem es die Aufgabe in zwei Schritte aufteilt: Segmentierung aller Instanzen mit YOLOv8-seg und promptgesteuerte Auswahl. Durch die hohe Recheneffizienz von CNNs kann FastSAM den Rechen- und Ressourcenaufwand deutlich senken und zugleich eine konkurrenzfähige Leistung bieten. Mit diesem zweistufigen Ansatz ermöglicht FastSAM eine schnelle und effiziente Segmentierung für Anwendungen, bei denen Ergebnisse rasch benötigt werden.

  • FastSAM eignet sich für verschiedene Aufgaben im Bereich Computer Vision, bei denen Segmentierung in Echtzeit erforderlich ist. Zu den Anwendungsbereichen gehören:

    • Industrielle Automatisierung für Qualitätskontrolle und Qualitätssicherung
    • Echtzeit-Videoanalyse für Sicherheit und Überwachung
    • Autonome Fahrzeuge zur Objekterkennung und Segmentierung
    • Medizinische Bildgebung für präzise und schnelle Segmentierungsaufgaben

    Dank seiner Fähigkeit, verschiedene Nutzereingaben zu verarbeiten, ist FastSAM flexibel und lässt sich an unterschiedliche Szenarien anpassen.

  • Für die Inferenz mit FastSAM in Python kannst du dem folgenden Beispiel folgen:

    from ultralytics import FastSAM
    
    # Inferenzquelle definieren
    source = "path/to/bus.jpg"
    
    # Ein FastSAM-Modell erstellen
    model = FastSAM("FastSAM-s.pt")  # oder FastSAM-x.pt
    
    # Eine Inferenz auf einem Bild ausführen
    everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)
    
    # Inferenz mit Begrenzungsrahmen-Prompt ausführen
    results = model(source, bboxes=[439, 437, 524, 709])
    
    # Inferenz mit Punktvorgaben ausführen
    results = model(source, points=[[200, 200]], labels=[1])
    
    # Inferenz mit Textvorgaben ausführen
    results = model(source, texts="a photo of a dog")
    
    # Inferenz gleichzeitig mit BBoxes, Punkten und Textvorgaben ausführen
    results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")

    Weitere Informationen zu Inferenzmethoden findest du im Abschnitt Predict-Nutzung der Dokumentation.

  • FastSAM unterstützt mehrere Prompt-Arten zur Steuerung der Segmentierungsaufgaben:

    • Alles-Prompt: Erstellt Segmentierungen für alle sichtbaren Objekte.
    • Begrenzungsbox-Prompt (BBox): Segmentiert Objekte innerhalb einer angegebenen Begrenzungsbox.
    • Text-Prompt: Verwendet eine beschreibende Texteingabe, um Objekte zu segmentieren, die der Beschreibung entsprechen.
    • Punkt-Prompt: Segmentiert Objekte in der Nähe bestimmter, vom Nutzer festgelegter Punkte.

    Diese Flexibilität ermöglicht es FastSAM, sich an vielfältige Szenarien der Benutzerinteraktion anzupassen und seinen Nutzen für unterschiedliche Anwendungen zu erhöhen. Weitere Informationen zur Verwendung dieser Prompts findest du im Abschnitt Hauptmerkmale.

Kommentare