Hard Negative Mining
L'hard negative mining individua gli esempi negativi che il modello confonde maggiormente con quelli positivi e concentra su di essi l'addestramento, riducendo i falsi positivi nel rilevamento e nella ricerca.
Il mining degli hard negative è una strategia di addestramento che individua gli esempi negativi su cui un modello sbaglia di più e concentra l'apprendimento su di essi. Un esempio negativo non appartiene alla classe obiettivo, mentre un hard negative è un esempio che il modello continua a valutare come positivo: una porzione di sfondo che un rilevatore riquadra come oggetto o un'immagine non pertinente che un modello di embedding colloca vicino alla query. La maggior parte degli esempi negativi è facile e, una volta che il modello li gestisce correttamente, contribuisce pochissimo al segnale di apprendimento; selezionare quelli difficili rende quindi più netti i confini decisionali e riduce i falsi positivi.
Come funziona il mining degli hard negative#
Ciò che si considera difficile dipende dall'attività:
- Nel rilevamento degli oggetti, una regione di sfondo è difficile quando il rilevatore le assegna un punteggio da oggetto.
- Nella classificazione, un hard negative è un esempio della classe sbagliata a cui viene assegnata un'elevata confidenza per la classe obiettivo.
- Nel recupero e nei sistemi di raccomandazione, è un elemento non pertinente classificato vicino alla query; inoltre, gli esempi negativi con punteggi elevati hanno la maggiore influenza sul gradiente.
- Nell'apprendimento metrico, è un esempio negativo più vicino all'ancora dell'esempio positivo corrispondente, penalizzato da una perdita a margine per triplette.
Il mining può essere offline o online. Il mining offline esegue un modello addestrato su un ampio insieme di dati contenenti solo esempi negativi, raccoglie i falsi positivi, li aggiunge al set di addestramento e ripete l'addestramento. I classici rilevatori di pedoni a finestra scorrevole venivano addestrati così: scandivano immagini senza persone alla ricerca di falsi allarmi e ripetevano l'addestramento usando tali immagini. Il mining online seleziona gli esempi difficili all'interno di ogni batch di addestramento. SSD ordina le box negative predefinite in base alla perdita di classificazione e conserva solo quelle con perdita più alta, fino a 3 esempi negativi per ogni positivo; il mining online degli esempi difficili (OHEM) applica la stessa idea alle proposte di regioni dei rilevatori a due stadi. La selezione SSD richiede poche righe:
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}")La perdita conserva 80 delle 8.400 box: i 20 esempi positivi e i 60 esempi negativi che il modello valuta più simili a oggetti. La perdita media di questi 60 esempi negativi selezionati è 0,648, contro 0,075 per tutti i 8.380 esempi negativi; il gradiente si concentra così sullo sfondo che il modello confonde davvero.
Mining degli hard negative e tecniche correlate#
- Campionamento negativo: seleziona un sottoinsieme gestibile di tutti gli esempi negativi, spesso a caso. Il mining degli hard negative seleziona quelli più difficili da distinguere.
- Focal loss: mantiene ogni esempio nella perdita, ma riduce il peso di quelli classificati correttamente, permettendo ai rilevatori a uno stadio come RetinaNet di addestrarsi su tutte le box candidate senza campionamento esplicito.
- Apprendimento attivo: seleziona esempi incerti e non etichettati da far annotare alle persone, inclusi possibili esempi positivi. Il mining degli hard negative si concentra su esempi già confermati come negativi.
- Ribilanciamento delle classi: corregge le frequenze non uniformi delle classi tramite sottocampionamento e aumento dei pesi. Una classe negativa frequente non è necessariamente difficile.
- Aumento dei dati: crea varianti dei campioni esistenti, ma non può introdurre un oggetto difficile da distinguere che non fosse presente nel dataset.
Applicazioni nel mondo reale#
- Rilevamento per la sicurezza in magazzino: un rilevatore di carrelli elevatori che segnala ripetutamente transpallet, riflessi sugli scaffali e piattaforme a forbice mina la fiducia degli operatori con falsi allarmi. Raccogliere queste scene come immagini negative e ripetere l'addestramento insegna al rilevatore le caratteristiche che distinguono un carrello elevatore da attrezzature simili.
- Ricerca visiva di prodotti: quando una ricerca di una specifica scarpa da corsa nera classifica troppo in alto scarpe simili di altre linee, tali prodotti diventano hard negative. Addestrare il modello su questi prodotti, per esempio usandoli come esempi negativi nelle triplette ancora-positivo-negativo di una rete siamese, insegna al modello di embedding a mantenere distinzioni sottili, come la forma della suola, la posizione del logo e il materiale.
Flusso di lavoro del mining offline#
Ogni ciclo di mining offline esegue il modello corrente, verifica ciò che ha segnalato e reinserisce i casi confermati nell'addestramento:
La fase di revisione è importante perché un «falso positivo» è spesso un oggetto reale sfuggito agli annotatori, e aggiungerlo come negativo insegnerebbe al modello a sopprimere i rilevamenti corretti. Ultralytics YOLO tratta un'immagine di addestramento il cui file delle etichette è mancante o vuoto come immagine di sfondo, quindi assegna un punteggio target pari a zero a ogni punto di ancoraggio dell'immagine e penalizza qualsiasi previsione ad alta confidenza in corrispondenza di quei punti, il che significa che per aggiungere i negativi individuati tramite mining basta copiare nel dataset YOLO26 le immagini senza etichette. I progressi si riflettono in una precisione più elevata a parità di richiamo, con precisione e richiamo monitorati sull'intero set di test e su un sottoinsieme dedicato agli esempi negativi difficili.
Addestrare un modello solo sugli esempi negativi più difficili può essere controproducente. Nell'addestramento del face embedding di FaceNet, scegliere gli esempi negativi più difficili nelle prime fasi poteva indurre il modello a mappare ogni volto sullo stesso punto; per questo gli autori hanno usato esempi semi-difficili, più lontani dall'ancora rispetto all'esempio positivo ma ancora entro il margine della tripletta.










