Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Contrastive Learning

L'apprendimento contrastivo addestra gli embedding avvicinando le coppie corrispondenti e allontanando gli altri campioni. Scopri InfoNCE, SimCLR, MoCo, CLIP e il codice.

L'apprendimento contrastivo addestra un modello a produrre embedding in cui le coppie corrispondenti di campioni, dette positive, si avvicinano, mentre quelle non corrispondenti, dette negative, si allontanano. Le coppie possono provenire dai dati stessi, come due ritagli aumentati della stessa foto, oppure da dati naturalmente abbinati, come un'immagine e la relativa didascalia, quindi l'apprendimento contrastivo non richiede etichette di classe. È una delle principali famiglie di metodi di apprendimento auto-supervisionato per le immagini, insieme alla ricostruzione mascherata e all'auto-distillazione. Gli encoder addestrati in questo modo producono caratteristiche trasferibili al rilevamento, alla classificazione e al recupero, e lo stesso obiettivo addestra i modelli visione-linguaggio come CLIP, che possono poi classificare le immagini usando solo il testo tramite l'apprendimento zero-shot.

Come funziona l'apprendimento contrastivo#

Un metodo contrastivo ha tre componenti: un modo per creare coppie positive, un encoder che mappa ogni campione in un embedding normalizzato e una funzione di perdita che confronta le similarità. In SimCLR, Ting Chen e i suoi colleghi di Google hanno creato due viste di ogni immagine applicando ritagli casuali, distorsioni cromatiche e sfocatura, le hanno codificate entrambe con una ResNet condivisa seguita da una piccola testa di proiezione e hanno considerato negativi gli altri elementi del batch:

L'aumento dei dati determina cosa il modello impara a ignorare. Poiché due ritagli della stessa immagine devono essere mappati in punti vicini, l'encoder impara che variazioni di posizione, scala e colore non cambiano ciò che l'immagine mostra, e conserva le caratteristiche che distinguono un'immagine da tutte le altre. Con una ResNet-50 quattro volte più larga dello standard, un classificatore lineare addestrato sulle caratteristiche congelate di SimCLR ha raggiunto un'accuratezza top-1 del 76.5% su ImageNet, pari a quella di una ResNet-50 supervisionata.

Funzioni di perdita contrastive#

  • Perdita contrastiva a coppie: la funzione di perdita del 2006 di Raia Hadsell, Sumit Chopra e Yann LeCun avvicina ogni coppia positiva e allontana ogni coppia negativa finché la distanza tra i due non è almeno pari a un margine m.
  • Perdita triplet: confronta un'ancora con un elemento positivo e uno negativo e richiede che il positivo sia più vicino di un margine. Nel 2015 FaceNet di Google ha addestrato gli embedding facciali con questo metodo.
  • InfoNCE: confronta un elemento positivo con molti negativi contemporaneamente. Con le similarità s divise per una temperatura τ, la perdita per un'ancora è −log[exp(s₊/τ) / Σⱼ exp(sⱼ/τ)], una cross-entropia softmax in cui il positivo è la classe corretta fra tutti i candidati. Aaron van den Oord e i suoi colleghi hanno coniato il termine nel predictive coding contrastivo del 2018; la perdita NT-Xent di SimCLR e quella di CLIP ne sono varianti.
  • Perdita sigmoide: SigLIP assegna a ogni coppia un punteggio indipendente di corrispondenza sì-no usando una sigmoide, quindi la perdita non richiede una normalizzazione sull'intero batch.

In PyTorch, InfoNCE si riduce alla cross-entropia su una matrice di similarità la cui diagonale contiene gli elementi positivi:

import torch
import torch.nn.functional as F

torch.manual_seed(0)
# Stand-in embeddings for 8 images, a second view of each (row i of both is a positive pair),
# and 8 unrelated images
view1 = F.normalize(torch.randn(8, 128), dim=1)
view2 = F.normalize(view1 + 0.1 * torch.randn(8, 128), dim=1)
unrelated = F.normalize(torch.randn(8, 128), dim=1)

