Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten
Glossar

Speicherbank

Eine Speicherbank ist eine Datenstruktur, die in Algorithmen des maschinellen Lernens verwendet wird, um Informationen aus früheren Iterationen oder verarbeiteten Stichproben zu speichern und darauf zu verweisen, wodurch die Speicherkapazität des Modells effektiv von seinen unmittelbaren Rechenbeschränkungen entkoppelt wird . Im Zusammenhang mit Deep Learning (DL) dient eine Speicherbank in der Regel als Speicherort für Einbettungen oder Merkmalsvektoren. Dadurch kann ein Modell die aktuelle Eingabe mit einer umfangreichen Historie früherer Eingaben vergleichen, ohne alle diese Daten erneut verarbeiten oder gleichzeitig im aktiven Arbeitsspeicher (RAM) halten zu müssen. Durch die Pflege eines Puffers mit Darstellungen können Modelle aus einem breiteren Kontext lernen und so die Leistung bei Aufgaben verbessern, die langfristige Konsistenz oder den Vergleich mit großen Datensätzen erfordern.

Die Funktionsweise einer Speicherbank

Die Hauptfunktion einer Speicherbank besteht darin, die verfügbaren Informationen über die aktuelle Batchgröße hinaus zu erweitern. Während des Trainings werden die Daten durch das neuronale Netzwerk geleitet und die daraus resultierenden Merkmalsdarstellungen in die Bank verschoben. Wenn die Bank ihre maximale Kapazität erreicht, werden in der Regel die ältesten Merkmale entfernt, um Platz für neue zu schaffen. Dieser Vorgang wird als First-In-First-Out-Verfahren (FIFO) bezeichnet.

Dieser Mechanismus ist besonders wichtig, weil GPU Speicher begrenzt ist. Ohne eine Speicherbank würde der Vergleich eines einzelnen Bildes mit einer Million anderer Bilder eine Batchgröße erfordern, die auf Standard-Hardware nicht möglich ist . Mit einer Speicherbank kann das Modell leichtgewichtige Vektoren dieser Millionen von Bildern speichern und sie mithilfe von Ähnlichkeitssuchtechniken, wie dem Skalarprodukt oder der Kosinusähnlichkeit,

Anwendungsfälle in der Praxis

Speicherbanken sind zu einem Eckpfeiler in mehreren fortschrittlichen Computer Vision (CV) - und natürlichen Sprach- Workflows geworden:

  • Kontrastives Lernen (selbstüberwachtes Lernen): Eine der bekanntesten Anwendungen ist das kontrastive Lernen, insbesondere in Algorithmen wie Momentum Contrast (MoCo). Hier besteht das Ziel darin, dem Modell beizubringen, ein bestimmtes Bild von vielen „negativen” Beispielen (anderen Bildern) zu unterscheiden. Eine Speicherbank speichert Tausende von negativen Beispieldarstellungen , sodass das Modell robuste Merkmale lernen kann, ohne dass gekennzeichnete Trainingsdaten erforderlich sind. Für detaillierte technische Informationen verweisen Forscher häufig auf die MoCo-Veröffentlichung, die diesen Ansatz populär gemacht hat .
  • Langfristige Objektverfolgung: Bei der Videoanalyse kann ein Objekt (z. B. ein Auto oder eine Person) vorübergehend durch ein Hindernis verdeckt werden. Standard-Tracker können während dieser Verdeckung die Identität (ID) des Objekts verlieren. Fortschrittliche Tracker verwenden einen Speicher, um die visuellen Merkmale von zuvor erkannten Objekten zu speichern. Wenn das Objekt wieder erscheint, fragt das System den Speicher ab, um die korrekte ID wiederherzustellen. Benutzer, die Ultralytics für die Objektverfolgung einsetzen, profitieren von einer ähnlichen internen Logik, die die Identität über mehrere Frames hinweg konsistent hält.
  • Verständnis von Videos: Um Handlungen zu erkennen, die sich über mehrere Sekunden oder Minuten erstrecken, benötigen Modelle einen zeitlichen Kontext. Eine Speicherbank fungiert als Puffer für vergangene Frames oder Clips und ermöglicht es dem Netzwerk, sich „zu erinnern“, was zu Beginn eines Videos passiert ist, während es das Ende verarbeitet. Dies ist entscheidend für eine genaue Handlungserkennung.

