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

Vector Quantization

La quantizzazione vettoriale sostituisce ogni vettore con l'indice della voce più vicina nel codebook. Panoramica dei codebook k-means, della quantizzazione del prodotto e dei token VQ-VAE.

La quantizzazione vettoriale (VQ) è una tecnica di compressione che sostituisce ogni vettore di un dataset con l'indice della voce più vicina in un piccolo insieme di vettori rappresentativi chiamato codebook. La codifica memorizza solo l'indice, la decodifica lo cerca e l'errore di ricostruzione è la distanza tra il vettore originale e il suo vettore di codice. Un codebook di K voci richiede log₂(K) bit per vettore, indipendentemente dal numero di dimensioni del vettore, quindi un codebook di 256 voci memorizza qualsiasi vettore in un byte. La VQ nasce nell'elaborazione dei segnali: l'algoritmo di Stuart Lloyd del 1957, sviluppato ai Bell Labs per progettare quantizzatori scalari e pubblicato nel 1982, è l'algoritmo oggi generalmente chiamato k-means; nel 1980, Yoseph Linde, Andrés Buzo e Robert Gray lo estesero ai vettori. Nel deep learning, la VQ è diventata il metodo standard per convertire immagini, audio e video in token discreti per l'IA generativa.

Come funziona la quantizzazione vettoriale#

Un codebook viene solitamente appreso con il clustering k-means: assegna ogni vettore di addestramento al codeword più vicino, sposta ciascun codeword sulla media dei vettori assegnati e ripeti; così la distorsione media non aumenta mai. La quantizzazione del colore mostra l'intero ciclo sui pixel di una foto, usando il modulo scipy.cluster.vq di SciPy:

import numpy as np
from scipy.cluster.vq import kmeans2, vq
from sklearn.datasets import load_sample_image

image = load_sample_image("china.jpg")  # 427 x 640 RGB photo bundled with scikit-learn
pixels = image.reshape(-1, 3).astype(np.float64)  # one 3-D color vector per pixel

# Learn a 16-entry codebook with k-means (Lloyd's algorithm) on a sample of pixels
rng = np.random.default_rng(0)
codebook, _ = kmeans2(rng.choice(pixels, 5000), 16, minit="++", seed=0)

# Encode: replace each pixel with the index of its nearest codeword (4 bits instead of 24)
indices, _ = vq(pixels, codebook)
# Decode: look each index up in the codebook
reconstruction = codebook[indices]

rmse = np.sqrt(((pixels - reconstruction) ** 2).mean())
print(f"{len(pixels):,} pixels, {len(codebook)} codewords, 24 -> 4 bits per pixel")
print(f"Reconstruction RMSE: {rmse:.1f} on the 0-255 scale")

Tutti i 273.280 pixel vengono memorizzati come indici a 4 bit in 16 colori: i dati cromatici sono sei volte inferiori rispetto a RGB a 24 bit, con un errore quadratico medio di 11,3 livelli di intensità su 255.

La quantizzazione scalare è il caso unidimensionale e la quantizzazione dei modelli la applica alle reti neurali. Ultralytics YOLO26 la usa in fase di esportazione: quantize=8 arrotonda ogni peso e attivazione in modo indipendente a uno dei 256 livelli interi, osservando gli intervalli di attivazione in un'unica passata di calibrazione sulle immagini in data. La quantizzazione congiunta di interi vettori sfrutta le correlazioni tra dimensioni e, allo stesso tasso di bit, un quantizzatore vettoriale ottimale non ha mai una distorsione maggiore di un quantizzatore scalare ottimale applicato a ogni valore.

Quantizzazione a prodotto e residua#

Un singolo codebook cresce esponenzialmente con il budget di bit, poiché 64 bit richiederebbero 2⁶⁴ parole di codice. La quantizzazione a prodotto, introdotta da Hervé Jégou, Matthijs Douze e Cordelia Schmid nel 2011, divide ogni vettore in m sottovettori e quantizza ciascuno con un proprio codebook di 256 voci. Con m = 8, un'embedding float32 a 128 dimensioni passa da 512 byte a 8, e le distanze da una query si ricavano da piccole tabelle di ricerca. La libreria FAISS di Meta la abbina a un indice a file invertito, un quantizzatore k-means grossolano che limita ogni query a pochi cluster, per la ricerca vettoriale su scala di miliardi di elementi.

La quantizzazione residua sovrappone i codebook: il secondo quantizza l'errore lasciato dal primo, il terzo quello lasciato dal secondo e così via. I codec audio neurali SoundStream di Google (2021) ed EnCodec di Meta (2022) la usano per comprimere parlato e musica a pochi kilobit al secondo; la modellazione autoregressiva visiva (VAR) la applica a diverse risoluzioni delle immagini.

VQ-VAE e token delle immagini#

Aäron van den Oord, Oriol Vinyals e Koray Kavukcuoglu di DeepMind introdussero VQ-VAE nel 2017 con Neural Discrete Representation Learning. L'output dell'encoder di un'autoencoder in ogni posizione spaziale viene sostituito dal codeword più vicino e il decoder ricostruisce l'input a partire dai codeword. La ricerca del vicino più prossimo non ha gradiente, quindi uno stimatore straight-through vi fa passare il gradiente del decoder durante la backpropagation, come mostrato in PyTorch con z_q = z + (z_q - z).detach(). Due termini di loss aggiuntivi avvicinano i codeword agli output dell'encoder e vincolano l'encoder ai codeword scelti; nel documento il secondo termine ha un peso di 0,25.

Le griglie di token risultanti alimentano un secondo modello, di solito un transformer, che impara a generarle. VQGAN (2021) ha aggiunto loss avversarie e percettive per ottenere token più nitidi, diventando il tokenizer alla base di molti modelli da testo a immagine. Un problema comune è il collasso del codebook, in cui la maggior parte dei codeword non viene mai selezionata e il vocabolario effettivo si riduce. L'inizializzazione k-means, gli aggiornamenti del codebook tramite media mobile e il ripristino dei codici inutilizzati contrastano il problema; la quantizzazione scalare finita (FSQ) di Google (2023) lo evita arrotondando ciascuna di poche dimensioni latenti a una manciata di livelli fissi, rendendo raggiungibile ogni codice del codebook implicito.

  • Database vettoriali: memorizzano e indicizzano gli embedding e spesso applicano internamente la quantizzazione a prodotto per conservarli in memoria.
  • Riduzione della dimensionalità: mappa i vettori in un numero inferiore di dimensioni continue, come fa la PCA; la VQ, invece, mappa ogni vettore in un codice discreto.
  • Tokenizzazione: suddivide il testo in unità appartenenti a un vocabolario fisso; la VQ crea il vocabolario equivalente per segnali continui come porzioni di immagini e frame audio.

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