Licenza YOLO
Torna al glossario di Ultralytics

Scale-Invariant Feature Transform (SIFT)

La trasformata di caratteristiche invarianti alla scala (SIFT) è un algoritmo classico che individua punti chiave e crea descrittori di 128 valori stabili rispetto a scala e rotazione.

La trasformata di caratteristiche invarianti alla scala (SIFT) è un classico algoritmo di visione artificiale che individua punti chiave locali distintivi in un'immagine e descrive ciascuno con un vettore di 128 numeri che rimane pressoché invariato quando l'immagine viene ridimensionata o ruotata. Confrontare questi descrittori consente al software di collegare due foto della stessa scena scattate da distanze e angolazioni diverse, permettendo di unire foto sovrapposte in un panorama. SIFT è una forma di estrazione di caratteristiche progettata manualmente, a differenza delle mappe di caratteristiche apprese da una rete neurale convoluzionale.

Origini e idea di base#

David Lowe, dell'Università della Columbia Britannica, introdusse SIFT nel 1999 nell'articolo dell'ICCV Riconoscimento di oggetti da caratteristiche locali invarianti alla scala e ne presentò un'analisi completa nell'articolo "Caratteristiche distintive delle immagini da punti chiave invarianti alla scala", pubblicato sull'International Journal of Computer Vision nel 2004. Le caratteristiche SIFT sono invarianti rispetto alla scala e alla rotazione e si abbinano in modo robusto anche in presenza di notevoli distorsioni affini, variazioni del punto di vista 3D, rumore e cambiamenti di illuminazione. Il metodo era brevettato e il brevetto è scaduto nel 2020. OpenCV ha spostato SIFT dal proprio repository contrib alla libreria principale nella versione 4.4.0.

Un oggetto non ha dimensioni fisse in una foto, quindi un rilevatore deve cercare strutture a tutte le scale. SIFT crea uno spazio delle scale applicando ripetutamente una sfocatura gaussiana di intensità crescente e riducendo la risoluzione in gruppi chiamati ottave.

Come funziona SIFT#

L'algoritmo si articola in quattro fasi:

  1. Rilevamento degli estremi nello spazio delle scale: Le differenze tra livelli di sfocatura adiacenti (differenza di gaussiane) approssimano un rilevatore di blob. Un pixel è un candidato se è il massimo o il minimo tra i suoi 26 vicini nello spazio e nella scala.
  2. Localizzazione dei punti chiave: I candidati vengono raffinati fino alla precisione subpixel. I punti a basso contrasto e quelli situati lungo i bordi vengono scartati perché instabili.
  3. Assegnazione dell'orientamento: Un istogramma delle direzioni locali del gradiente attorno a ogni punto chiave determina un orientamento dominante, rispetto al quale vengono misurate tutte le operazioni successive. Questo garantisce l'invarianza alla rotazione.
  4. Creazione del descrittore: Il vicinato viene suddiviso in una griglia 4 x 4 e ogni cella contiene un istogramma del gradiente a 8 bin. Si ottengono così 4 x 4 x 8 = 128 valori, normalizzati per ridurre la sensibilità alle variazioni di illuminazione.

Il confronto tra descrittori si basa sulla distanza euclidea. Il test del rapporto di Lowe mantiene una corrispondenza solo se il vicino più prossimo è nettamente più vicino del secondo. Una ricerca dei k vicini più prossimi con k = 2 fornisce entrambe le distanze.

import cv2
from ultralytics.utils import ASSETS

# Load a sample image in grayscale and a half-size copy
img = cv2.imread(str(ASSETS / "bus.jpg"), cv2.IMREAD_GRAYSCALE)
small = cv2.resize(img, None, fx=0.5, fy=0.5)

# Detect keypoints and compute 128-dimensional descriptors
sift = cv2.SIFT_create()
kp1, des1 = sift.detectAndCompute(img, None)
kp2, des2 = sift.detectAndCompute(small, None)

# Match half-size descriptors to full-size ones, then apply Lowe's ratio test
pairs = cv2.BFMatcher().knnMatch(des2, des1, k=2)
good = [m for m, n in pairs if m.distance < 0.8 * n.distance]
print(f"{len(good)} of {len(kp2)} half-size keypoints matched at full size")

Il conteggio visualizzato indica quanti punti chiave individuati a metà risoluzione vengono riconosciuti di nuovo nell'immagine a piena risoluzione: è l'invarianza alla scala in azione.

Applicazioni#

SIFT è diventato la caratteristica locale predefinita per le attività di visione geometrica:

  • Creazione di panorami: Il metodo automatico di Brown e Lowe per la creazione di panorami (IJCV 2007) abbina le caratteristiche SIFT tra foto sovrapposte e stima una omografia per allinearle, in una fase chiamata registrazione delle immagini.
  • Ricostruzione 3D: Photo Tourism (Snavely, Seitz e Szeliski, 2006) abbina le caratteristiche SIFT tra foto turistiche e usa la geometria epipolare per ricavare le pose delle telecamere e una struttura 3D sparsa.
  • Localizzazione dei robot: Se, Lowe e Little (2001) hanno usato punti di riferimento SIFT per localizzare e mappare robot mobili, anticipando la moderna SLAM visiva.
  • Riconoscimento di istanze: Nell'articolo del 2004, Lowe riconosce un trenino giocattolo e una rana in una scena caotica e parzialmente occlusa, usando appena 3 caratteristiche abbinate.

Nel tracciamento degli oggetti con Ultralytics YOLO, BoT-SORT compensa il movimento della telecamera tra i fotogrammi e, impostando gmc_method: sift nella configurazione del tracker, usa le corrispondenze SIFT per la stima invece del flusso ottico sparso predefinito.

SIFT abbina gli stessi punti fisici tra diverse viste, una caratteristica utile per la corrispondenza e la geometria. Il rilevamento degli oggetti, invece, predice la categoria e la posizione degli oggetti. Il confronto di modelli fa scorrere una patch fissa e non funziona quando cambiano la scala o la rotazione.

SIFT è lento rispetto a ORB, un descrittore binario introdotto da Rublee e colleghi nel 2011 come alternativa a SIFT e SURF. Inoltre, ha difficoltà con le superfici prive di texture e con variazioni molto ampie del punto di vista; per il riconoscimento a livello di categoria è stato in gran parte sostituito da modelli appresi.

Nei test di Lowe del 2004, scartare le corrispondenze con un rapporto tra le distanze superiore a 0,8 ha eliminato il 90% delle corrispondenze errate, scartando meno del 5% di quelle corrette, su immagini con variazioni casuali di scala e rotazione, 30 gradi di rotazione in profondità e il 2% di rumore, confrontate con 40.000 punti chiave.

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