Ultralytics YOLO27 : Rejoins la liste d'attente.
Licence YOLO
Retour au glossaire Ultralytics

Memory Bank

Une banque de mémoire stocke les plongements de lots, d’images vidéo ou d’images de référence précédents, afin qu’un modèle puisse comparer les nouvelles entrées à bien plus d’exemples que ceux d’un seul lot.

Une banque mémoire est un espace de stockage contenant des vecteurs de caractéristiques, ou des plongements, calculés précédemment par un modèle et conservés pour comparer de nouvelles entrées à bien plus d’exemples que ne peut en contenir un lot ou un passage avant. Selon la méthode, les vecteurs stockés proviennent de lots d’entraînement précédents, d’images vidéo antérieures ou d’un ensemble de référence d’images normales. La banque est consultée par recherche de similarité ou par attention, et mise à jour à mesure que de nouveaux vecteurs arrivent. Les banques mémoire jouent un rôle central dans trois domaines de la vision par ordinateur : l’apprentissage contrastif, où elles fournissent des milliers d’exemples négatifs à chaque étape ; la segmentation vidéo et le suivi, où elles mémorisent l’apparence d’un objet dans les images précédentes ; et la détection d’anomalies, où elles stockent ce à quoi ressemblent les données normales.

Banques mémoire dans l’apprentissage contrastif#

L’apprentissage auto-supervisé contrastif entraîne un encodeur à rapprocher deux vues d’une même image et à éloigner les autres images ; en général, plus il y a d’exemples négatifs, meilleur est le signal d’entraînement. Comparer davantage d’images nécessite normalement une taille de lot supérieure, ce qui est limité par la mémoire du GPU. Zhirong Wu et ses collègues ont introduit la banque mémoire à cette fin dans Unsupervised Feature Learning via Non-Parametric Instance Discrimination, à CVPR 2018 : elle conservait une caractéristique de 128 dimensions pour chacune des 1,28 million d’images d’entraînement ImageNet, actualisait chaque entrée lorsque l’image correspondante était revue et en tirait des milliers d’exemples négatifs à chaque étape. Comme les entrées étaient produites par d’anciennes versions de l’encodeur, les caractéristiques stockées devenaient obsolètes et incohérentes avec le modèle actuel.

Momentum Contrast (MoCo), créé par Kaiming He et ses collègues de Facebook AI Research, a résolu ce problème avec une file d’attente et un second encodeur. La banque contient les clés des lots les plus récents, 65 536 par défaut ; chaque nouveau lot y est ajouté, et le plus ancien est supprimé. Les clés proviennent d’un encodeur à momentum dont les poids suivent lentement ceux de l’encodeur principal : ils sont mis à jour en prenant 0,999 fois leur ancienne valeur et 0,001 fois les poids de l’encodeur principal. Les clés enregistrées à différentes étapes restent ainsi cohérentes entre elles.

Banques mémoire dans la segmentation vidéo et le suivi#

En vidéo, une banque mémoire permet à un modèle de gérer les occultations et les changements d’apparence en consultant les images précédentes. Les réseaux STM (Space-Time Memory) stockaient les caractéristiques clés et valeurs des images précédentes, avec leurs masques, puis segmentaient chaque nouvelle image en s’appuyant sur elles. XMem a étendu cette méthode aux vidéos longues à l’aide de mémoires à court et à long terme distinctes. SAM 2 de Meta conserve dans une banque mémoire les images pour lesquelles l’utilisateur a fourni une invite, ainsi que les images les plus récentes ; son attention mémoire conditionne les caractéristiques de chaque nouvelle image à partir de celles-ci. C’est ainsi qu’un masque suit un objet qui quitte le champ et y revient. Dans le package Ultralytics, SAM 2 s’appuie par défaut sur les images avec invite et sur les 6 images les plus récentes, et SAM2DynamicInteractivePredictor ajoute l’état de l’objet d’une image avec invite à sa banque mémoire lorsqu’il est appelé avec update_memory=True, puis segmente les images ultérieures à partir de ce qu’il a stocké.