Unterscheidung von verwandten Konzepten

Es ist hilfreich, die Speicherbank von anderen Speicher- und Verarbeitungskonzepten im Glossar zu unterscheiden:

  • Speicherbank vs. Vektordatenbank: Beide speichern Einbettungen zum Abruf. Eine Speicherbank ist jedoch in der Regel eine vorübergehende In-Memory-Struktur, die dynamisch während des Trainings oder der aktiven Inferenz einer einzelnen Modell-Sitzung verwendet wird. Eine Vektordatenbank (wie sie in RAG verwendet wird) ist eine persistente, skalierbare Speicherlösung, die unbegrenzt haltbar ist und mehreren Anwendungen dienen soll.
  • Speicherbank vs. Kontextfenster: Ein Kontextfenster (üblich bei Transformern) definiert die maximale Länge der Eingabesequenz, die das Modell auf einmal verarbeitet (z. B. 32k Token). Eine Speicherbank ist ein externer Puffer, der komprimierte Darstellungen außerhalb des aktiven Verarbeitungsfensters speichert und theoretisch eine unendliche Speichertiefe ermöglicht, wie dies bei Architekturen wie Transformer-XL der Fall ist.
  • Speicherbank vs. Batchgröße: Die Batchgröße legt fest, wie viele Samples für Gradientenaktualisierungen parallel verarbeitet werden. Eine Speicherbank erhöht die effektive Anzahl der Samples, die das Modell zu Vergleichszwecken „sehen” kann, ohne den Rechenaufwand für die Vorwärts- und Rückwärtsdurchläufe zu erhöhen.

Code-Beispiel: Simulation einer Feature-Bank

Die folgenden Python Der Ausschnitt veranschaulicht das Konzept einer First-In, First-Out (FIFO)-Speicherbank unter Verwendung von torchDiese Struktur wird häufig verwendet, um eine fortlaufende Historie von Merkmalsvektoren während benutzerdefinierter Trainingsschleifen oder komplexer Inferenzaufgaben zu pflegen.

import torch

# Initialize a memory bank (Capacity: 100 features, Vector Dim: 128)
# In a real scenario, these would be embeddings from a model like YOLO26
memory_bank = torch.randn(100, 128)

# Simulate receiving a new batch of features (e.g., from the current image batch)
new_features = torch.randn(10, 128)

# Update the bank: Enqueue new features, Dequeue the oldest ones
# This maintains a fixed size while keeping the memory 'fresh'
memory_bank = torch.cat([memory_bank[10:], new_features], dim=0)

print(f"Updated Memory Bank Shape: {memory_bank.shape}")
# Output: Updated Memory Bank Shape: torch.Size([100, 128])

Herausforderungen und Überlegungen

Speicherbanken sind zwar leistungsstark, bringen jedoch die Herausforderung der „Darstellungsdrift“ mit sich. Da sich das Encoder-Netzwerk mit jedem Trainingsschritt leicht verändert, können die vor 100 Schritten in der Bank gespeicherten Merkmale „veraltet“ oder mit dem aktuellen Modellstatus inkonsistent sein. Techniken wie die Verwendung eines Momentum-Encoders (ein sich langsam aktualisierender Durchschnitt des Modells) helfen, dieses Problem zu mildern.

Für Teams, die Datensatzversionen und Modellartefakte verwalten möchten, die diese fortschrittlichen Techniken nutzen, bietet Ultralytics eine zentrale Anlaufstelle, um Daten zu organisieren, Experimente track und Modelle effizient bereitzustellen. Die Verwaltung der Komplexität der Speicherung und Abfrage von Merkmalen ist unerlässlich für den Übergang von experimenteller künstlicher Intelligenz (KI) zu robusten Produktionssystemen.

Werden Sie Mitglied der Ultralytics

Gestalten Sie die Zukunft der KI mit. Vernetzen Sie sich, arbeiten Sie zusammen und wachsen Sie mit globalen Innovatoren

Jetzt beitreten