Yolo Vision Shenzhen
Shenzhen
Junte-se agora
Glossário

Banco de Memória

Um banco de memória é uma estrutura de dados utilizada em algoritmos de aprendizagem automática para armazenar e referenciar informações de iterações anteriores ou amostras processadas, desacoplando efetivamente a capacidade de memória do modelo das suas restrições computacionais imediatas . No contexto da aprendizagem profunda (DL), um banco de memória serve normalmente como um repositório para incorporações ou vetores de características. Isso permite que um modelo compare a entrada atual com um vasto histórico de entradas anteriores sem a necessidade de reprocessar ou manter todos esses dados na memória de acesso aleatório (RAM) ativa simultaneamente. Ao manter um buffer de representações, os modelos podem aprender a partir de um contexto mais amplo, melhorando o desempenho em tarefas que exigem consistência de longo prazo ou comparação com grandes conjuntos de dados.

A mecânica de um banco de memórias

A principal função de um banco de memória é ampliar as informações disponíveis para além do tamanho atual do lote . Durante o treinamento, à medida que os dados fluem pela rede neural , as representações de características resultantes são enviadas para o banco. Se o banco atingir a sua capacidade máxima , as características mais antigas são geralmente removidas para dar lugar às novas, um processo conhecido como fila First-In, First-Out (FIFO).

Este mecanismo é particularmente vital porque GPU é finita. Sem um banco de memória, comparar uma única imagem com um milhão de outras imagens exigiria um tamanho de lote impossível de caber em um hardware padrão . Com um banco de memória, o modelo pode armazenar vetores leves desses milhões de imagens e referenciá-los de forma eficiente usando técnicas de pesquisa de similaridade, como produto escalar ou similaridade cosseno.

Aplicações no Mundo Real

Os bancos de memória tornaram-se uma pedra angular em vários fluxos de trabalho avançados de visão computacional (CV) e linguagem natural :

  • Aprendizagem contrastiva (aprendizagem auto-supervisionada): Uma das aplicações mais famosas é na aprendizagem contrastiva, especificamente em algoritmos como o Momentum Contrast (MoCo). Aqui, o objetivo é ensinar o modelo a distinguir uma imagem específica de muitas amostras "negativas" (imagens diferentes). Um banco de memória armazena milhares de representações de amostras negativas , permitindo que o modelo aprenda características robustas sem a necessidade de dados de treino rotulados. Para detalhes técnicos aprofundados, os investigadores costumam consultar o artigo sobre MoCo que popularizou essa abordagem.
  • Rastreamento de objetos a longo prazo: Na análise de vídeo, um objeto (como um carro ou uma pessoa) pode ficar temporariamente obscurecido por um obstáculo. Os rastreadores padrão podem perder a identidade (ID) do objeto durante essa oclusão. Os rastreadores avançados usam um banco de memória para armazenar as características visuais dos objetos detectados no passado. Quando o objeto reaparece, o sistema consulta o banco para restabelecer a ID correta. Os utilizadores que utilizam o Ultralytics para rastreamento de objetos se beneficiam de uma lógica interna semelhante que mantém a consistência da identidade entre os quadros.
  • Compreensão de vídeo: para reconhecer ações que duram vários segundos ou minutos, os modelos precisam de contexto temporal. Um banco de memória atua como um buffer para quadros ou clipes anteriores, permitindo que a rede «lembre-se» do que aconteceu no início de um vídeo enquanto processa o final. Isso é crucial para o reconhecimento preciso de ações.

Distinguir conceitos relacionados

É útil diferenciar o banco de memória de outros conceitos de armazenamento e processamento encontrados no glossário:

  • Banco de memória vs. Base de dados vetorial: Ambos armazenam incorporações para recuperação. No entanto, um banco de memória é normalmente uma estrutura transitória na memória, utilizada dinamicamente durante o treino ou inferência ativa de uma única sessão do modelo. Uma base de dados vetorial (como as utilizadas no RAG) é uma solução de armazenamento persistente e escalável, destinada a durar indefinidamente e servir múltiplas aplicações.
  • Banco de memória vs. janela de contexto: uma janela de contexto (comum em Transformers) define o comprimento máximo da sequência de entrada que o modelo processa de uma só vez (por exemplo, 32k tokens). Um banco de memória é um buffer externo que armazena representações comprimidas fora da janela de processamento ativa, permitindo, teoricamente, uma profundidade de memória infinita, como visto em arquiteturas como Transformer-XL.
  • Banco de memória vs. tamanho do lote: O tamanho do lote determina quantas amostras são processadas em paralelo para atualizações de gradiente. Um banco de memória aumenta o número efetivo de amostras que o modelo pode "ver" para fins de comparação, sem aumentar o custo computacional das passagens para a frente e para trás.

Exemplo de código: Simulando um banco de recursos

O seguinte Python O trecho demonstra o conceito de um banco de memória First-In, First-Out (FIFO) usando torch. Essa estrutura é frequentemente usada para manter um histórico contínuo de vetores de características durante loops de treino personalizados ou tarefas de inferência complexas.

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

Desafios e Considerações

Embora poderosos, os bancos de memória apresentam o desafio da «deriva de representação». Como a rede do codificador muda ligeiramente a cada etapa de treino, os recursos armazenados no banco há 100 etapas podem estar «obsoletos» ou inconsistentes com o estado atual do modelo. Técnicas como o uso de um codificador de momentum (uma média do modelo atualizada lentamente) ajudam a mitigar esse problema.

track equipas que procuram gerir versões de conjuntos de dados e artefactos de modelos que utilizam essas técnicas avançadas, a Ultralytics fornece um hub centralizado para organizar dados, acompanhar experiências e implementar modelos de forma eficiente. Gerir a complexidade do armazenamento e recuperação de recursos é essencial para passar da inteligência artificial (IA) experimental para sistemas de produção robustos .

Junte-se à comunidade Ultralytics

Junte-se ao futuro da IA. Conecte-se, colabore e cresça com inovadores globais

Junte-se agora