Neuromorphic Vision
A visão neuromórfica detecta cenas como uma retina: câmeras de eventos registram mudanças de brilho por pixel em microssegundos. Saiba como os eventos funcionam e são usados.
A visão neuromórfica é uma abordagem de visão computacional que capta e processa imagens da mesma forma que a retina e o cérebro biológicos. Seu dispositivo central, a câmera de eventos ou sensor de visão dinâmica (DVS), tem pixels que funcionam de forma independente e relatam cada mudança de brilho no momento em que ocorre, em vez de capturar quadros completos a uma taxa fixa. A saída é um fluxo esparso de eventos com temporização em microssegundos, alto alcance dinâmico e quase nenhum desfoque de movimento; uma cena estática produz quase nenhum dado. A área surgiu da engenharia neuromórfica do grupo de Carver Mead na Caltech, no fim dos anos 1980, cujos chips analógicos imitavam circuitos neurais, e as redes neurais de impulsos são sua contraparte natural de processamento, computando com o mesmo tipo de eventos esparsos e temporizados.
Como funcionam as câmeras de eventos#
Cada pixel armazena o logaritmo do brilho observado em seu último evento. Quando o logaritmo do brilho atual difere dessa referência por mais do que um limiar de contraste, o pixel emite um evento que codifica sua localização, um carimbo de data e hora e uma polaridade — ON para mais brilho ou OFF para menos brilho — e então redefine a referência. Trabalhar no espaço logarítmico faz o pixel responder ao contraste relativo, permitindo que o mesmo sensor lide com sombras profundas e luz solar direta, com um alcance dinâmico de cerca de 140 dB, contra cerca de 60 dB das câmeras de quadros.
A mesma regra pode ser aplicada a vídeos comuns para ver como a saída é esparsa:
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}%)")Ele imprime 233,492 events vs 13,593,600 pixel values in frames (1.72%): com uma câmera fixa, apenas a pessoa que se exercita muda de um quadro para outro, então o fluxo de eventos contém 1,72% dos valores que os quadros completos conteriam. Simuladores como v2e transformam vídeos em amostras sintéticas de dados de treinamento baseados em eventos da mesma forma, podendo, opcionalmente, aumentar primeiro a taxa de quadros dos vídeos com interpolação de quadros e adicionar discrepâncias nos limiares de cada pixel e ruído.
Câmeras de eventos vs. câmeras de quadros#
As câmeras de eventos são adequadas para movimentos rápidos, cenas com iluminação extrema e detecção de IA na borda sempre ativa em que pouca coisa muda; sua largura de banda acompanha a atividade da cena. Elas não registram brilho absoluto nem cor: uma câmera parada observando uma cena estática não relata nada, enquanto uma câmera em movimento enche a saída de eventos de todas as bordas. Sensores híbridos, como o DAVIS da iniVation, também capturam quadros padrão dos mesmos pixels, e muitos sistemas combinam uma câmera de eventos e uma câmera de quadros por meio da fusão de sensores. Modelos padrão, como as redes neurais convolucionais (CNNs), esperam imagens densas, então os pipelines convertem os eventos em uma representação densa ou os processam nativamente:
- Quadros de eventos: Contar os eventos ON e OFF por pixel ao longo de uma janela de tempo gera uma imagem de dois canais que qualquer CNN pode ler.
- Superfícies temporais e grades de voxels: Armazenar o carimbo de data e hora mais recente de cada pixel ou agrupar eventos em vários intervalos temporais preserva informações de temporização que as contagens simples descartam.
- Redes de impulsos em chips neuromórficos: Processadores como o Loihi 2 da Intel consomem eventos diretamente como impulsos e só gastam energia quando eles chegam.
- Reconstrução de intensidade: Redes como a E2VID reconstroem um vídeo em escala de cinza a partir do fluxo de eventos, permitindo que modelos baseados em quadros sejam executados nele.
O Ultralytics YOLO lê a contagem de canais de entrada da chave channels de um YAML de conjunto de dados, como no conjunto de dados COCO8-Multispectral de 10 canais, permitindo que um modelo de detecção de objetos YOLO26 seja treinado diretamente com quadros de eventos de dois canais, com contagens ON e OFF.
Aplicações no mundo real#
- Percepção automotiva: Um estudo da Nature de 2024 combinou uma câmera colorida de 20 FPS com uma câmera de eventos e detectou objetos na estrada com a latência de uma câmera de 5.000 FPS e a largura de banda de uma câmera de 45 FPS.
- Drones e robótica: Um quadricóptero com câmera de eventos da Universidade de Zurique desviou de obstáculos lançados contra ele a velocidades relativas de até 10 metros por segundo, com uma latência total de 3,5 milissegundos.
- Monitoramento industrial: Câmeras de eventos contam peças em movimento rápido, medem a vibração de máquinas e acompanham processos de alta velocidade; fabricantes de câmeras industriais, como a IDS, vendem modelos baseados em eventos que usam sensores da Prophesee.










