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 の特徴層に対応
  • パフォーマンス最適化:アンカーポイントと静的重みを事前計算
  • CPU 互換モード:開発環境向けの模擬検出に対応

技術的特徴:

  • DFL(Distribution Focal Loss)によるバウンディングボックス回帰
  • マルチスケール特徴ピラミッドによる検出
  • 効率的な 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. アンカーポイントのマッピング:事前計算したアンカーポイントで座標変換
  5. 結果の統合:マルチスケールの検出結果の統合と NMS 処理

ライブストリーミングの流れ

  1. フレーム生成ループ:フレーム取得と検出を継続的に繰り返す
  2. 検出とレンダリング:各フレームで幾何形状検出と結果描画を実行
  3. 計測システム:座標軸、距離計測、サイズ表示を追加
  4. 多色表示:物体のクラスに応じて異なる色の検出枠を使用
  5. JPEG エンコード:設定可能な品質パラメータでフレームをエンコード
  6. マルチパートストリーム:MJPEG マルチパート 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] 
    └── 数值标注
    ↓
集成显示