Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

Banque de mémoire

Une banque de mémoire est une structure de données utilisée dans les algorithmes d'apprentissage automatique pour stocker et référencer les informations provenant d'itérations passées ou d'échantillons traités, découplant ainsi efficacement la capacité de mémoire du modèle de ses contraintes informatiques immédiates . Dans le contexte de l'apprentissage profond (DL), une banque de mémoire sert généralement de référentiel pour les intégrations ou les vecteurs de caractéristiques. Cela permet à un modèle de comparer l'entrée actuelle à un vaste historique d'entrées précédentes sans avoir à retraiter ou à conserver simultanément toutes ces données dans la mémoire vive (RAM) active. En conservant un tampon de représentations, les modèles peuvent apprendre à partir d'un contexte plus large, améliorant ainsi leurs performances dans les tâches qui nécessitent une cohérence à long terme ou une comparaison avec de grands ensembles de données.

Le fonctionnement d'une banque de mémoire

La fonction principale d'une banque de mémoire est d'étendre les informations disponibles au-delà de la taille du lot actuel. Pendant l'entraînement, lorsque les données circulent dans le réseau neuronal, les représentations des caractéristiques qui en résultent sont poussées dans la banque. Si la banque atteint sa capacité maximale , les caractéristiques les plus anciennes sont généralement supprimées pour faire de la place aux nouvelles, un processus connu sous le nom de file d'attente « premier entré, premier sorti » (FIFO).

Ce mécanisme est particulièrement important car GPU mémoire du GPU est finie. Sans banque de mémoire , comparer une seule image à un million d'autres images nécessiterait une taille de lot impossible à traiter sur du matériel standard . Avec une banque de mémoire, le modèle peut stocker des vecteurs légers de ces millions d'images et les référencer efficacement à l'aide de techniques de recherche par similarité, telles que le produit scalaire ou la similarité cosinus.

Applications concrètes

Les banques de mémoire sont devenues une pierre angulaire dans plusieurs flux de travail avancés de vision par ordinateur (CV) et de langage naturel :

  • Apprentissage contrastif (apprentissage auto-supervisé) : l'une des applications les plus connues est l' apprentissage contrastif, en particulier dans les algorithmes tels que Momentum Contrast (MoCo). Ici, l'objectif est d'apprendre au modèle à distinguer une image spécifique parmi de nombreux échantillons « négatifs » (images différentes). Une banque de mémoire stocke des milliers de représentations d'échantillons négatifs , ce qui permet au modèle d'apprendre des caractéristiques robustes sans avoir besoin de données d'entraînement étiquetées . Pour plus de détails techniques, les chercheurs se réfèrent souvent à l'article MoCo qui a popularisé cette approche.
  • Suivi d'objets à long terme : dans l'analyse vidéo, un objet (comme une voiture ou une personne) peut être temporairement masqué par un obstacle. Les trackers standard peuvent perdre l'identité (ID) de l'objet pendant cette occlusion. Les suiveurs avancés utilisent une banque de mémoire pour stocker les caractéristiques visuelles des objets détectés dans le passé. Lorsque l'objet réapparaît, le système interroge la banque pour rétablir l'ID correcte. Les utilisateurs qui exploitent Ultralytics pour le suivi d'objets bénéficient d'une logique interne similaire qui maintient la cohérence de l'identité entre les images.
  • Compréhension vidéo : pour reconnaître des actions qui s'étendent sur plusieurs secondes ou minutes, les modèles ont besoin d'un contexte temporel. Une banque de mémoire sert de tampon pour les images ou les clips passés, permettant au réseau de « se souvenir » de ce qui s'est passé au début d'une vidéo tout en traitant la fin. Ceci est crucial pour une reconnaissance précise des actions.

Distinguer les concepts apparentés

Il est utile de différencier la banque de mémoire des autres concepts de stockage et de traitement figurant dans le glossaire :

  • Banque de mémoire vs base de données vectorielle: Les deux stockent des intégrations pour la récupération. Cependant, une banque de mémoire est généralement une structure transitoire en mémoire utilisée de manière dynamique pendant l'entraînement ou l'inférence active d'une seule session de modèle. Une base de données vectorielle (comme celles utilisées dans RAG) est une solution de stockage persistante et évolutive destinée à durer indéfiniment et à servir plusieurs applications.
  • Banque de mémoire vs fenêtre contextuelle: une fenêtre contextuelle (courante dans les Transformers) définit la longueur maximale de la séquence d'entrée que le modèle traite à la fois (par exemple, 32 000 tokens). Une banque de mémoire est un tampon externe qui stocke des représentations compressées en dehors de la fenêtre de traitement active , permettant théoriquement une profondeur de mémoire infinie, comme on le voit dans des architectures telles que Transformer-XL.
  • Banque de mémoire vs taille de lot: la taille de lot détermine le nombre d'échantillons traités en parallèle pour les mises à jour du gradient. Une banque de mémoire augmente le nombre effectif d'échantillons que le modèle peut « voir » à des fins de comparaison sans augmenter le coût de calcul des passages avant et arrière.

Exemple de code : simulation d'une banque de fonctionnalités

Le texte suivant Python Cet extrait illustre le concept d'une banque de mémoire de type « premier entré, premier sorti » (FIFO) utilisant torch. Cette structure est souvent utilisée pour conserver un historique continu des vecteurs de caractéristiques lors de boucles d'apprentissage personnalisées ou de tâches d'inférence complexes.

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

Défis et considérations

Bien que puissantes, les banques de mémoire posent le problème de la « dérive de représentation ». Étant donné que le réseau de codeurs change légèrement à chaque étape d'entraînement, les caractéristiques stockées dans la banque depuis 100 étapes peuvent être « obsolètes » ou incompatibles avec l'état actuel du modèle. Des techniques telles que l'utilisation d'un codeur à momentum (une moyenne du modèle mise à jour lentement) permettent d'atténuer ce problème.

Pour les équipes qui cherchent à gérer les versions des ensembles de données et les artefacts de modèles utilisant ces techniques avancées, Ultralytics fournit un hub centralisé pour organiser les données, track les expériences et déployer efficacement les modèles. La gestion de la complexité du stockage et de la récupération des fonctionnalités est essentielle pour passer de l'intelligence artificielle (IA) expérimentale à des systèmes de production robustes .

Rejoindre la communauté Ultralytics

Rejoignez le futur de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

Rejoindre maintenant