Yolo Vision Shenzhen
Shenzhen
Iscriviti ora
Glossario

Banca dati

Una banca dati è una struttura di dati utilizzata negli algoritmi di apprendimento automatico per memorizzare e fare riferimento alle informazioni provenienti da iterazioni passate o campioni elaborati, separando efficacemente la capacità di memoria del modello dai suoi vincoli computazionali immediati . Nel contesto dell'apprendimento profondo (DL), una banca dati funge tipicamente da archivio per incorporamenti o vettori di caratteristiche. Ciò consente a un modello di confrontare l'input corrente con una vasta cronologia di input precedenti senza dover rielaborare o conservare contemporaneamente tutti quei dati nella memoria ad accesso casuale (RAM) attiva. Mantenendo un buffer di rappresentazioni, i modelli possono apprendere da un contesto più ampio, migliorando le prestazioni in attività che richiedono coerenza a lungo termine o confronti con grandi set di dati.

Il funzionamento di una banca dati della memoria

La funzione primaria di una banca dati è quella di estendere le informazioni disponibili oltre la dimensione attuale del batch. Durante l'addestramento, mentre i dati fluiscono attraverso la rete neurale, le rappresentazioni delle caratteristiche risultanti vengono inserite nella banca dati. Se la banca dati raggiunge la sua capacità massima , le caratteristiche più vecchie vengono solitamente rimosse per fare spazio a quelle nuove, un processo noto come coda First-In, First-Out (FIFO).

Questo meccanismo è particolarmente importante perché GPU è limitata. Senza un banco di memoria, il confronto di una singola immagine con un milione di altre immagini richiederebbe una dimensione di batch impossibile da adattare all'hardware standard . Con un banco di memoria, il modello può memorizzare vettori leggeri di quel milione di immagini e fare riferimento ad essi in modo efficiente utilizzando tecniche di ricerca di similarità, come il prodotto scalare o la similarità coseno.

Applicazioni nel mondo reale

Le banche dati di memoria sono diventate una pietra miliare in diversi flussi di lavoro avanzati di visione artificiale (CV) e linguaggio naturale :

  • Apprendimento contrastivo (apprendimento auto-supervisionato): una delle applicazioni più famose è nell' apprendimento contrastivo, in particolare in algoritmi come Momentum Contrast (MoCo). In questo caso, l'obiettivo è insegnare al modello a distinguere un'immagine specifica da molti campioni "negativi" (immagini diverse). Una banca dati memorizza migliaia di rappresentazioni di campioni negativi , consentendo al modello di apprendere caratteristiche robuste senza richiedere dati di addestramento etichettati . Per dettagli tecnici approfonditi, i ricercatori fanno spesso riferimento al documento MoCo che ha reso popolare questo approccio.
  • Tracciamento di oggetti a lungo termine: nell'analisi video, un oggetto (come un'auto o una persona) può essere temporaneamente oscurato da un ostacolo. I tracker standard potrebbero perdere l'identità (ID) dell'oggetto durante questa occlusione. I tracciatori avanzati utilizzano una banca dati per memorizzare le caratteristiche visive degli oggetti rilevati in passato. Quando l'oggetto riappare, il sistema interroga la banca dati per ristabilire l'ID corretto. Gli utenti che utilizzano Ultralytics per il tracciamento degli oggetti beneficiano di una logica interna simile che mantiene la coerenza dell'identità tra i fotogrammi.
  • Comprensione dei video: per riconoscere azioni che durano diversi secondi o minuti, i modelli necessitano di un contesto temporale. Una banca dati funge da buffer per i fotogrammi o i clip precedenti, consentendo alla rete di "ricordare" cosa è successo all'inizio di un video mentre ne elabora la fine. Ciò è fondamentale per un accurato riconoscimento delle azioni.

Distinguere i concetti correlati

È utile distinguere la banca di memoria dagli altri concetti relativi all'archiviazione e all'elaborazione presenti nel glossario:

  • Memory Bank vs. Database vettoriale: Entrambi memorizzano gli embedding per il recupero. Tuttavia, una memory bank è in genere una struttura transitoria in memoria utilizzata dinamicamente durante l'addestramento o l'inferenza attiva di una singola sessione di modello. Un database vettoriale (come quelli utilizzati in RAG) è una soluzione di archiviazione persistente e scalabile destinata a durare indefinitamente e a servire più applicazioni.
  • Memory Bank vs. Context Window: Una finestra di contesto (comune nei Transformers) definisce la lunghezza massima della sequenza di input che il modello elabora contemporaneamente (ad esempio, 32k token). Una memory bank è un buffer esterno che memorizza rappresentazioni compresse al di fuori della finestra di elaborazione attiva , consentendo teoricamente una profondità di memoria infinita, come si vede in architetture come Transformer-XL.
  • Banca di memoria vs. dimensione del batch: la dimensione del batch determina il numero di campioni elaborati in parallelo per gli aggiornamenti del gradiente. Una banca di memoria aumenta il numero effettivo di campioni che il modello può "vedere" a fini di confronto senza aumentare il costo computazionale dei passaggi in avanti e all'indietro.

Esempio di codice: simulazione di una banca di funzioni

Il seguente Python Questo frammento di codice illustra il concetto di banco di memoria First-In, First-Out (FIFO) utilizzando torch. Questa struttura viene spesso utilizzata per mantenere una cronologia continua dei vettori di caratteristiche durante cicli di addestramento personalizzati o attività di inferenza complesse.

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

Sfide e considerazioni

Sebbene potenti, i banchi di memoria introducono la sfida della "deriva di rappresentazione". Poiché la rete dell'encoder cambia leggermente ad ogni fase di addestramento, le caratteristiche memorizzate nel banco da 100 fasi prima potrebbero essere "obsolete" o incoerenti con lo stato attuale del modello. Tecniche come l'uso di un encoder momentum (una media del modello che si aggiorna lentamente ) aiutano a mitigare questo problema.

Per i team che desiderano gestire le versioni dei set di dati e gli artefatti dei modelli che utilizzano queste tecniche avanzate, Ultralytics fornisce un hub centralizzato per organizzare i dati, track gli esperimenti e implementare i modelli in modo efficiente. La gestione della complessità dell'archiviazione e del recupero delle caratteristiche è essenziale per passare dall'intelligenza artificiale (AI) sperimentale a sistemi di produzione robusti .

Unitevi alla comunità di Ultralytics

Entra nel futuro dell'AI. Connettiti, collabora e cresci con innovatori globali

Iscriviti ora