# InfoNCE: cosine similarities divided by a temperature, then cross-entropy where
# each row's positive (the diagonal) is the correct class among all 8 candidates
temperature = 0.1
targets = torch.arange(8)
for name, keys in [("Augmented views", view2), ("Unrelated images", unrelated)]:
    logits = view1 @ keys.T / temperature
    print(f"{name}: loss {F.cross_entropy(logits, targets):.3f}")

Stampa Augmented views: loss 0.016 e Unrelated images: loss 2.505. Quando l'elemento positivo di ogni riga è chiaramente la chiave più simile, la perdita tende a zero. Con chiavi non correlate, supera ln 8 ≈ 2.08, la perdita di un'ipotesi uniforme fra otto candidati, perché dividere per una temperatura di 0.1 trasforma similarità casuali in previsioni errate sicure. Una temperatura più bassa rende la softmax più selettiva e concentra la perdita sui negativi più difficili. MoCo usa τ = 0.07 e CLIP inizializza la propria temperatura appresa allo stesso valore.

Negativi, dimensione del batch e varianti#

InfoNCE migliora all'aumentare dei negativi, perciò il loro numero è un fattore di costo fondamentale. SimCLR li ricavava da batch molto grandi. MoCo, sviluppato da Kaiming He e dai suoi colleghi di Facebook AI Research, manteneva una coda di 65,536 embedding provenienti dai batch recenti come negativi e li codificava con una copia dell'encoder aggiornata lentamente tramite momentum; così il numero di negativi è indipendente dalla dimensione del batch. I negativi casuali possono essere falsi negativi, per esempio un'altra foto della stessa razza di cane, mentre i negativi molto facili insegnano poco: per questo il campionamento dei negativi difficili cerca campioni confondibili. L'apprendimento contrastivo supervisionato (SupCon) usa le etichette per trattare ogni campione della stessa classe come positivo. Metodi non contrastivi come BYOL, SimSiam e DINO eliminano del tutto i negativi ed evitano di mappare ogni input nello stesso embedding usando reti asimmetriche, gradienti interrotti o centratura.

  • Apprendimento metrico: il compito più ampio di apprendere una funzione di distanza, da cui derivano le perdite contrastive e triplet. Oggi "apprendimento contrastivo" indica di solito la variante autosupervisionata con molti negativi resa popolare da SimCLR e MoCo.
  • Autoencoder: apprendono ricostruendo l'input, quindi le loro caratteristiche devono conservare i dettagli a livello di pixel. Le caratteristiche contrastive mantengono solo ciò che distingue un campione dagli altri.
  • JEPA: predice gli embedding delle regioni nascoste dell'immagine a partire da quelle visibili, apprendendo nello spazio degli embedding senza coppie negative.
  • Apprendimento supervisionato: addestra il modello su un insieme fisso di classi assegnate da esseri umani, mentre il preaddestramento contrastivo richiede solo una regola per stabilire quali campioni corrispondono.

Applicazioni#

  • Modelli visione-linguaggio: CLIP ha addestrato un encoder di immagini e uno di testo su 400 milioni di coppie immagine-didascalia con batch di 32,768, permettendo ai prompt testuali di classificare e recuperare immagini. I modelli Ultralytics YOLOE-26 codificano i nomi delle classi con l'encoder testuale MobileCLIP2 di Apple, addestrato con un obiettivo contrastivo in stile CLIP, e assegnano a ogni regione candidata un punteggio rispetto a quegli embedding testuali tramite una testa contrastiva; così set_classes(["forklift", "pallet"]) trasforma gli stessi pesi in un rilevatore per nuove categorie.
  • Ricerca semantica: gli embedding di immagini e testo addestrati con apprendimento contrastivo vengono archiviati in un database vettoriale e consultati in base alla similarità.
  • Preaddestramento con poche etichette: in ambiti come l'analisi di immagini mediche, dove le etichette degli esperti sono scarse, il preaddestramento contrastivo su scansioni non etichettate fornisce un backbone che l'ottimizzazione adatta usando un piccolo insieme etichettato.
  • Riconoscimento facciale e re-identificazione: le perdite contrastive e triplet addestrano embedding in cui le foto della stessa persona o dello stesso oggetto sono vicine. Gli embedding FaceNet a 128 dimensioni hanno raggiunto un'accuratezza del 99.63% sul benchmark Labeled Faces in the Wild.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning