Segmentierung ist eine beliebte Aufgabe in Laptop Imaginative and prescient mit dem Ziel, ein Eingabebild in mehrere Regionen zu verteilnen, wobei jeder Bereich ein separates Objekt darstellt.
In mehreren klassischen Ansätzen aus der Vergangenheit wurden ein Modell Rückgrat (z. B. U-NET) aufgenommen und es mit spezialisierten Datensätzen eine Feinabstimmung abgeschlossen. Während die Feinabstimmung intestine funktioniert, veranlasste die Entstehung von GPT-2 und GPT-3 die Neighborhood für maschinelles Lernen, sich allmählich auf die Entwicklung von Lernlösungen von Null zu verschieben.
Null-Shot-Lernen bezieht sich auf die Fähigkeit eines Modells, eine Aufgabe auszuführen, ohne explizit Schulungsbeispiele dafür erhalten zu haben.
Das Null-Shot-Konzept spielt eine wichtige Rolle, indem die Feinabstimmungsphase übersprungen werden kann, mit der Hoffnung, dass das Modell clever genug ist, um jede Aufgabe unterwegs zu lösen.
Im Kontext von Laptop Imaginative and prescient veröffentlichte Meta die weithin bekannte allgemeine Function “Phase alles Modell”(SAM) im Jahr 2023, wodurch die Segmentierungsaufgaben mit anständiger Qualität mit anständiger Qualität ausgeführt werden konnten.

Während die groß angelegten Ergebnisse von SAM einige Monate später beeindruckend waren, veröffentlichte die Gruppe Chinese language Academy of Sciences Picture and Video Evaluation (CASIA IVA) das Fastsam-Modell. Wie das Adjektiv „Quick“ schon sagt, befasst sich Fastsam mit den Geschwindigkeitsbeschränkungen von SAM durch Beschleunigung des Inferenzprozesses um bis zu 50 Mal und gleichzeitig die Qualität der hohen Segmentierungsqualität.
In diesem Artikel werden wir die Fastsam -Architektur, mögliche Inferenzoptionen untersuchen und untersuchen, was sie im Vergleich zum Normal -SAM -Modell „schnell“ macht. Darüber hinaus werden wir uns ein Code -Beispiel ansehen, um unser Verständnis zu festigen.
Als Voraussetzung wird dringend empfohlen, dass Sie mit den Grundlagen des Laptop Imaginative and prescient, des YOLO -Modells, vertraut sind und das Ziel der Segmentierungsaufgaben verstehen.
Architektur
Der Inferenzprozess in Fastsam findet in zwei Schritten statt:
- All-Instanz-Segmentierung. Ziel ist es, Segmentierungsmasken für alle Objekte im Bild zu erstellen.
- Einsprechende Auswahl. Nachdem alle möglichen Masken erhalten wurden, gibt die Eingangsauswahl den Bildbereich zurück, der der Eingabeaufforderung entspricht.

Beginnen wir mit der All -Occasion -Segmentierung.
Alle Instanzsegmentierung
Bevor Sie die Architektur visuell untersuchen, wenden wir uns auf das Originalpapier:
„Fastsam-Architektur basiert auf Yolov8-seg-einem mit dem Instanzsegmentierungszweig ausgestatteten Objektdetektor, der die Yolact-Methode verwendet“–Schnelles Phase alles Papier
Die Definition magazine für diejenigen komplex erscheinen, die mit Yolov8-seg und Yolact nicht vertraut sind. Um die Bedeutung dieser beiden Modelle besser zu klären, werde ich auf jeden Fall eine einfache Instinct darüber geben, was sie sind und wie sie verwendet werden.
Yolact (Sie sehen sich nur Koeffizienten an)
Yolact ist ein Echtzeit-Instanzsegmentierungs-Faltungsmodell, das sich auf die Hochgeschwindigkeitserkennung konzentriert, die vom YOLO-Modell inspiriert ist und die Leistung erzielt, die mit dem Masks R-CNN-Modell vergleichbar ist.
Das Yolakt besteht aus zwei Hauptmodulen (Zweige):
- Prototypzweig. Das Yolact erstellt eine Reihe von Segmentierungsmasken, die als Prototypen bezeichnet werden.
- Vorhersagezweig. Yolact führt die Objekterkennung durch, indem sie Begrenzungsboxen vorhergesagt und dann Masks -Koeffizienten schätzt, die dem Modell zeigen, wie die Prototypen linear kombiniert werden, um eine endgültige Maske für jedes Objekt zu erstellen.

Um die ersten Merkmale aus dem Bild zu extrahieren, verwendet Yolact ResNet, gefolgt von einem Function Pyramid Community (FPN), um Multi-Scale-Funktionen zu erhalten. Jedes der P-Ranges (im Bild gezeigt) verarbeitet Merkmale unterschiedlicher Größen unter Verwendung von Konvolutionen (z. B. P3 enthält die kleinsten Merkmale, während P7 auf höhere Bildfunktionen erfasst). Dieser Ansatz hilft Yolact, Objekte auf verschiedenen Maßstäben zu berücksichtigen.
Yolov8-seg
Yolov8-seg ist ein Modell, das auf Yolact basiert und die gleichen Prinzipien in Bezug auf Prototypen enthält. Es hat auch zwei Köpfe:
- Erkennungskopf. Wird verwendet, um Begrenzungsboxen und Klassen vorherzusagen.
- Segmentierungskopf. Wird verwendet, um Masken zu erzeugen und sie zu kombinieren.
Der Hauptunterschied besteht darin, dass Yolov8-seg eine Yolo-Rückgrat-Architektur anstelle des in Yolact verwendeten Resnet-Spine und FPN verwendet. Dies macht Yolov8-seg während der Inferenz leichter und schneller.
Sowohl Yolact als auch Yolov8-SEG verwenden die Standardzahl der Prototypen Okay = 32, was ein einstellbarer Hyperparameter ist. In den meisten Szenarien bietet dies einen guten Kompromiss zwischen Geschwindigkeit und Segmentierungsleistung.
In beiden Modellen wird für jedes nachgewiesene Objekt ein Vektor der Größe okay = 32 vorhergesagt, was die Gewichte für die Masks -Prototypen darstellt. Diese Gewichte werden dann verwendet, um die Prototypen linear zu kombinieren, um die endgültige Maske für das Objekt zu erzeugen.
Fastsam -Architektur
Fastsams Architektur basiert auf Yolov8-SEG, enthält jedoch auch ein FPN, ähnlich wie das Yolact. Es enthält sowohl Erkennungs- als auch Segmentierungsköpfe mit Okay = 32 Prototypen. Da Fastsam jedoch eine Segmentierung aller möglichen Objekte im Bild durchführt, unterscheidet sich sein Workflow von dem von Yolov8-SEG und Yolact:
- Erstens führt Fastsam durch Produktion eine Segmentierung durch Okay = 32 Bildmasken.
- Diese Masken werden dann kombiniert, um die endgültige Segmentierungsmaske zu erzeugen.
- Während der Nachbearbeitung extrahiert Fastsam Regionen, berechnet Begrenzungsboxen und führt eine Instanzsegmentierung für jedes Objekt durch.

