Neuromorphic Vision
ニューロモルフィックビジョンは、網膜のようにシーンを検知します。イベントカメラは、マイクロ秒単位で画素ごとの輝度変化を報告します。イベントの仕組みと用途を解説します。
ニューロモルフィックビジョンは、生物の網膜や脳と同じ方法で画像を感知・処理するコンピュータビジョンのアプローチです。中核となるデバイスであるイベントカメラ、またはダイナミックビジョンセンサー(DVS)は、独立して動作するピクセルを備え、固定レートでフレーム全体を撮影する代わりに、輝度の変化が起きた瞬間に各ピクセルがそれを報告します。出力は、マイクロ秒単位のタイミング、高いダイナミックレンジ、ほぼゼロのモーションブラーを備えた疎なイベントストリームであり、静止シーンではデータがほとんど生成されません。この分野は、1980年代後半にカリフォルニア工科大学でCarver Meadの研究グループが進めたニューロモルフィック工学から発展しました。同グループのアナログチップは神経回路を模倣しており、スパイキングニューラルネットワークはその自然な処理方式として、同種の疎でタイミング情報を持つイベントを使って計算します。
イベントカメラの仕組み#
各ピクセルは、直近のイベントで検出した輝度の対数を保存します。現在の対数輝度とその基準値との差がコントラストしきい値を超えると、ピクセルは位置、タイムスタンプ、極性(明るくなった場合はON、暗くなった場合はOFF)を記録したイベントを出力し、その後基準値をリセットします。対数空間で処理することで、ピクセルは相対的なコントラストに反応します。そのため、同じセンサーで深い影から直射日光まで扱えます。ダイナミックレンジは約140 dBであり、フレームカメラの約60 dBを大きく上回ります。
通常の動画にも同じルールを適用すると、出力がどれほど疎になるかを確認できます。
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}%)")出力は233,492 events vs 13,593,600 pixel values in frames (1.72%)です。カメラが固定されている場合、フレーム間で変化するのは運動する人物だけなので、イベントストリームが伝える値はフルフレームの1.72%です。v2eなどのシミュレーターも同じ方法で動画を合成イベント学習データに変換します。必要に応じて、先にフレーム補間でアップサンプリングし、ピクセルごとのしきい値の不一致やノイズを加えることもできます。
イベントカメラとフレームカメラの比較#
イベントカメラは、高速な動き、極端な照明条件のシーン、変化が少ない常時稼働のエッジAIセンシングに適しており、帯域幅はシーン内の動きに応じて変化します。絶対的な輝度や色は記録されません。静止したシーンを撮影する静止カメラは何も報告せず、動いているカメラはすべてのエッジからイベントを大量に出力します。iniVationのDAVISなどのハイブリッドセンサーは、同じピクセルで標準フレームも撮影します。また、多くのシステムではイベントカメラとフレームカメラをセンサーフュージョンで組み合わせています。畳み込みニューラルネットワーク(CNN)などの標準モデルは高密度画像を前提としているため、パイプラインではイベントを高密度表現に変換するか、そのまま処理します。
- イベントフレーム: 時間枠内でピクセルごとにONイベントとOFFイベントを数えると、どのCNNでも読み込める2チャンネル画像になります。
- タイムサーフェスとボクセルグリッド: 各ピクセルの最新タイムスタンプを保存するか、イベントを複数の時間スライスに分けることで、単純なカウントでは失われるタイミング情報を保持します。
- ニューロモルフィックチップ上のスパイキングネットワーク: IntelのLoihi 2などのプロセッサは、イベントをスパイクとして直接処理し、イベントが到着したときだけエネルギーを消費します。
- 輝度再構成: E2VIDなどのネットワークは、イベントストリームからグレースケール動画を再構成するため、フレームベースのモデルを適用できます。
Ultralytics YOLOは、データセットYAMLのchannelsキーから入力チャンネル数を読み取ります。たとえば、10チャンネルのCOCO8-Multispectralデータセットでは、YOLO26の物体検出モデルを、ONカウントとOFFカウントからなる2チャンネルのイベントフレームで直接学習できます。
実際のアプリケーション#
- 自動車の知覚: 2024年のNatureの研究では、20 FPSのカラーカメラとイベントカメラを組み合わせ、45 FPSカメラの帯域幅で、5,000 FPSカメラ相当のレイテンシで道路上の物体を検出しました。
- ドローンとロボティクス: チューリッヒ大学のイベントカメラ搭載クアッドローターは、相対速度が秒速10メートルに達するように投げられた障害物を回避し、全体のレイテンシは3.5ミリ秒でした。
- 産業モニタリング: イベントカメラは、高速で移動する部品の計数、機械の振動測定、高速プロセスの追跡に使われます。IDSなどの産業用カメラメーカーは、Propheseeのセンサーをベースにしたイベント方式のモデルを販売しています。










