HumansXドキュメントセンター 公式サイトへ ↗

YOLO11物体検出システム -- システムアーキテクチャ設計

概要

YOLO11幾何形状検出システムは、Flask をベースとしたリアルタイム幾何形状検出 Web アプリケーションです。Horizon RDK-X5 プラットフォーム向けに最適化されており、BPU によるハードウェアアクセラレーションに対応しています。本システムはモダンな階層型アーキテクチャを採用し、YOLO11 モデル推論、Web インターフェース、カメラ管理を効果的に分離して、高性能なリアルタイム幾何形状検出と計測サービスを提供します。

​🏗️ システムアーキテクチャ

全体アーキテクチャ図

+-------------------+
|   Web浏览器前端   |
+-------------------+
         |
   HTTP/WebSocket
         |
+-------------------+
|   Flask服务器     |
+-------------------+
         |
   +-----+-----+
   |           |
   |  主应用   |<---> 配置管理
   |  main.py  |
   +-----------+
         |
    +----+----+
    |         |
    | 物体检测 | 摄像头管理
    | 模块    | 模块
    +----+----+
         |
   +-----+-----+
   |           |
   | YOLO推理  | 地平线BPU
   | 引擎      | 硬件加速
   +-----------+
         |
   +-----+-----+
   |           |
   | 测量系统  | 几何计算
   | 模块      | 模块
   +-----------+

🔧 コアコンポーネント

1. メインアプリケーション (main.py)

  • FastAPI アプリケーションのエントリポイント: HTTP API と映像ストリームサービスを提供
  • ライフサイクル管理: アプリケーションの起動、初期化、終了の流れを管理
  • ルーティング管理: REST API と静的ファイルの配信を処理
  • リアルタイム映像ストリーム: MJPEG 形式のリアルタイム映像ストリームを生成
  • システム監視: ヘルスチェックと統計情報のインターフェースを提供

主な機能:

  • REST API エンドポイント:/api/health、/api/stats、/api/info、/api/settings
  • 映像ストリームエンドポイント:/video_feed MJPEG リアルタイム映像ストリーム
  • 静的ファイル配信:Web インターフェースのリソース
  • ライフサイクル管理:グローバルリソースの初期化とクリーンアップ

2. 物体検出モジュール (app/object_detector.py)

  • 検出器ラッパー: 統一された幾何形状検出インターフェースを提供
  • 結果処理: 物体の境界ボックス、信頼度、クラスの処理
  • 描画機能: 検出結果の可視化レンダリング、複数色表示に対応
  • 統計監視: 検出性能と精度の統計
  • エラー処理: 充実した例外処理とフォールバック機構

特長:

  • 信頼度と IOU しきい値を調整可能
  • 複数物体の検出に対応(オレンジ、緑、赤)
  • リアルタイムの統計情報収集
  • 柔軟な可視化オプション
  • 中心点の計算と最大物体の識別

3. YOLO 推論エンジン (utils/yolo_shape_detector.py)

  • YOLO11 モデル推論: Horizon BPU による効率的な推論
  • 後処理アルゴリズム: DFL デコード、NMS、座標変換
  • マルチスケール検出: 40x40、20x20、10x10 の 3 つの特徴層に対応
  • パフォーマンス最適化: anchor 点と静的重みの事前計算
  • CPU 互換モード: 開発環境向けのシミュレーション検出に対応

技術的特長:

  • DFL (Distribution Focal Loss) による境界ボックス回帰
  • 3 スケールの特徴ピラミッド検出
  • 効率的な NMS(非最大値抑制)
  • BPU 向けに最適化された NV12 入力形式
  • 幾何形状に特化した検出最適化に対応

4. 基本モデルクラス (utils/base_model.py)

  • ハードウェア抽象化層: 統一されたモデル推論インターフェース
  • プラットフォーム適応: RDK-X5 BPU と CPU モードに自動適応
  • 形式変換: BGR から NV12 への色空間変換
  • リソース管理: モデルの読み込みとメモリ管理
  • パフォーマンス監視: 推論時間とリソース使用量の統計

対応機能:

  • プラットフォームの自動検出(hobot_dnn と CPU シミュレーション)
  • メモリプールの管理と再利用
  • 入力前処理パイプライン
  • 出力形式の標準化

