イベントベースのビジョン ソフトウェアは何を処理しますか?
イベント カメラは、従来のビデオ フレームを間隔ごとに配信するのではなく、明るさの変化を報告します。デコードされたイベントは通常、ピクセル、極性、およびタイムスタンプを識別します。アプリケーションは、取得、フィルタリング、記録、推論を通じてこれらのフィールドの意味を保持する必要があります。の イベントベースとフレームベースの比較 そのデータ モデルがどのような場合に役立つかを説明します。
設計では、センサーまたはトランスポートのエンコード、ソフトウェアで使用されるデコードされたイベント表現、アルゴリズムに渡される表現の 3 つの形式を区別します。生のセンサー パケット、デコードされたイベントの配列、および蓄積されたイメージを含むファイルは、さまざまな目的を果たします。それらの間で変換を行うと、メモリ使用量、処理コスト、下流で利用可能なタイミング情報が変化する可能性があります。
| 表現 | 役に立つ | 統合に関する質問 |
|---|---|---|
| 生のパケットまたはベンダーの記録 | 取得およびデコード動作の再現 | 導入されたデコーダは、この正確なデバイスと形式のリビジョンを読み取ることができますか? |
| デコードされたイベント | フィルタリング、タイミング分析、イベントネイティブアルゴリズム | タイムスタンプの単位、クロックドメイン、座標の規則は何ですか? |
| 時間曲面またはボクセルのようなテンソル | 構造化された時間表現を必要とするアルゴリズム | どの履歴、ビニング、正規化設定を再現する必要がありますか? |
| 蓄積されたイベント画像 | 視覚化または互換性のある画像ベースの処理ステージ | 蓄積ウィンドウによってどの程度の遅延と情報損失が発生しますか? |
イベントカメラ SDK を評価する方法
正確なセンサー、カメラのファームウェア、ホスト プラットフォームから始めます。デスクトップ デモでは、埋め込み Linux イメージ、ARM プロセッサ、または製品ライセンスのサポートは確立されません。サポートされているオペレーティング システム、CPU アーキテクチャ、再配布条件、カメラ インターフェイスの要件については、サプライヤーに問い合わせてください。コンピューティング モジュールのベースボードをコミットする前に、対象のプラットフォームでアプリケーションを検証してください。
- 取得: デバイスの検出、構成、デコード、およびエラー報告。
- タイミング: タイムスタンプの起点、ロールオーバー処理、外部トリガー、およびマルチデバイスの調整。
- 再現性: 記録、設定のエクスポート、特定されたソフトウェア バージョン。
- 導入: ヘッドレス操作、サポートされているバイナリ、再起動動作、およびライセンス条項。
- 可観測性: イベント数、キューの深さ、ドロップされたデータ、ホスト リソースの使用状況。
明示的なタイミング境界を使用してパイプラインを構築する
取得を、高価な視覚化、ディスク書き込み、モデル推論とは切り離してください。そうしないと、処理速度の遅いコンシューマーによって、アルゴリズムが開始される前に新しいデータが遅延する可能性があります。制限付きキューと明示的なオーバーロード ポリシーを定義します。最も古いウィンドウを削除すること、対象領域を縮小すること、およびエラーで停止することは、異なる結果をもたらします。アプリケーションに適した動作を選択し、それが発生したときに記録します。
センサーのタイムスタンプを使用して観測がいつ行われたかを記述し、単調なホスト クロックを使用して処理時間を測定します。無関係なクロックからタイムスタンプを減算しても、有効なエンドツーエンドの遅延は生成されません。カメラを IMU または従来のカメラと組み合わせる必要がある場合は、当社のマニュアルで説明されているクロック関係とキャリブレーション プロセスを確立します。 センサーフュージョン同期ガイド.
小規模な記録検査の例
次の Python の例では、サポートされている記録内のデコードされたイベントをカウントし、そのタイムスタンプの範囲を報告します。文書化された Metavision ストリーミング API を使用し、互換性のある SDK のインストールと録画が必要です。これは検査例であり、ALVEXIS カメラのベンチマークや検出器ではありません。
import argparse
from metavision_sdk_stream import Camera, CameraStreamSlicer
parser = argparse.ArgumentParser()
parser.add_argument("recording")
args = parser.parse_args()
source = Camera.from_file(args.recording)
count, first_us, last_us = 0, None, None
for batch in CameraStreamSlicer(source.move()):
events = batch.events
if events.size:
start = int(events["t"][0])
end = int(events["t"][-1])
first_us = start if first_us is None else min(first_us, start)
last_us = end if last_us is None else max(last_us, end)
count += int(events.size)
span_s = 0.0 if first_us is None else (last_us - first_us) / 1_000_000
print({"events": count, "event_timestamp_span_s": span_s})
タイムスタンプの範囲は、最初から最後まで観察されたイベントをカバーします。ファイルの継続時間、取得遅延、処理スループットは測定されません。空の期間とクロックのリセットは、運用環境では個別に処理する必要があります。 2 人目のエンジニアが解釈を再現できるように、デバイス構成と記録メタデータをファイルと一緒に保管してください。
静かなシーン、混雑したシーン、障害回復を検証する
静止したシーン、代表的な動き、意図的に要求の厳しいシーンをテストします。ちらつき、カメラの振動、テクスチャの動きにより、非常に異なるイベント レートが発生する可能性があります。典型的な動作と観察した最悪のケースの両方を記録します。これらのワークロードはメモリと CPU 時間をめぐって競合するため、ストレージと通信をアクティブにして繰り返します。
| テスト | 記録 | 支持する決定 |
|---|---|---|
| 同じ録画を再生する | 構成、出力の違い、処理時間 | ソフトウェアの変更は再現可能に評価できますか? |
| シーンのアクティビティを増やす | キューの深さ、イベント損失、出力経過時間 | システムはピーク負荷下でも使用可能なままですか? |
| 処理ウィンドウを変更する | アプリケーションの精度とセンサーから出力までの遅延 | どのタイミング/詳細のトレードオフが要件に適合しますか? |
| デバイスを切断して再接続する | 回復時間、クロックのリセット、記録の継続性 | デプロイされたサービスは予想どおりに回復できますか? |
アルゴリズムがニューラル ネットワークを使用する場合、アクセラレータを選択する前に、結果のテンソルとサポートされる演算子を確認してください。イベント カメラは自動的に NPU を必要としません。また、NPU はイベント ストリームを自動的に受け入れません。私たちの FPGA・NPU・MPUのアーキテクチャガイド 取得、前処理、推論、およびアプリケーションのサービスを分離します。
ソフトウェアスタックを選択する前の質問
一般的なコンピュータービジョンモデルを使用できますか?
互換性のある入力表現を定義し、その動作を検証した後でのみ。イベントを画像に蓄積すると、画像処理ステージを再利用できる可能性がありますが、データの分布が変化し、タイミング ウィンドウが追加されます。代表的なデータに基づいてアプリケーション全体を評価します。
動作するラップトップのデモは組み込み互換性を証明しますか?
いいえ。CPU アーキテクチャ、オペレーティング システム、センサー インターフェイス、ドライバー、SDK ライセンス、および実際のターゲット プラットフォームの継続的なリソース使用量を確認します。
統合に関するディスカッションには何を送信すればよいですか?
カメラまたはセンサーのリファレンス、サンプル記録、意図した出力、許容可能な遅延、ホスト プラットフォーム、インターフェイス、展開環境を送信します。これらの情報により、最初の統合リスクを特定するのに十分な具体的な議論が可能になります。
コンピューター ビジョン パイプラインにおけるニューロモーフィック ビジョン
イベント カメラは、出力記録が完全な画像の固定シーケンスではなく個々のピクセルで変化するため、ニューロモーフィック ビジョンの下で議論されることがよくあります。このデータ表現では、物体検出やニューラル ネットワークの結果が自動的に提供されるわけではありません。ソフトウェアには、定義されたタスク、互換性のあるアルゴリズム、および測定可能な許容基準が依然として必要です。
フレーム形式のコンピュータービジョンツールと統合する場合、イベントストリームを一定時間の画像などに変換できます。細かな時間情報が必要な用途では、元のタイムスタンプを保持してください。変換と処理の経路全体を評価する必要があります。再構成された画像の見栄えだけでは、最終アプリケーションの精度や遅延は確認できません。
技術参考資料
- Prophesee:PythonストリーミングAPI入門
- Prophesee:カメラとファイルからのイベント読み取り
- Gallego et al.: Event-based Vision — A Survey
ベンダーの例では、サポートされている独自のエコシステムについて説明します。選択したデバイスと展開の互換性とライセンスを確認します。
