Meet YOLO26: next-gen vision AI.

Link to this sectionFast Segment Anything Model (FastSAM)#

Das Fast Segment Anything Model (FastSAM) ist eine neuartige, auf CNNs basierende Echtzeit-Lösung für die „Segment Anything“-Aufgabe. Diese Aufgabe wurde entwickelt, um jedes Objekt innerhalb eines Bildes auf Basis verschiedener möglicher Benutzer-Eingabeaufforderungen zu segmentieren. FastSAM reduziert den Rechenaufwand erheblich bei gleichzeitig wettbewerbsfähiger Leistung, was es zu einer praktischen Wahl für eine Vielzahl von Vision-Aufgaben macht.



Watch: Object Tracking using FastSAM with Ultralytics

Link to this sectionModellarchitektur#

Fast Segment Anything Model (FastSAM) Architekturübersicht

Link to this sectionÜbersicht#

FastSAM wurde entwickelt, um die Einschränkungen des Segment Anything Model (SAM) zu adressieren, einem schweren Transformer-Modell mit erheblichem Bedarf an Rechenressourcen. FastSAM entkoppelt die „Segment Anything“-Aufgabe in zwei aufeinanderfolgende Phasen: All-Instance Segmentation und prompt-gesteuerte Auswahl. Die erste Phase nutzt YOLOv8-seg, um die Segmentierungsmasken aller Instanzen im Bild zu erzeugen. In der zweiten Phase gibt es die Region-of-Interest aus, die dem Prompt entspricht.

Link to this sectionHauptfunktionen#

  1. Echtzeit-Lösung: Durch die Nutzung der Recheneffizienz von CNNs bietet FastSAM eine Echtzeit-Lösung für die „Segment Anything“-Aufgabe, was es wertvoll für industrielle Anwendungen macht, die schnelle Ergebnisse erfordern.

  2. Effizienz und Leistung: FastSAM bietet eine signifikante Reduzierung des Rechen- und Ressourcenbedarfs, ohne die Leistungsqualität zu beeinträchtigen. Es erzielt eine vergleichbare Leistung wie SAM, jedoch mit drastisch reduzierten Rechenressourcen, was eine Anwendung in Echtzeit ermöglicht.

  3. Prompt-gesteuerte Segmentierung: FastSAM kann jedes Objekt in einem Bild segmentieren, gesteuert durch verschiedene mögliche Benutzer-Eingabeaufforderungen, was Flexibilität und Anpassungsfähigkeit in verschiedenen Szenarien bietet.

  4. Basierend auf YOLOv8-seg: FastSAM basiert auf YOLOv8-seg, einem Objektdetektor, der mit einem Zweig für Instanzsegmentierung ausgestattet ist. Dies ermöglicht es ihm, effektiv die Segmentierungsmasken aller Instanzen in einem Bild zu erstellen.

  5. Wettbewerbsfähige Ergebnisse bei Benchmarks: Bei der Objektvorschlagsaufgabe auf MS COCO erzielt FastSAM hohe Punktzahlen bei deutlich höherer Geschwindigkeit als SAM auf einer einzelnen NVIDIA RTX 3090, was seine Effizienz und Leistungsfähigkeit demonstriert.

  6. Praktische Anwendungen: Der vorgeschlagene Ansatz bietet eine neue, praktische Lösung für eine große Anzahl von Vision-Aufgaben bei sehr hoher Geschwindigkeit, zig- oder hundertmal schneller als aktuelle Methoden.

  7. Machbarkeit der Modellkomprimierung: FastSAM demonstriert die Machbarkeit eines Pfades, der den Rechenaufwand durch die Einführung eines künstlichen Priors in die Struktur erheblich reduzieren kann, wodurch neue Möglichkeiten für die Architektur großer Modelle für allgemeine Vision-Aufgaben eröffnet werden.

Link to this sectionVerfügbare Modelle, unterstützte Aufgaben und Betriebsmodi#

