Neuromorphic Vision
La visione neuromorfica percepisce le scene come una retina: le telecamere a eventi rilevano le variazioni di luminosità di ogni pixel nell'arco di microsecondi. Scopri come funzionano gli eventi e come vengono usati.
La visione neuromorfica è un approccio alla visione artificiale che rileva ed elabora le immagini come fanno la retina biologica e il cervello. Il dispositivo fondamentale, la telecamera a eventi o sensore di visione dinamica (DVS), ha pixel che funzionano in modo indipendente e segnalano ciascuno una variazione di luminosità nel momento in cui si verifica, anziché acquisire fotogrammi completi a una frequenza fissa. Il risultato è un flusso sparso di eventi con temporizzazione al microsecondo, ampia gamma dinamica e quasi nessuna sfocatura da movimento, mentre una scena statica produce pochissimi dati. Il campo nacque dall'ingegneria neuromorfica del gruppo di Carver Mead al Caltech, alla fine degli anni '80: i loro chip analogici imitavano i circuiti neurali e le reti neurali spiking ne sono il naturale corrispettivo per l'elaborazione, calcolando con lo stesso tipo di eventi sparsi e temporizzati.
Come funzionano le telecamere a eventi#
Ogni pixel memorizza il logaritmo della luminosità rilevata al suo ultimo evento. Quando la luminosità logaritmica attuale differisce da quel valore di riferimento più di una soglia di contrasto, il pixel emette un evento che codifica la posizione, un timestamp e una polarità — ON per una luminosità maggiore o OFF per una luminosità minore — quindi reimposta il proprio riferimento. Operare nello spazio logaritmico fa sì che il pixel risponda al contrasto relativo, perciò lo stesso sensore gestisce sia l'ombra profonda sia la luce solare diretta, con una gamma dinamica di circa 140 dB rispetto a circa 60 dB delle telecamere a fotogrammi.
La stessa regola si può applicare ai video normali per vedere quanto è sparso il risultato:
import cv2
import numpy as np
# Read a clip of a person exercising in front of a fixed camera
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solution_ci_pose_demo.mp4")
ok, frame = cap.read()
reference = np.log1p(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY).astype(np.float32))
threshold = 0.2 # contrast threshold on log brightness
events, samples = 0, 0
while True:
ok, frame = cap.read()
if not ok:
break
brightness = np.log1p(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY).astype(np.float32))
# A pixel fires an ON or OFF event only when its brightness changed by more than the threshold
fired = np.abs(brightness - reference) >= threshold
reference[fired] = brightness[fired]
events += fired.sum()
samples += fired.size
print(f"{events:,} events vs {samples:,} pixel values in frames ({100 * events / samples:.2f}%)")Stampa 233,492 events vs 13,593,600 pixel values in frames (1.72%): con una telecamera fissa, da un fotogramma all'altro cambia solo la persona che si allena, quindi il flusso di eventi contiene l'1,72% dei valori presenti nei fotogrammi completi. Simulatori come v2e trasformano allo stesso modo i video in eventi sintetici che fungono da dati di addestramento, eventualmente sovracampionando prima i video tramite interpolazione dei fotogrammi e aggiungendo un disallineamento delle soglie a livello di pixel e rumore.
Telecamere a eventi e telecamere a fotogrammi a confronto#
Le telecamere a eventi sono adatte ai movimenti rapidi, alle scene con illuminazione estrema e al rilevamento edge AI sempre attivo in cui cambia poco; la loro larghezza di banda dipende dall'attività nella scena. Non registrano luminosità assoluta né colore: una telecamera ferma puntata su una scena immobile non segnala nulla, mentre una telecamera in movimento riempie l'output di eventi provenienti da ogni bordo. I sensori ibridi, come il DAVIS di iniVation, acquisiscono anche fotogrammi standard dagli stessi pixel, e molti sistemi combinano una telecamera a eventi e una a fotogrammi tramite la fusione dei sensori. I modelli standard, come le reti neurali convoluzionali (CNN), si aspettano immagini dense, quindi le pipeline convertono gli eventi in una rappresentazione densa oppure li elaborano direttamente:
- Fotogrammi di eventi: Contare gli eventi ON e OFF per pixel nell'arco di una finestra temporale produce un'immagine a due canali leggibile da qualsiasi CNN.
- Superfici temporali e griglie di voxel: Memorizzare l'ultimo timestamp di ogni pixel oppure suddividere gli eventi in più intervalli temporali conserva informazioni sulla temporizzazione che i semplici conteggi scartano.
- Reti spiking su chip neuromorfici: Processori come Loihi 2 di Intel consumano direttamente gli eventi come spike e usano energia solo quando arrivano eventi.
- Ricostruzione dell'intensità: Reti come E2VID ricostruiscono un video in scala di grigi dal flusso di eventi, permettendo così di eseguire modelli basati sui fotogrammi.
Ultralytics YOLO legge il numero di canali di input dalla chiave channels di un file YAML del dataset, come nel dataset COCO8-Multispectral a 10 canali, così un modello YOLO26 di rilevamento degli oggetti può essere addestrato direttamente su fotogrammi di eventi a due canali con conteggi ON e OFF.
Applicazioni nel mondo reale#
- Percezione automobilistica: Uno studio del 2024 pubblicato su Nature ha abbinato una telecamera a colori da 20 FPS a una telecamera a eventi e ha rilevato oggetti sulla strada con la latenza di una telecamera da 5.000 FPS e la larghezza di banda di una telecamera da 45 FPS.
- Droni e robotica: Un quadricottero con telecamera a eventi dell'Università di Zurigo ha evitato gli ostacoli lanciati contro di lui a velocità relative fino a 10 metri al secondo, con una latenza complessiva di 3,5 millisecondi.
- Monitoraggio industriale: Le telecamere a eventi contano le parti in rapido movimento, misurano le vibrazioni delle macchine e tracciano i processi ad alta velocità; produttori di telecamere industriali come IDS vendono modelli basati sugli eventi e realizzati con sensori Prophesee.