Les suiveurs multi-objets utilisent la même idée pour la réidentification : DeepSORT conserve une galerie des 100 derniers descripteurs d’apparence de chaque piste et associe les nouvelles détections à la piste dont les descripteurs stockés sont les plus proches.

Banques mémoire pour la détection d’anomalies#

PatchCore, présenté par Karsten Roth et ses collègues à CVPR 2022, construit une banque mémoire de caractéristiques de patch extraites par un CNN préentraîné sur ImageNet à partir d’images de produits sans défaut. Le score d’un patch de test correspond à sa distance par rapport à la caractéristique stockée la plus proche ; le score de l’image est celui du patch le plus anormal. Tout élément qui ne ressemble à aucun patch normal ressort donc du lot. Le sous-échantillonnage glouton par coreset ne conserve qu’une petite fraction des caractéristiques tout en couvrant leur répartition, et la méthode a atteint une AUROC au niveau de l’image allant jusqu’à 99,6 % sur le benchmark industriel de détection de défauts MVTec AD.

Cet exemple PyTorch applique la même méthode à des chiffres manuscrits de 8 × 8 pixels, en utilisant les pixels bruts comme caractéristiques : 100 images du chiffre 3 forment la banque mémoire, et tous les autres chiffres sont considérés comme des anomalies :

import torch
from sklearn.datasets import load_digits
from sklearn.metrics import roc_auc_score

X, y = load_digits(return_X_y=True)
X, y = torch.tensor(X / 16, dtype=torch.float32), torch.tensor(y)
normal = X[y == 3]  # images of the digit 3 play the role of defect-free parts
memory_bank = normal[:100]  # memory bank: stored features of 100 normal images
test = torch.cat([normal[100:], X[y != 3]])  # unseen 3s plus every other digit as anomalies
is_anomaly = torch.cat([torch.zeros(len(normal) - 100), torch.ones(len(X) - len(normal))])

# Greedy coreset: repeatedly keep the stored feature farthest from everything kept so far
coreset = [0]
distance = torch.cdist(memory_bank, memory_bank[:1])[:, 0]
for _ in range(9):
    coreset.append(int(distance.argmax()))
    distance = torch.minimum(distance, torch.cdist(memory_bank, memory_bank[coreset[-1:]])[:, 0])

for name, bank in [("Full memory bank, 100 entries", memory_bank), ("Coreset, 10 entries", memory_bank[coreset])]:
    scores = torch.cdist(test, bank).min(dim=1).values  # anomaly score: distance to the nearest stored feature
    print(f"{name}: AUROC {roc_auc_score(is_anomaly, scores):.3f}")

Sur les 1 697 images de test, la banque complète distingue les 83 chiffres 3 jamais vus des autres chiffres avec une aire sous la courbe ROC (AUC) de 0.984, et le coreset de 10 entrées obtient 0.982. Il conserve presque toute la qualité de détection avec dix fois moins de mémoire et de recherches.

  • Base de données vectorielle : Stocke les plongements de manière persistante et propose une recherche par similarité à de nombreuses applications. Une banque mémoire se trouve dans la boucle d’entraînement ou d’inférence d’un seul modèle, généralement dans la mémoire GPU, et est écrasée pendant l’exécution du modèle.
  • Fenêtre de contexte : Les jetons auxquels un transformeur prête attention lors d’un passage. Une banque mémoire contient des vecteurs en dehors de cette fenêtre, issus d’autres lots, images vidéo ou images.
  • Transformer-XL : Met en cache les états cachés du segment de texte précédent pour que le segment suivant puisse s’y référer. Cette banque mémoire d’activations étend la portée d’un modèle de langage au-delà d’une seule fenêtre.
  • Extraction des exemples négatifs difficiles : Sélectionne les exemples négatifs les plus déroutants pour l’entraînement. Une banque mémoire fournit un vaste ensemble d’exemples négatifs parmi lesquels effectuer cette sélection.
  • Mémoire épisodique : Dans les agents d’IA et l’apprentissage par renforcement, stockage d’expériences passées auxquelles le système fait appel pour guider ses décisions. Les banques mémoire stockent des vecteurs utilisés dans les calculs propres à un modèle, comme les exemples négatifs, les images précédentes ou les patchs normaux.