Diese Tabelle zeigt die verfügbaren Modelle mit ihren spezifischen vortrainierten Gewichten, die von ihnen unterstützten Aufgaben und ihre Kompatibilität mit verschiedenen Betriebsmodi wie Inference, Validation, Training und Export, gekennzeichnet durch ✅-Emojis für unterstützte Modi und ❌-Emojis für nicht unterstützte Modi.

ModelltypVortrainierte GewichteUnterstützte AufgabenInferenzValidierungTrainingExportieren
FastSAM-sFastSAM-s.ptInstanz-Segmentierung
FastSAM-xFastSAM-x.ptInstanz-Segmentierung

Link to this sectionFastSAM Vergleich vs YOLO#

Hier vergleichen wir die SAM 2-Modelle von Meta, einschließlich der kleinsten SAM2-t-Variante, mit Ultralytics Segmentierungsmodellen, einschließlich YOLO26n-seg:

ModellGröße
(MB)
Parameter
(M)
Geschwindigkeit (CPU)
(ms/im)
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.0x kleiner)3.4 (11.4x weniger)24.8 (945x schneller)
Ultralytics YOLO11n-seg6.2 (12.6x kleiner)2.9 (13.4x weniger)24.3 (964x schneller)
Ultralytics YOLO26n-seg6.7 (11.7x kleiner)2.7 (14.4x weniger)25.2 (930x schneller)

Dieser Vergleich demonstriert die erheblichen Unterschiede in Modellgrößen und Geschwindigkeiten zwischen SAM-Varianten und YOLO-Segmentierungsmodellen. Während SAM einzigartige automatische Segmentierungsfunktionen bietet, sind YOLO-Modelle, insbesondere YOLOv8n-seg, YOLO11n-seg und YOLO26n-seg, deutlich kleiner, schneller und recheneffizienter.

SAM-Geschwindigkeiten wurden mit PyTorch gemessen, YOLO-Geschwindigkeiten mit ONNX Runtime. Tests wurden auf einem 2025 Apple M4 Air mit 16GB RAM unter Verwendung von torch==2.10.0, ultralytics==8.4.31 und onnxruntime==1.24.4 durchgeführt. Um diesen Test zu reproduzieren:

Beispiel
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 sectionAnwendungsbeispiele#

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

Link to this sectionPredict-Nutzung#

Um object detection auf einem Bild durchzuführen, verwende die predict-Methode wie unten gezeigt:

Beispiel
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")

Dieser Ausschnitt demonstriert die Einfachheit des Ladens eines vortrainierten Modells und des Ausführens einer Vorhersage auf einem Bild.

FastSAMPredictor Beispiel

Auf diese Weise kannst du eine Inferenz auf einem Bild ausführen, alle Segment-results erhalten und Prompt-Inferenzen mehrfach ausführen, ohne die Inferenz mehrfach starten zu müssen.

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")
Hinweis

Alle zurückgegebenen results in den obigen Beispielen sind Results-Objekte, die einen einfachen Zugriff auf vorhergesagte Masken und das Quellbild ermöglichen.

Link to this sectionVal-Nutzung#

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

Beispiel
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")

Bitte beachte, dass FastSAM nur die Erkennung und Segmentierung einer einzigen Objektklasse unterstützt. Das bedeutet, dass es alle Objekte als dieselbe Klasse erkennt und segmentiert. Daher musst du bei der Vorbereitung des Datensatzes alle Objektkategorie-IDs auf 0 konvertieren.

Link to this sectionTrack-Nutzung#

Um eine Objektverfolgung auf einem Bild durchzuführen, verwende die track-Methode wie unten gezeigt:

Beispiel
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 sectionFastSAM offizielle Nutzung#

FastSAM ist auch direkt über das Repository https://github.com/CASIA-IVA-Lab/FastSAM verfügbar. Hier ist ein kurzer Überblick über die typischen Schritte, die du zur Verwendung von FastSAM unternehmen könntest:

Link to this sectionInstallation#

  1. Klonen des FastSAM-Repositorys:

    git clone https://github.com/CASIA-IVA-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. Navigiere zum geklonten 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