Notiz
Obwohl das Papier keine Particulars zur Nachbearbeitung erwähnt, kann beobachtet werden, dass das offizielle Fastsam Github-Repository die Methode verwendet cv2.findcontours () Aus OpenCV im Vorhersagestadium.
# The usage of cv2.findContours() technique the throughout prediction stage.
# Supply: FastSAM repository (FastSAM / fastsam / immediate.py)
def _get_bbox_from_mask(self, masks):
masks = masks.astype(np.uint8)
contours, hierarchy = cv2.findContours(masks, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
x1, y1, w, h = cv2.boundingRect(contours(0))
x2, y2 = x1 + w, y1 + h
if len(contours) > 1:
for b in contours:
x_t, y_t, w_t, h_t = cv2.boundingRect(b)
# Merge a number of bounding containers into one.
x1 = min(x1, x_t)
y1 = min(y1, y_t)
x2 = max(x2, x_t + w_t)
y2 = max(y2, y_t + h_t)
h = y2 - y1
w = x2 - x1
return (x1, y1, x2, y2)
In der Praxis gibt es verschiedene Methoden zum Extrahieren von Instanzmasken aus der endgültigen Segmentierungsmaske. Einige Beispiele sind die Konturerkennung (in Fastsam) und eine angeschlossene Komponentenanalyse (Analyse der angeschlossenen Komponenten (CV2.Related Elements ()).
Ausbildung
Fastsam -Forscher verwendeten das Gleiche SA-1B-Datensatz Als SAM -Entwickler trainierten aber der CNN -Detektor nur 2% der Daten. Trotzdem erzielt der CNN -Detektor die Leistung, die mit dem ursprünglichen SAM vergleichbar ist, und erfordert jedoch wesentlich weniger Ressourcen für die Segmentierung. Infolgedessen ist die Inferenz in Fastsam bis zu 50 -mal schneller!
Als Referenz besteht SA-1B aus 11 Millionen verschiedenen Bildern und 1,1 Milliarden hochwertigen Segmentierungsmasken.
Was macht Fastsam schneller als Sam? SAM verwendet die VIT -Architektur (Imaginative and prescient Transformator), die für seine starken Rechenanforderungen bekannt ist. Im Gegensatz dazu führt Fastsam eine Segmentierung mit CNNs durch, die viel leichter sind.
Schnellgeführte Auswahl
Der „Phase irgendetwas Aufgabe“ beinhaltet die Erzeugung einer Segmentierungsmaske für eine bestimmte Eingabeaufforderung, die in verschiedenen Formen dargestellt werden kann.

Punktaufforderung
Nach dem Erhalt mehrerer Prototypen für ein Bild kann eine Punktaufforderung verwendet werden, um anzuzeigen, dass sich das Interessenobjekt in einem bestimmten Bereich des Bildes befindet (oder nicht). Infolgedessen beeinflusst der angegebene Punkt die Koeffizienten für die Prototypmasken.
Ähnlich wie bei SAM ermöglicht Fastsam die Auswahl mehrerer Punkte und die Angabe, ob sie zum Vordergrund oder im Hintergrund gehören. Wenn ein dem Objekt entsprechender Vordergrundpunkt in mehreren Masken erscheint, können Hintergrundpunkte verwendet werden, um irrelevante Masken herauszufiltern.
Wenn jedoch mehrere Masken nach der Filterung immer noch die Punkteingabeaufforderungen erfüllen, wird die Maskenverschmelzung angewendet, um die endgültige Maske für das Objekt zu erhalten.
Darüber hinaus wenden die Autoren morphologische Operatoren an, um die endgültige Maskenform zu glätten und kleine Artefakte und Rauschen zu entfernen.
Field -Eingabeaufforderung
In der Field -Eingabeaufforderung wird die Maske ausgewählt, deren Begrenzungsfeld die höchste Kreuzung über Union (IOU) mit dem in der Eingabeaufforderung angegebenen Begrenzungsbox aufweist.
Textaufforderung
In ähnlicher Weise wird für die Textaufforderung die Maske, die der Textbeschreibung am besten entspricht, ausgewählt. Um dies zu erreichen, die Clipmodell wird verwendet:
- Die Einbettungen für die Textaufforderung und die okay = 32 Prototypmasken werden berechnet.
- Die Ähnlichkeiten zwischen der Texteinbettung und den Prototypen werden dann berechnet. Der Prototyp mit der höchsten Ähnlichkeit ist postbearbeitet und zurückgegeben.

Im Allgemeinen wird für die meisten Segmentierungsmodelle in der Regel auf Prototypenebene aufgefordert.
Fastsam -Repository
Unten finden Sie den Hyperlink zum offizielles Repository von Fastsameinschließlich einer klaren LEADME.MD -Datei und -Dokumentation.
Wenn Sie vorhaben, einen Raspberry Pi zu verwenden und das Fastsam -Modell darauf auszuführen, lesen Sie unbedingt das Github -Repository: Hagel-Anwendungs-Code-Prüfungen. Es enthält alle erforderlichen Code und Skripte, um Fastsam on Edge -Geräte zu starten.
In diesem Artikel haben wir uns Fastsam angesehen – eine verbesserte Model von Sam. Fastsam kombiniert die Greatest Practices aus Yolact- und Yolov8-SEG-Modellen und behält eine hohe Segmentierungsqualität bei und erreicht gleichzeitig einen signifikanten Schub der Vorhersagegeschwindigkeit und beschleunigt die Inferenz um mehrere Dutzend Mal im Vergleich zum ursprünglichen SAM.
Die Möglichkeit, Eingabeaufforderungen mit FastSAM zu verwenden, bietet eine versatile Möglichkeit, Segmentierungsmasken für interessierende Objekte abzurufen. Darüber hinaus wurde gezeigt, dass die Entkopplung der sofortigen Selektion aus der All-Instanz-Segmentierung die Komplexität verringert.
Im Folgenden finden Sie einige Beispiele für die Fastsam -Verwendung mit unterschiedlichen Eingabeaufforderungen, die visuell zeigen, dass die Qualität von SAM immer noch die hohe Segmentierungsqualität beibehält:


Ressourcen
Alle Bilder stammen vom Autor, sofern nicht anders angegeben.