5. カメラ管理 (app/camera_manager.py)

  • カメラ制御: OpenCV カメラインターフェースのラッパー
  • 非同期取得: マルチスレッドによる非同期フレーム取得に対応
  • 形式適応: 複数の解像度とフレームレートに対応
  • バッファ管理: フレームのバッファリングとフレーム落ちの処理
  • 状態監視: カメラの稼働状態の検出

特長:

  • デバイス ID、解像度、フレームレートを設定可能
  • 非同期取得スレッドにより遅延を低減
  • フレーム統計とパフォーマンス監視
  • 自動再接続とエラー回復

6. 設定管理 (config/)

  • YAML 設定: object_config.yaml メイン設定ファイル
  • 環境変数による上書き: 環境変数による動的設定に対応
  • 設定の検証: 起動時のパラメータ有効性チェック
  • ホットアップデート: 実行時の設定変更に対応
  • 複数環境対応: 開発・テスト・本番環境の設定

設定の階層(優先度の高い順):

  1. 実行時の設定更新
  2. 環境変数
  3. YAML 設定ファイル
  4. コードのデフォルト値

特殊な設定:

  • 検出クラスの設定:オレンジ・緑・赤の 3 種類の幾何形状に対応
  • 計測システムの設定:座標系、距離計測、寸法計測
  • 可視化の設定:複数色の検出枠、計測表示

7. 計測システム

  • 座標系: 基準となる座標軸とグリッドを表示
  • 距離計測: 物体間のピクセル距離を計算
  • 寸法計測: 物体の境界ボックスの寸法を計測
  • 幾何計算: 物体の中心点と面積を計算
  • 可視化表示: 計測結果をグラフィカルに表示

計測機能:

  • 座標軸表示の有効化/無効化
  • 物体間距離の計算と表示
  • 物体の寸法(幅、高さ、面積)の計算
  • 相対位置と比率の計測
  • 計測結果の色分け表示

8. Web インターフェース (static/ & templates/)

  • レスポンシブデザイン: デスクトップとモバイルデバイスに対応
  • リアルタイム映像: MJPEG ストリームプレーヤー
  • パラメータ制御: 検出パラメータをリアルタイムで調整
  • 統計表示: パフォーマンス指標の可視化
  • 状態監視: システムの稼働状態を表示

フロントエンド技術:

  • HTML5 Video/Canvas API
  • JavaScript ES6+ によるネイティブ開発
  • CSS3 レスポンシブレイアウト
  • WebSocket によるリアルタイム通信

特色ある機能:

  • 複数色の物体検出結果の表示
  • 計測システムの可視化制御
  • 統計情報のリアルタイム更新

🔄 データフロー

検出処理の流れ

  1. カメラによる取得: CameraManager が映像フレームを取得
  2. 形式変換: BGR を NV12 形式に変換し、BPU 入力に適合
  3. モデル推論: YOLO11 モデルが BPU 上で推論を実行
  4. 後処理デコード: DFL デコード、信頼度フィルタリング、NMS 処理
  5. クラス分類: オレンジ・緑・赤の幾何形状を識別
  6. 座標変換: 検出枠の座標を元画像に復元
  7. 計測計算: 物体の中心点、寸法、距離を計算
  8. 結果のレンダリング: 複数色の検出枠、計測情報、統計データを描画
  9. 映像ストリーム出力: MJPEG 形式でエンコードし Web 側へ配信

マルチスケール検出の流れ

  1. 特徴抽出: YOLO11 のバックボーンネットワークでマルチスケール特徴を抽出
  2. 3 層の検出ヘッド:
  • 小物体の検出:40x40 特徴マップ、stride=8
  • 中程度の物体:20x20 特徴マップ、stride=16
  • 大物体の検出:10x10 特徴マップ、stride=32
  1. DFL 回帰: Distribution Focal Loss による境界ボックス回帰
  2. 分類予測: マルチクラス分類(オレンジ、緑、赤)
  3. 信頼度計算: Sigmoid 活性化関数で対象の信頼度を計算
  4. anchor 点のマッピング: 事前計算した anchor 点で座標変換
  5. 結果の統合: マルチスケール検出結果の統合と NMS 処理

リアルタイムストリーミングの流れ

  1. フレーム生成ループ: フレーム取得と検出を継続的に繰り返すループ
  2. 検出とレンダリング: 各フレームで幾何形状検出と結果描画を実行
  3. 計測システム: 座標軸、距離計測、寸法表示を追加
  4. 複数色表示: 物体のクラスに応じて異なる色の検出枠を使用
  5. JPEG エンコード: 設定可能な画質パラメータでフレームをエンコード
  6. Multipart ストリーム: MJPEG multipart HTTP レスポンスを生成
  7. フレームレート制御: 設定に応じて出力フレームレートを制御
  8. クライアント再生: ブラウザ側でリアルタイムに映像を再生

