Neuromorphic Vision
La visión neuromórfica percibe las escenas como una retina: las cámaras de eventos registran cambios de brillo por píxel en cuestión de microsegundos. Descubre cómo funcionan y se utilizan los eventos.
La visión neuromórfica es un enfoque de la visión artificial que detecta y procesa imágenes como lo hacen la retina y el cerebro biológicos. Su dispositivo principal, la cámara de eventos o sensor de visión dinámica (DVS), tiene píxeles que funcionan de forma independiente y notifican cada cambio de brillo en el momento en que se produce, en lugar de capturar fotogramas completos a una frecuencia fija. La salida es un flujo disperso de eventos con marcas temporales de microsegundos, un amplio rango dinámico y casi nada de desenfoque por movimiento; una escena estática apenas produce datos. Este campo surgió de la ingeniería neuromórfica del grupo de Carver Mead en Caltech a finales de la década de 1980, cuyos chips analógicos imitaban circuitos neuronales, y las redes neuronales de impulsos son su equivalente natural para el procesamiento, ya que calculan con el mismo tipo de eventos dispersos y temporizados.
Cómo funcionan las cámaras de eventos#
Cada píxel almacena el logaritmo del brillo que detectó en su último evento. Cuando el brillo logarítmico actual difiere de esa referencia en más de un umbral de contraste, el píxel emite un evento que codifica su ubicación, una marca temporal y una polaridad —ON para más brillo u OFF para menos— y, a continuación, restablece la referencia. Trabajar en el espacio logarítmico hace que el píxel responda al contraste relativo, por lo que el mismo sensor puede manejar tanto sombras profundas como luz solar directa, con un rango dinámico de unos 140 dB, frente a unos 60 dB en las cámaras de fotogramas.
La misma regla puede aplicarse a un vídeo convencional para ver lo dispersa que es la salida:
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}%)")Imprime 233,492 events vs 13,593,600 pixel values in frames (1.72%): con una cámara fija, solo cambia de un fotograma a otro la persona que hace ejercicio, por lo que el flujo de eventos contiene el 1,72 % de los valores de los fotogramas completos. Los simuladores, como v2e, convierten los vídeos en datos de entrenamiento de eventos sintéticos del mismo modo, con la opción de ampliarlos primero mediante interpolación de fotogramas y añadir desajustes en los umbrales y ruido por píxel.
Cámaras de eventos frente a cámaras de fotogramas#
Las cámaras de eventos son adecuadas para el movimiento rápido, las escenas con iluminación extrema y la detección permanente de IA en el borde en entornos donde apenas hay cambios; su ancho de banda depende de la actividad de la escena. No registran el brillo absoluto ni el color: una cámara inmóvil que observa una escena inmóvil no detecta nada, mientras que una cámara en movimiento inunda la salida con eventos de todos los bordes. Los sensores híbridos, como DAVIS de iniVation, también capturan fotogramas estándar con los mismos píxeles, y muchos sistemas combinan una cámara de eventos con una cámara de fotogramas mediante fusión de sensores. Los modelos estándar, como las redes neuronales convolucionales (CNN), esperan imágenes densas, así que los procesos convierten los eventos en una representación densa o los procesan de forma nativa:
- Fotogramas de eventos: Contar los eventos ON y OFF de cada píxel durante un intervalo de tiempo genera una imagen de dos canales que cualquier CNN puede leer.
- Superficies temporales y cuadrículas de vóxeles: Almacenar la última marca temporal de cada píxel o agrupar los eventos en varios intervalos temporales conserva información temporal que los recuentos simples descartan.
- Redes de impulsos en chips neuromórficos: Procesadores como Loihi 2 de Intel consumen eventos directamente como impulsos y solo gastan energía cuando llegan eventos.
- Reconstrucción de intensidad: Redes como E2VID reconstruyen un vídeo en escala de grises a partir del flujo de eventos, de modo que se puedan ejecutar modelos basados en fotogramas.
Ultralytics YOLO lee el número de canales de entrada de la clave channels de un YAML de conjunto de datos, como en el conjunto de datos de 10 canales COCO8-Multispectral, por lo que un modelo de YOLO26 para detección de objetos puede entrenarse directamente con fotogramas de eventos de dos canales que cuenten eventos ON y OFF.
Aplicaciones en el mundo real#
- Percepción automovilística: Un estudio de Nature de 2024 combinó una cámara en color de 20 FPS con una cámara de eventos y detectó objetos en la carretera con la latencia de una cámara de 5000 FPS y el ancho de banda de una cámara de 45 FPS.
- Drones y robótica: Un cuadricóptero con cámara de eventos de la Universidad de Zúrich esquivó obstáculos que le lanzaban a velocidades relativas de hasta 10 metros por segundo, con una latencia total de 3,5 milisegundos.
- Supervisión industrial: Las cámaras de eventos cuentan piezas que se mueven rápidamente, miden las vibraciones de las máquinas y siguen procesos de alta velocidad; fabricantes de cámaras industriales como IDS venden modelos basados en eventos que utilizan sensores de Prophesee.










