RK3588S上でのリアルタイムYOLOv8n UAV検出

RK3588Sにおける高スループット・エッジ推論

Rockchip RK3588S SoCの3つのNPUコアを並列に活用することで、khadas_yolov8n_multithread パイプラインはYOLOv8nの推論スループットを約31 FPSから46 FPSに向上させ、OS08A10 MIPIカメラセンサーの46 FPSという上限を効果的に飽和させています。この実装により、ソフトウェア・パイプラインではなく、ハードウェア・センサーがリアルタイムUAV検出の主要なボトルネックとなるようになります。

完全なハードウェア加速とメモリ効率

すべての重いフレームごとの操作を固定機能シリコンにオフロードすることで、パイプラインは単一の1080pストリームに対して約137–152 MB RSS、(デュアルストリームの場合は276–304 MB)という、平坦で制限されたメモリフットプリントを実現しています。これにより、CPU上での大規模な中間フレームバッファやスクラッチテンソルの必要性が排除されます。

ハードウェア・オフロード・マッピング:

  • Capture: Image Signal Processor (ISP) によって処理されます。
  • Color-convert/Resize: Rockchip RGA (Raster Graphic Acceleration) ブロックによって処理されます。
  • Inference: NPU によって処理されます。

この低いメモリプロファイルを維持するために、システムはフレームごとにメモリを割り当てるのではなく、再利用される事前割り当てバッファの固定プール (BufPool) を使用しています。この効率性により、パイプラインはわずか2 GBのRAMを備えたエントリーレベルのRK3588Sボード上で動作可能です。

構成可能なマルチプロセス・アーキテクチャ

ソフトウェアは、Unix-domain socketsを介して接続された独立したOSプロセスの連鎖として設計されており、モジュール式でスケーラブルなデータフローを可能にします。検出結果は以下のステージを経て流れます:

  1. Detection: 主要なYOLOv8nパイプライン。
  2. Tracking: マルチオブジェクト・トラッキングのためのByteTrackステージ(別プロセスとして実装)。
  3. Temporal Features: 時間的特徴を抽出し、トラック履歴を管理するプロセス。
  4. Presence FSM: オブジェクトの存在を監視する有限状態機械 (FSM)。
  5. LLM Summary: Qwen2.5-0.5Bモデルによって生成される、オンデマンドの自然言語評価。

LLMのためのNPUリソース管理

NPUは共有リソースであるため、システムは blackout/resume コントロールプレーンを実装しています。自然言語の要約が必要な場合、カメラパイプラインは一時的に停止され、Qwen2.5-0.5B LLMのためにNPU全体が解放されます。これにより、要約がフルスピードで生成された後、制御がビジョン・パイプラインに返されます。

技術的実装とデプロイメント

このプロジェクトはKhadas Edge2で開発およびテストされており、RK3588Sハードウェア上のあらゆるaarch64 Linux環境をサポートしています。

ビルド・オプション

  • Native Build: build.sh を使用してボード上で直接コンパイル可能です。
  • Cross-Compilation: 提供されるCMakeツールチェーンを使用して、gcc-aarch64-linux-gnu および g++-aarch64-linux-gnu を介してx86-64/WSL環境をサポートしています。

依存関係

  • RKNN Runtime: librknnrt v2.3.2
  • RGA Library: librga v1.10.5_[8]

コミュニティの洞察と議論

プロジェクトはマルチスレッディングを通じて大幅なパフォーマンス向上を示していますが、一部のコミュニティ・メンバーは、バッチ処理と比較した際のアプローチに疑問を呈しています。

"More slop again. The way to get more throughput is to bump batch size, not to try and 'multithread' job submits to the NPU as if its a CPU."

これに対し、著者は、主な目的は、可能な限り多くの作業をCPUから切り離すことで、RK3588Sビジョン・パイプラインの限界を調査することであったと説明しました。3スレッドの推論プールは、NPUコアごとに1つのRKNNコンテキスト (rknn_dup_context + rknn_set_core_mask) を利用しており、センサーの最大能力までスループットを向上させることに成功しています。

プロジェクト・エコシステム

このプロジェクトは、Rockchip NPUのためのより広範なツールスイートの一部です:

  • RKNN_TRAIN_YOLO: YOLOモデルを .rknn 形式にエクスポートおよびトレーニングするためのパイプライン。
  • RKLLM_LLAMA_QWEN: RKLLM (NPU) または llama.cpp (CPU) を使用して、RK3588S上で最適化されたLLMモデルを実行するためのパイプライン。

Sources