Link to this sectionBeispielanwendung#

  1. Lade einen Modell-Checkpoint herunter.

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

    • Segmentiere alles in einem Bild:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
    • Segmentiere spezifische 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 eines bounding box (gib die Box-Koordinaten 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 spezifischer Punkte:

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

Zusätzlich kannst du FastSAM über die Colab-Demo von CASIA-IVA-Lab ausprobieren.

Link to this sectionZitate und Danksagungen#

Wir möchten den Autoren von FastSAM 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 ursprüngliche FastSAM-Papier findest du auf arXiv. Die Autoren haben ihre Arbeit öffentlich zugänglich gemacht, und die Codebasis kann auf GitHub abgerufen werden. Wir schätzen ihre Bemühungen, das Feld voranzubringen und ihre Arbeit der breiteren Gemeinschaft zugänglich zu machen.

Link to this sectionFAQ#

Link to this sectionWas ist FastSAM und wie unterscheidet es sich von SAM?#

FastSAM, kurz für Fast Segment Anything Model, ist eine auf einem convolutional neural network (CNN) basierende Echtzeit-Lösung, die entwickelt wurde, um den Rechenaufwand zu reduzieren und gleichzeitig eine hohe Leistung bei Objektsegmentierungsaufgaben beizubehalten. Im Gegensatz zum Segment Anything Model (SAM), das eine schwerere Transformer-basierte Architektur verwendet, nutzt FastSAM Ultralytics YOLOv8-seg für eine effiziente Instanzsegmentierung in zwei Stufen: Segmentierung aller Instanzen, gefolgt von einer prompt-gesteuerten Auswahl.

Link to this sectionWie erreicht FastSAM eine Echtzeit-Segmentierungsleistung?#

FastSAM erreicht eine Segmentierung in Echtzeit durch die Entkopplung der Segmentierungsaufgabe in die Segmentierung aller Instanzen mit YOLOv8-seg und anschließende prompt-gesteuerte Auswahlphasen. Durch die Nutzung der Recheneffizienz von CNNs bietet FastSAM erhebliche Reduzierungen des Rechen- und Ressourcenbedarfs bei gleichzeitiger Beibehaltung einer wettbewerbsfähigen Leistung. Dieser zweistufige Ansatz ermöglicht es FastSAM, eine schnelle und effiziente Segmentierung zu liefern, die für Anwendungen geeignet ist, die schnelle Ergebnisse erfordern.

Link to this sectionWas sind die praktischen Anwendungen von FastSAM?#

FastSAM ist praktisch für eine Vielzahl von computer vision-Aufgaben, die eine Echtzeit-Segmentierungsleistung erfordern. Zu den Anwendungen gehören:

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

Die Fähigkeit, verschiedene Benutzer-Eingabeaufforderungen zu verarbeiten, macht FastSAM anpassungsfähig und flexibel für unterschiedliche Szenarien.

Link to this sectionWie verwende ich das FastSAM-Modell für die Inferenz in Python?#

Um FastSAM für die Inferenz in Python zu verwenden, kannst du dem folgenden Beispiel folgen:

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")

Weitere Details zu Inferenzmethoden findest du im Abschnitt Predict Usage der Dokumentation.

Link to this sectionWelche Arten von Prompts unterstützt FastSAM für Segmentierungsaufgaben?#

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

  • Everything Prompt: Generiert eine Segmentierung für alle sichtbaren Objekte.
  • Bounding Box (BBox) Prompt: Segmentiert Objekte innerhalb einer angegebenen Bounding Box.
  • Text Prompt: Verwendet einen beschreibenden Text, um Objekte zu segmentieren, die der Beschreibung entsprechen.
  • Point Prompt: Segmentiert Objekte in der Nähe spezifischer, vom Benutzer definierter Punkte.

Diese Flexibilität ermöglicht es FastSAM, sich an eine breite Palette von Benutzerinteraktionsszenarien anzupassen, was seinen Nutzen über verschiedene Anwendungen hinweg erhöht. Weitere Informationen zur Verwendung dieser Prompts findest du im Abschnitt Key Features.

Kommentare