Feature Extraction
L'estrazione di caratteristiche trasforma dati grezzi, come le immagini, in caratteristiche compatte e informative, usando metodi progettati manualmente o reti neurali preaddestrate.
L'estrazione di caratteristiche è il processo che trasforma i dati grezzi in un insieme più piccolo di caratteristiche numeriche contenenti le informazioni necessarie per un compito. Una foto RGB da 640×480 contiene 921.600 valori di pixel, per la maggior parte ridondanti; un estrattore di caratteristiche può ridurla a un vettore di poche centinaia di numeri che ne descrivono il contenuto. L'apprendimento automatico classico si basava su estrattori progettati manualmente per ogni tipo di dato, mentre i modelli di apprendimento profondo apprendono autonomamente le caratteristiche in una rete backbone, il cui output può essere riutilizzato per la ricerca, il clustering e nuovi classificatori. Un numero minore di dimensioni più informative aiuta anche ad affrontare la maledizione della dimensionalità, consentendo ai modelli più semplici di generalizzare con meno dati.
Caratteristiche progettate manualmente e apprese#
Prima dell'apprendimento profondo, gli ingegneri realizzavano un estrattore di caratteristiche per ogni tipo di dato:
- SIFT: Individua i punti chiave in un'immagine e descrive ciascuno con un istogramma a 128 dimensioni degli orientamenti del gradiente, stabile rispetto ai cambiamenti di scala e rotazione. Per questo è diventato lo strumento standard per l'abbinamento di immagini e la creazione di panorami.
- HOG: Istogrammi dei gradienti orientati calcolati su una griglia di celle. Abbinato a una macchina a vettori di supporto lineare, HOG fu presentato nel 2005 per il rilevamento dei pedoni e divenne uno strumento fondamentale nel rilevamento classico degli oggetti.
- Analisi delle componenti principali (PCA): Proietta i dati sulle direzioni di massima varianza; è un metodo di uso generale per dati tabellari, volti e spettri.
- Coefficienti cepstrali a frequenza mel (MFCCs): Riassumono lo spettro audio a breve termine su una scala adeguata all'udito umano e sono stati a lungo l'input predefinito per il riconoscimento vocale.
Le caratteristiche apprese hanno sostituito la maggior parte di questi metodi per immagini, audio e testo. Una rete neurale convoluzionale (CNN) o un vision transformer (ViT) addestrato su milioni di immagini costruisce autonomamente una gerarchia: i primi livelli rilevano bordi e macchie di colore, quelli intermedi rilevano texture e parti, mentre gli ultimi codificano concetti a livello di oggetto. Queste rappresentazioni, memorizzate nelle mappe di caratteristiche, si trasferiscono a nuovi compiti; per questo i backbone preaddestrati sono il punto di partenza predefinito per l'apprendimento per trasferimento.
Estrazione di caratteristiche e termini correlati#
- Ingegneria delle caratteristiche: La pratica più ampia di creare, trasformare e scegliere gli input del modello, spesso basandosi sulla conoscenza del dominio; per esempio, calcolare il prezzo per metro quadrato a partire dal prezzo e dalla superficie. L'estrazione di caratteristiche ne è una parte e, nell'apprendimento profondo, è completamente automatizzata.
- Selezione delle caratteristiche: Mantiene invariato un sottoinsieme delle caratteristiche originali ed elimina le altre. L'estrazione di caratteristiche crea nuove caratteristiche trasformando o combinando quelle originali.
- Riduzione della dimensionalità: Si sovrappone in larga misura all'estrazione di caratteristiche, e la PCA rientra in entrambe. I metodi progettati per la visualizzazione, come t-SNE, riducono le dimensioni per consentire l'ispezione umana e raramente vengono usati come input dei modelli.
- Embedding: I vettori di caratteristiche prodotti da un estrattore appreso. Nell'apprendimento profondo, "caratteristiche estratte" ed "embedding" si riferiscono di solito agli stessi vettori.
Usare una rete preaddestrata come estrattore di caratteristiche#
La procedura comune consiste nel prendere una rete preaddestrata, rimuoverne la testa del compito, far passare i dati attraverso i livelli congelati e applicare il pooling all'ultima mappa di caratteristiche per ottenere un vettore per ogni input. Con etichette, addestrare solo un classificatore lineare su quei vettori, tecnica chiamata linear probing, fornisce una solida baseline a una frazione del costo necessario per addestrare una rete. Senza etichette, la ricerca vettoriale trova immagini visivamente simili, il clustering k-means raggruppa un dataset per curarlo e rimuovere i duplicati, mentre la distanza dagli esempi normali segnala difetti nel rilevamento delle anomalie. I pesi del backbone non cambiano mai durante l'estrazione di caratteristiche, che per questo si distingue dal fine-tuning.
I modelli YOLO26 offrono questa funzionalità tramite model.embed(), che esegue la rete fino a un livello scelto e applica il pooling medio alla mappa di caratteristiche di quel livello per ottenere un vettore per immagine; embed=[10] si ferma all'ultimo livello del backbone YOLO26.
from ultralytics import YOLO
# Carica un modello YOLO26 preaddestrato; il backbone termina al livello 10
model = YOLO("yolo26n.pt")
# Applica il pooling medio alla mappa di caratteristiche finale del backbone per ottenere un vettore per immagine
embeddings = model.embed("https://ultralytics.com/images/bus.jpg", embed=[10])
vector = embeddings[0]
print(vector.shape)Stampa torch.Size([256]): l'intera foto dell'autobus ridotta a 256 numeri, uno per ogni canale dell'output del backbone YOLO26n con stride 32, pronta per la ricerca vettoriale o il clustering.