Découvre les solutions

La vision par ordinateur dans le sport

La vision par ordinateur dans le sport

Découvre comment Ultralytics YOLO propulse la vision par ordinateur dans le sport grâce au suivi des joueurs et du ballon, aux analyses de performance, aux conseils d’entraînement et à la rééducation des athlètes.
En savoir plus
Vision par ordinateur pour les images aériennes

Vision par ordinateur pour les images aériennes

Transforme les images de drones et les images aériennes en informations exploitables en temps réel pour l’agriculture, l’aquaculture, la conservation et l’analyse géospatiale avec Ultralytics YOLO.
En savoir plus
Vision par ordinateur dans l’aérospatiale

Vision par ordinateur dans l’aérospatiale

Applique la vision par ordinateur dans l’aérospatiale avec Ultralytics YOLO pour l’inspection des aéronefs, la détection des corps étrangers sur les pistes, les opérations au sol des aéroports et la détection des défauts des matériaux composites.
En savoir plus
La vision par ordinateur dans la sécurité

La vision par ordinateur dans la sécurité

Protège chaque site avec les modèles Ultralytics YOLO. L’IA visuelle permet la surveillance des périmètres, la détection des menaces, la reconnaissance des plaques d’immatriculation et la sécurité au travail.
En savoir plus
La vision par ordinateur en robotique

La vision par ordinateur en robotique

Donne plus de capacités à tes machines grâce aux modèles Ultralytics YOLO. Dans la robotique, l’IA visuelle permet la navigation autonome, la perception, le suivi des objets et le contrôle en temps réel.
En savoir plus
La vision par ordinateur dans la logistique

La vision par ordinateur dans la logistique

Optimise la logistique avec les modèles Ultralytics YOLO. La vision par IA permet d’inspecter les colis, de les trier, de suivre les véhicules et de surveiller la sécurité des entrepôts en temps réel.
En savoir plus
La vision par ordinateur dans le commerce de détail

La vision par ordinateur dans le commerce de détail

Réinvente le commerce de détail avec les modèles Ultralytics YOLO. La vision par IA permet de suivre les stocks, de surveiller les rayons, de gérer les files d’attente et de mieux comprendre les clients.
En savoir plus
La vision par ordinateur dans le secteur de la santé

La vision par ordinateur dans le secteur de la santé

Crée des solutions de santé avec les modèles Ultralytics YOLO. La vision par IA dans le secteur de la santé accélère l’imagerie médicale, améliore les diagnostics et facilite la surveillance des patients.
En savoir plus
La vision par ordinateur dans l’industrie manufacturière

La vision par ordinateur dans l’industrie manufacturière

Optimise la fabrication avec les modèles Ultralytics YOLO. La vision par IA améliore le contrôle qualité, la détection des défauts, le respect des règles concernant les EPI et l’automatisation des chaînes de montage.
En savoir plus
La vision par ordinateur dans l’automobile

La vision par ordinateur dans l’automobile

Mets la vision par ordinateur au service de l’automobile avec les modèles Ultralytics YOLO. La vision par IA renforce la sécurité routière, l’aide à la conduite et l’automatisation des véhicules pour des routes plus intelligentes.
En savoir plus
Vision par ordinateur dans l’agriculture

Vision par ordinateur dans l’agriculture

Fais entrer l’IA de vision dans l’agriculture intelligente avec les modèles Ultralytics YOLO. Optimise le suivi des cultures et du bétail ainsi que l’agriculture de précision pour obtenir des rendements plus élevés et plus intelligents.
En savoir plus

Construisons ensemble l’avenir de l’IA !

Commence ton parcours vers l’avenir de l’apprentissage automatique