計測システムのデータフロー

  1. 検出結果の入力: 物体検出の境界ボックスと分類結果を受け取る
  2. 中心点の計算: 各物体の幾何学的中心点を計算
  3. 距離計測: 物体間のユークリッド距離を計算
  4. 寸法計算: 物体の幅、高さ、面積を計算
  5. 座標系の描画: 画像上に基準となる座標軸を描画
  6. 計測の可視化: 距離線、寸法表示、数値を描画
  7. 結果の出力: 計測結果を映像ストリームに統合

🛠️ 技術スタック

バックエンド技術

  • Web フレームワーク: FastAPI - 高性能な非同期 Web フレームワーク
  • コンピュータビジョン: OpenCV - 画像処理とカメラ制御
  • 科学計算: NumPy、SciPy - 数値計算と後処理アルゴリズム
  • AI 推論: hobot_dnn - Horizon BPU 推論エンジン
  • 設定管理: PyYAML - YAML 設定ファイルの解析
  • ログ記録: Python logging - 構造化ログシステム

AI/ML 技術

  • 深層学習モデル: YOLO11 - 最新の物体検出アルゴリズム
  • ハードウェアアクセラレーション: Horizon RDK-X5 BPU - AI 推論専用チップ
  • 後処理アルゴリズム: DFL、NMS、Sigmoid - 検出結果の最適化
  • マルチスケール検出: FPN 特徴ピラミッド - さまざまなサイズの物体検出
  • 量子化最適化: INT8 量子化 - BPU による効率的な推論
  • 幾何形状認識: 専用に学習させた色・形状分類モデル

フロントエンド技術

  • HTML5: モダンな Web 標準、Canvas および Video API
  • JavaScript ES6+: ネイティブ JavaScript、追加フレームワークへの依存なし
  • CSS3: レスポンシブデザイン、Flexbox レイアウト
  • MJPEG ストリーム: リアルタイム映像ストリーム再生技術

計測計算技術

  • 幾何計算: ユークリッド距離、面積の計算
  • 座標変換: ピクセル座標から実座標へのマッピング
  • 可視化レンダリング: OpenCV のグラフィック描画機能
  • データ統計: リアルタイム計測データの統計分析

🚀 デプロイアーキテクチャ

Horizon RDK-X5 へのデプロイ

用户浏览器
    ↓ HTTP/MJPEG
FastAPI Web服务 (端口8004)
    ↓
Python应用层
    ↓
hobot_dnn推理引擎
    ↓
地平线RDK-X5 BPU芯片
    ↓
USB/CSI摄像头硬件

性能の特長:

  • BPU ハードウェアアクセラレーション、推論時間 < 20ms
  • リアルタイム 30FPS の映像処理に対応
  • 消費電力を最適化し、エッジでのデプロイに最適
  • 複数物体の同時検出と計測

開発環境へのデプロイ

开发机浏览器
    ↓ HTTP/MJPEG  
FastAPI开发服务器
    ↓
CPU模拟检测
    ↓
OpenCV摄像头接口
    ↓
本地摄像头设备

機能の特長:

  • CPU シミュレーション検出、機能は完全
  • ホットリロード開発モード
  • デバッグログとパフォーマンス分析

🎨 幾何形状検出の特色

複数色検出アーキテクチャ

输入图像
    ↓
YOLO11特征提取
    ↓
多类别分类头
    ├── 橙色分支 → 橙色边界框 [0, 165, 255]
    ├── 绿色分支 → 绿色边界框 [0, 255, 0]
    └── 红色分支 → 红色边界框 [0, 0, 255]
    ↓
NMS处理 (按类别)
    ↓
最终检测结果

計測システムアーキテクチャ

检测结果
    ↓
几何计算模块
    ├── 中心点计算
    ├── 距离测量 → 物体间距离
    ├── 尺寸测量 → 宽度/高度/面积
    └── 坐标系统 → 参考坐标轴
    ↓
可视化渲染
    ├── 坐标轴绘制 [255, 255, 255]
    ├── 测量线绘制 [255, 255, 0] 
    └── 数值标注
    ↓
集成显示