3 ポイント 投稿者 GN⁺ 2024-06-26 | 1件のコメント | WhatsAppで共有

2ドルのマイクロコントローラで実現するSIMD高速化コンピュータビジョン

ESP32-S3の性能

  • ESP32-S3は、240MHzのデュアルコアCPUとWiFi、Bluetooth Low Energy無線を含む多様な周辺機能を備えた低価格マイクロコントローラである。
  • このチップは128ビットSIMD命令をサポートしており、これを活用すると性能を大きく向上できる。

SIMD高速化FASTコーナー検出器の実装

  • FASTコーナー検出器をSIMD命令で高速化し、QVGA(320x240)フレームを約6msで処理できるようになった。
  • これにより、リファレンス実装と比べて約2倍の性能を達成した。

アセンブリ言語とレジスタ割り当て器

  • ESP32-S3向けにアセンブリ言語を学び、チップの制約を乗り越えるために基本的なレジスタ割り当て器(basm)を作成した。
  • SIMD命令を使って16個のピクセルを一度に処理する関数を実装した。

ピクセルデータ処理

  • ピクセルデータを処理するために、中心ピクセルと周辺ピクセルの差を比較する処理を行った。
  • ESP32-S3の制約を克服するため、ピクセルデータを適切に変換する方法を考案した。

性能向上

  • SIMD高速化FASTコーナー検出器により、処理速度を約220%向上させた。
  • これにより、ESP32-S3で30fpsのVGAストリームをリアルタイム処理できるようになった。

GN⁺の見解

  • ESP32-S3の実用性: ESP32-S3は低価格ながら高い性能を備えており、さまざまなIoTや組み込みシステムのプロジェクトで有用である。
  • SIMD命令の重要性: SIMD命令を活用すれば、低性能なハードウェアでも高い性能を実現できる。
  • アセンブリ言語学習: アセンブリ言語を学ぶことで、ハードウェアの詳細な動作を理解し、最適化する力を養える。
  • 制約の克服: ハードウェアの制約を乗り越える過程で、創造的な問題解決能力を伸ばせる。
  • リアルタイムコンピュータビジョン: 低コストのマイクロコントローラでも、リアルタイムのコンピュータビジョン処理を実行できる可能性を示している。

1件のコメント

 
GN⁺ 2024-06-26
Hacker Newsの意見
  • シリコンが平均的なコーヒーより安いのは素晴らしいことだ。もしかすると、チップが安すぎるのではなく、コーヒーが高すぎるのかもしれない。
  • ESP32-CAMボードは実用的なコンピュータビジョンプロジェクトを支援する。
  • 興味があるなら、Edge Impulseの製品を確認してみることを勧める。
  • Edge Impulseはディープラーニング、コンピュータビジョン、DSP作業を最適化する。
  • TensorFlow、PyTorch、JAXのモデルをアップロードすると、最適化されたC++ライブラリを受け取れる。
  • Edge Impulseはさまざまな組み込みハードウェア向けのモデル学習スタジオを提供する。
  • ESP32-S3でのSIMDに関する短い記事も参考になる。
  • 複数のESP32を並列に使って、より高い解像度とフレームレートを処理できるのか気になる。
  • FAST特徴検出器をSIMDで高速化し、性能を220%向上させた。
  • ARMv7とARMv8にはオプションのSIMD命令セット拡張がある。
  • Orrin Nanoは40 TOPSを提供し、これはCopilot+に十分だ。
  • 赤外線を可視光に変換する方法が研究されている。
  • Raspberry Pi PicoでVGA/TVディスプレイを実装するPicoVGAライブラリがある。
  • RustでESP32コントローラを使うことが可能なのか気になる。
  • ESP32がVLIWスロットを持っているのか、より密結合な命令パッケージングが可能なのか気になる。
  • SIMDはその種の処理ではSMTより優れている。
  • より高価で優れたものを好む。Intel UpSquaredがある。