Object Re-identification (Re-ID)
A reidentificação de objetos (Re-ID) reconhece a mesma pessoa ou veículo novamente em diferentes câmeras, intervalos de tempo e oclusões, comparando embeddings de aparência.
A reidentificação de objetos (Re-ID) é uma tarefa de visão computacional que reconhece o mesmo objeto quando ele reaparece em outra câmera, mais tarde ou depois de ficar oculto. Enquanto a detecção de objetos informa que uma imagem contém uma pessoa, a Re-ID decide se essa pessoa é a mesma que passou pela câmera da entrada dez minutos antes. Isso é feito comparando a aparência, como as cores das roupas, o formato do corpo, as bolsas carregadas ou a cor e os detalhes do teto de um veículo, o que torna a Re-ID a principal ferramenta para associar avistamentos em redes de câmeras cujas imagens não se sobrepõem. A Re-ID de pessoas e a Re-ID de veículos são as formas mais estudadas.
Como funciona a reidentificação#
Um sistema de Re-ID transforma cada objeto detectado em um descritor compacto de aparência e compara esses descritores:
- Detectar e recortar: Um detector encontra cada pessoa ou veículo, e a imagem dentro da caixa delimitadora é recortada e redimensionada.
- Codificar em um embedding: Uma rede neural convolucional ou um transformer de visão mapeia o recorte para um vetor de algumas centenas a alguns milhares de números que resume a aparência do objeto.
- Comparar pela similaridade do cosseno: O embedding de consulta é comparado a uma galeria de embeddings armazenados, e a galeria é ordenada do mais ao menos semelhante; alguns sistemas usam a distância euclidiana.
Um limiar aplicado à melhor pontuação determina se a consulta corresponde a uma identidade conhecida ou a uma nova:
Os codificadores são treinados com aprendizado métrico para que embeddings da mesma identidade se agrupem e embeddings de identidades diferentes se afastem. Uma receita comum combina uma função de perda de classificação de identidade com uma função de perda tripla, que aproxima uma imagem âncora de outra imagem da mesma identidade e a afasta de uma imagem de identidade diferente, usando mineração de negativos difíceis para se concentrar em imagens parecidas. O principal desafio é a invariância: a mesma pessoa precisa ser mapeada para embeddings próximos em diferentes pontos de vista, condições de iluminação, resoluções e oclusões parciais.
Re-ID em comparação com rastreamento e reconhecimento facial#
A Re-ID costuma ser confundida com duas tarefas relacionadas:
- Rastreamento de objetos: Acompanha objetos em um vídeo prevendo seu movimento, geralmente com um filtro de Kalman, e associa caixas pela sobreposição entre quadros. Depende da continuidade temporal, que se interrompe quando um objeto fica oculto por muito tempo ou sai do campo de visão; a Re-ID restaura a identidade justamente nessas lacunas.
- Reconhecimento facial: Identifica uma pessoa por características faciais que permanecem estáveis durante anos e exige um rosto visível. A Re-ID de pessoas funciona com a pessoa de costas e em baixa resolução; como depende principalmente das roupas, em geral só é válida por algumas horas ou um dia.
Re-ID em rastreadores de múltiplos objetos#
Desde o DeepSORT, em 2017, muitos rastreadores de rastreamento de múltiplos objetos (MOT) combinaram embeddings de Re-ID com sinais de movimento, permitindo que duas pessoas que se cruzam mantenham seus próprios IDs e que uma pessoa que desaparece atrás de um pilar recupere o ID anterior. No modo track do Ultralytics YOLO, os rastreadores BoT-SORT, Deep OC-SORT e TrackTrack aceitam with_reid: True e podem carregar codificadores de Re-ID do YOLO26, de yolo26n-reid.onnx a yolo26x-reid.onnx, que são baixados na primeira utilização:
from ultralytics import YOLO
from ultralytics.utils import YAML
from ultralytics.utils.checks import check_yaml
# Copy the default TrackTrack settings and enable Re-ID with a YOLO26 appearance encoder
cfg = YAML.load(check_yaml("tracktrack.yaml"))
cfg.update(with_reid=True, model="yolo26n-reid.onnx")
YAML.save("tracktrack_reid.yaml", cfg)
# Track people (class 0); appearance embeddings help restore IDs after occlusions
model = YOLO("yolo26n.pt")
source = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
identities = set()
for result in model.track(source, tracker="tracktrack_reid.yaml", classes=[0], stream=True):
if result.boxes.is_track:
identities.update(result.boxes.id.int().tolist())
print(f"Person identities assigned: {len(identities)}")Cada ID que o rastreador recupera após uma oclusão mantém a contagem impressa mais próxima do número real de pessoas no vídeo.
Aplicações no mundo real#
- Análise de varejo: Associar os avistamentos de um cliente entre câmeras dos corredores gera trajetos anônimos pela loja, tempos de permanência e funis de conversão.
- Gestão de tráfego: A Re-ID de veículos associa avistamentos do mesmo carro em diferentes cruzamentos para medir tempos de viagem e fluxos origem-destino, inclusive quando as placas estão ilegíveis.
- Esportes: A Re-ID de jogadores mantém as identidades consistentes quando os jogadores saem do quadro da transmissão ou se agrupam em uma disputa.
- Pesquisa sobre vida selvagem: A Re-ID de animais identifica zebras, baleias ou grandes felinos individualmente por padrões da pelagem e marcas nas nadadeiras em imagens de armadilhas fotográficas e drones.
Benchmarks e métricas#
A Re-ID é avaliada como um problema de recuperação. A precisão de Rank-1 é a proporção de consultas cuja imagem mais bem classificada na galeria mostra a identidade correta, e a precisão média (mAP) avalia a classificação de todas as correspondências corretas em toda a galeria. O Market-1501, benchmark clássico de Re-ID de pessoas, contém 32.668 caixas delimitadoras de 1.501 pessoas capturadas por seis câmeras em um campus universitário.










