Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Hard Negative Mining

A mineração de exemplos negativos difíceis encontra os negativos que o modelo mais confunde com os positivos e concentra o treino neles, reduzindo os falsos positivos na deteção e na pesquisa.

A mineração de exemplos negativos difíceis é uma estratégia de treino que identifica os exemplos negativos em que o modelo mais erra e concentra neles a aprendizagem. Um exemplo negativo não pertence à classe-alvo, e um exemplo negativo difícil é aquele que o modelo ainda classifica como positivo: uma região de fundo que um detetor delimita como objeto ou uma imagem não relacionada que um modelo de embeddings coloca junto à consulta. A maioria dos exemplos negativos é fácil e, depois de o modelo saber lidar com eles, quase não contribui para o sinal de aprendizagem; por isso, selecionar os mais difíceis aperfeiçoa as fronteiras de decisão e reduz os falsos positivos.

Como funciona a mineração de negativos difíceis#

O que é considerado difícil depende da tarefa:

A mineração pode ser offline ou online. A mineração offline executa um modelo treinado num grande conjunto de dados composto apenas por exemplos negativos, recolhe os falsos positivos, adiciona-os ao conjunto de treino e volta a treinar o modelo. Os detetores clássicos de peões por janela deslizante eram treinados desta forma: percorriam imagens sem pessoas à procura de falsos alarmes e voltavam a treinar com eles. A mineração online seleciona exemplos difíceis dentro de cada lote de treino. O SSD classifica as caixas predefinidas negativas pela função de perda de classificação e mantém apenas as de maior perda, até um máximo de 3 exemplos negativos por positivo; a mineração online de exemplos difíceis (OHEM) aplica a mesma ideia às propostas de regiões dos detetores de duas etapas. A seleção do SSD requer apenas algumas linhas:

import torch
import torch.nn.functional as F

torch.manual_seed(0)

# Simulated objectness logits for 8,400 candidate boxes: 20 cover an object, the rest are background
logits = torch.randn(8400) - 3
labels = torch.zeros(8400)
labels[:20] = 1
loss = F.binary_cross_entropy_with_logits(logits, labels, reduction="none")

# Keep every positive plus only the highest-loss negatives, at most 3 per positive
positives = labels == 1
negative_loss = loss.masked_fill(positives, 0)
hard_negatives = negative_loss.topk(3 * int(positives.sum())).indices
kept = torch.cat([positives.nonzero().squeeze(1), hard_negatives])

print(f"boxes in the loss: {len(kept)} of {len(loss)}")
print(f"mean negative loss: all {loss[~positives].mean():.3f}, mined {loss[hard_negatives].mean():.3f}")

A função de perda mantém 80 das 8.400 caixas: os 20 exemplos positivos e os 60 exemplos negativos que o modelo mais confunde com objetos. A perda média desses 60 exemplos negativos selecionados é 0,648, em comparação com 0,075 para os 8.380 exemplos negativos, pelo que o gradiente se concentra no fundo que o modelo efetivamente confunde.

  • Amostragem negativa: Seleciona um subconjunto gerível de todos os exemplos negativos, muitas vezes aleatoriamente. A mineração de exemplos negativos difíceis seleciona os que causam mais confusão.
  • Focal loss: Mantém todos os exemplos na função de perda, mas reduz o peso dos exemplos classificados corretamente, o que permitiu que detetores de uma etapa como o RetinaNet fossem treinados com todas as caixas candidatas sem amostragem explícita.
  • Aprendizagem ativa: Seleciona exemplos incertos não rotulados para anotação humana, incluindo possíveis exemplos positivos. A mineração de exemplos negativos difíceis incide em exemplos já confirmados como negativos.
  • Reequilíbrio de classes: Corrige frequências de classes desiguais através de subamostragem e aumento de peso. Uma classe negativa frequente não é necessariamente difícil.
  • Aumento de dados: Cria variações de amostras existentes, mas não consegue introduzir um objeto confuso que nunca tenha existido no conjunto de dados.

Aplicações no mundo real#

  • Deteção de segurança em armazéns: Um detetor de empilhadores que assinala repetidamente porta-paletes, reflexos nas estantes e plataformas elevatórias de tesoura desgasta a confiança dos operadores com falsos alertas. Recolher essas cenas como imagens negativas e voltar a treinar ensina ao detetor as características que distinguem um empilhador de equipamentos semelhantes.
  • Pesquisa visual de produtos: Se uma pesquisa por um modelo específico de sapatilhas de corrida pretas classificar demasiado alto modelos semelhantes de outras linhas de produtos, esses produtos tornam-se exemplos negativos difíceis. Treinar com eles, por exemplo como exemplos negativos nos tripletos âncora-positivo-negativo de uma rede siamesa, ensina o modelo de embeddings a preservar diferenças subtis, como o formato da sola, a posição do logótipo e o material.

Fluxo de trabalho de mineração offline#

Cada ciclo de mineração offline executa o modelo atual, confirma o que este assinalou e volta a integrar os casos confirmados no treino:

A etapa de revisão é importante porque um "falso positivo" é muitas vezes um objeto real que os anotadores não identificaram, e adicioná-lo como exemplo negativo ensinaria ao modelo a suprimir deteções verdadeiras. O Ultralytics YOLO trata uma imagem de treino com um ficheiro de rótulos em falta ou vazio como uma imagem de fundo, pelo que cada ponto âncora dessa imagem recebe uma pontuação-alvo igual a zero e qualquer previsão fiável nessa posição é penalizada; assim, basta copiar as imagens sem rótulos para adicionar exemplos negativos selecionados a um conjunto de dados YOLO26. O progresso manifesta-se numa precisão superior com o mesmo recall, acompanhado no conjunto de teste completo e numa partição dedicada a exemplos negativos difíceis.

Treinar apenas com os exemplos negativos mais difíceis pode ser contraproducente. No treino de embeddings faciais do FaceNet, selecionar os exemplos negativos mais difíceis logo no início podia fazer com que o modelo colapsasse e mapeasse todas as faces para o mesmo ponto; por isso, os autores treinaram com exemplos negativos semi-difíceis, que ficam mais longe da âncora do que o positivo, mas ainda dentro da margem do triplete.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina