Parker Hu2026-08-25

reComputer R2245へのViseronのデプロイ

reComputer R2245上でのViseron連続録画のベンチマークとHailo-8統合の検証。

ViseronNVRHailo-8Other

概要

本プロジェクトは、4GB Raspberry Pi CM5、64ビット Debian 13、Hailo-8 AI アクセラレータを搭載した reComputer R2245 で実施されました。Viseron 3.5.3 コンテナは約 9 日間連続稼働していました。1 台の 1280×720 H.264 カメラで連続録画が可能であり、Viseron の Web インターフェースもアクセス可能な状態を維持しました。Darknet が 1 FPS で継続的に検出を実行している状態で、コンテナの CPU 使用率は約 50.7%、全プロセスの合計 RSS は約 1.11GiB、CM5 の温度は約 40.6°C~42.8°C の範囲でした。

Hailo-8 ハードウェア自体は正常に動作しました。YOLOv8s HEF モデルを用いた 5 秒間のランダム入力テストでは、503 フレームを処理し、約 100.6 FPS に相当し、ハードウェアレイテンシは 6.66ms でした。Hailo チップの平均温度は 29.55°C で、CM5 にサーマルスロットリングは発生しませんでした。

1. テスト環境

1.1 ハードウェアとシステム

項目テストデバイスでの結果
デバイスSeeed Studio reComputer R2245、ホスト名 reComputer-R22
コンピュートモジュールRaspberry Pi Compute Module 5 Rev 1.0
CPUQuad-core Arm Cortex-A76、最大 2.4GHz
メモリ4.0GiB
オペレーティングシステムDebian GNU/Linux 13.2 (trixie)、ARM64
カーネル6.12.62+rpt-rpi-2712
システムストレージ29.1GB eMMC; テスト時点で 66% 使用、約 9.3GB 使用可能
AI アクセラレータHailo-8 M.2、デバイスノード /dev/hailo0
HailoRT/ドライバ/ファームウェア4.23.0 / 4.23.0 / 4.23.0
DockerDocker CE 29.7.2、Compose 5.4.0
ネットワークGigabit IPv4 LAN 上の ETH0; テスト中は他のインターフェースを無効化
カメラH.264 ストリーム 1 台; 録画初期化ファイルで 1280×720 と報告

2. デプロイメント

2.1 録画ドライブが実際にマウントされていることを確認する

ディレクトリ名だけでドライブを識別してはいけません。

bash
findmnt -T /mnt/nvme
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL
df -hT /mnt/nvme

findmnt が報告する SOURCE/dev/nvme0n1p1 などの NVMe パーティションを指している場合にのみ、そのディレクトリを録画ドライブとして扱うべきです。NVMe ドライブが取り付けられていないかマウントされていない場合は、Docker にシステムドライブ上に同名のディレクトリを作成させる前に、連続録画を停止してください。

本番環境へのデプロイメントに関する推奨事項:

  1. 高耐久 NVMe SSD を ext4 でフォーマットして使用してください。
  2. UUID を使用してドライブを /etc/fstab に追加してください。
  3. Viseron を起動する前に、正常にマウントされていることを確認してください。
  4. NVMe ドライブが存在しない場合に録画が eMMC にフォールバックしないように、サービスにマウント依存関係を追加してください。
  5. PostgreSQL データと Viseron 設定の両方を含む /srv/viseron/config をバックアップしてください。

2.2 推奨 Compose ファイル

以下の Compose 設定は R2245 に適しています。イメージタグは回帰テストに合格した固定バージョンに置き換えてください。Hailo デバイスのマッピングは、HailoRT のバージョンが一致する場合にのみ有効です。

yaml
services:
  viseron:
    image: roflcoopter/viseron:3.5.3
    container_name: viseron
    restart: unless-stopped
    shm_size: "1024mb"
    ports:
      - "8888:8888"
    volumes:
      - /srv/viseron/config:/config
      - /mnt/nvme/viseron/segments:/segments
      - /mnt/nvme/viseron/snapshots:/snapshots
      - /mnt/nvme/viseron/thumbnails:/thumbnails
      - /mnt/nvme/viseron/event_clips:/event_clips
      - /mnt/nvme/viseron/timelapse:/timelapse
      - /etc/localtime:/etc/localtime:ro
    # Enable this only after aligning the HailoRT version.
    # Viseron requires version 4.22.0.
    # devices:
    #   - /dev/hailo0:/dev/hailo0

サービスを起動して確認します:

bash
cd /srv/viseron
docker compose up -d
docker compose logs --tail=200

Web インターフェースを開く:

text
http://DEVICE_IP:8888

2.3 推奨カメラ設定

カメラの認証情報は secrets.yaml を使用して保存してください。

yaml
# secrets.yaml
camera_host: 192.168.10.101
camera_username: admin
camera_password: "REPLACE_WITH_THE_ACTUAL_PASSWORD"
yaml
# config.yaml
ffmpeg:
  camera:
    camera_1:
      name: Front Gate
      host: !secret camera_host
      port: 554
      path: /Streaming/Channels/101/
      username: !secret camera_username
      password: !secret camera_password
      substream:
        port: 554
        path: /Streaming/Channels/102/
        stream_format: rtsp

mog2:
  motion_detector:
    cameras:
      camera_1:
        fps: 2

darknet:
  object_detector:
    cameras:
      camera_1:
        fps: 1
        scan_on_motion_only: true
        labels:
          - label: person
            confidence: 0.75
            trigger_event_recording: true

nvr:
  camera_1:

メインストリームを直接コピー録画に使用し、低解像度のサブストリームをデコードおよび検出に使用することは、CM5 にとって最も効果的な最適化の 1 つです。Hailo はニューラルネットワーク推論のみを高速化し、H.264/H.265 ビデオデコードを代替するものではありません。

3. 単一カメラ録画とリソーステスト

3.1 テスト条件

  • H.264 カメラ 1 ストリーム
  • 録画初期化ファイルで 1280×720 と報告
  • FFmpeg は -c:v copy を使用して fMP4 セグメントを書き込み、再エンコードなし
  • Darknet 物体検出を 1 FPS で実行
  • scan_on_motion_only: false、つまり動きがない場合でも推論を継続
  • 約 2 秒間隔で 5 サンプルを連続取得
  • マルチカメラブラウザプレビューや同時再生はなし

3.2 結果

メトリクス測定結果
平均 Viseron コンテナ CPU 使用率50.66%
5 サンプル間の CPU 範囲49.78%–51.94%
コンテナ内プロセスの合計 RSS約 1140.5MiB
プロセス数158–159
CM5 温度40.6–42.8°C
スロットリング/低電圧フラグ0x0
短期録画データレート約 4.259Mbps
推定 1 日あたりの録画容量約 46.0GB/日
LAN 経由の Web ホームページ応答10 リクエスト平均 39.29ms

Docker の CPU 値 50% は、約 1 つの CPU コアの半分に相当します。

録画ディレクトリは 15 秒で 7,986,412 バイト増加し、約 4.259Mbps に相当します。この結果は現在のカメラストリームにのみ適用されます。実際のストレージ要件は、すべてのカメラの合計ビットレートから計算する必要があります。

text
Daily storage (GB) ≈ Total bit rate (Mbps) × 10.8

利用可能なストレージが 10GB の場合、現在の単一カメラのビットレートでは、クリーンアップポリシーが適用されなければ、追加録画用の領域は約 5 時間分しかありません。したがって、カメラを追加する前に NVMe ドライブを取り付けて検証する必要があります。

3.3 ユーザーエクスペリエンス

テスト中、Web ホームページは HTTP 200 を返し、カメラ録画セグメントは増加し続け、有効な物体検出スナップショットが生成されました。Viseron のコンポーネントベースの設定により、カメラ、検出器、録画、ストレージポリシーを独立して組み合わせることが可能で、YAML に慣れたユーザーに適しています。

4. Hailo-8 テストと Viseron 統合

4.1 スタンドアロンハードウェアテスト

ホストは Hailo-8 を正常に検出しました。システム提供の yolov8s_h8.hef モデルを使用して 5 秒間の推論テストを実施しました。

メトリクス測定結果
処理フレーム数503
等価スループット約 100.6 FPS
ハードウェアレイテンシ6.66ms
Hailo 最低温度29.02°C
Hailo 平均温度29.55°C
Hailo 最高温度29.68°C
テスト前後の CM5 温度40.6°C / 44.4°C
CM5 スロットリングフラグ0x0

4.2 公式 Viseron 方式を使用した Hailo-8 統合

期待される Viseron の設定は次のとおりです。

yaml
hailo:
  object_detector:
    cameras:
      camera_1:
        fps: 1
        scan_on_motion_only: true
        labels:
          - label: person
            confidence: 0.75
            trigger_event_recording: true

nvr:
  camera_1:

デバイスもコンテナにマッピングする必要があります。

yaml
devices:
  - /dev/hailo0:/dev/hailo0

公式 Viseron ドキュメントは、そのコンテナが現在 HailoRT 4.22.0 を使用しており、他のホストドライババージョンは互換性がない可能性があると明示的に警告しています。結果として発生するエラーの例:

text
Driver version (4.23.0) is different from library version (4.22.0)
HAILO_INVALID_DRIVER_VERSION(76)
Failed to detect Hailo architecture
Failed to start Hailo 8 detector

5. Viseron vs. Frigate

CategoryViseronFrigate
オープンソースライセンスMITMIT
ARM64 Docker サポートマルチアーキテクチャイメージに対応ARM64 に対応、Raspberry Pi 向けビルドを含む
構成モデルカメラ、動体検知、物体検出、NVR、ストレージなどを自由に組み合わせ可能カメラ、検出、トラッキング、Review、録画を中心に構成
連続/イベント録画サポート、柔軟な階層化ストレージサポート、シンプルな保持ポリシー
物体検出Hailo、Coral、Darknet、Ultralytics、外部サービスなどHailo、Coral、ONNX、OpenVINO、TensorRT など
本デバイス上の Hailo-8 状況コンテナ 4.22 がホスト 4.23 と競合し、現在使用不可Seeed が R2000/Hailo のリファレンスチュートリアルを提供;実際のバージョンは要確認
物体トラッキング検出イベント周辺を録画可能だが、トラッキングは最も得意な機能ではないトラッキングと Review はワークフローの中核
音声検出主要機能ではない内蔵オーディオイベント検出
ストレージ独立したイベントと連続録画の制御を備えた複数階層連続、動き、アラート、検出録画の明確な保持ポリシー
Home AssistantMQTT Discovery 経由で利用可能より成熟した統合とコミュニティリソース
学習曲線高い、柔軟なコンポーネント構成中程度、より統一された導入パス
最適なユーザーカスタム検出パイプラインとストレージポリシーを求めるユーザートラッキング、Review、Home Assistant、確立されたデプロイ例を優先するユーザー

Viseron の主な利点は、そのオープン性と組み合わせやすさです。例えば、MOG2 で動きを最初にフィルタリングし、Hailo で物体検出を実行し、後処理や MQTT で結果を処理できます。ストレージ階層も、最近の連続録画を NVMe に保持し、長期イベントを NAS にアーカイブするようなアーキテクチャをサポートします。

Frigate の利点は、検出、トラッキング、Review、Home Assistant がより完全な製品ワークフローを形成していることです。Viseron のコンポーネントを試すよりも、R2245 で Hailo-8 をできるだけ早くデプロイすることが目的であれば、Frigate が現在より安全なデフォルトの選択肢です。

6. 推奨事項

Viseron を選択する場合

  • 1〜4 台のカメラで小規模システムを構築し、主にローカル録画を予定している。
  • Docker、YAML、RTSP、基本的な Linux 管理に慣れている。
  • 階層化ストレージと柔軟なコンポーネント構成を重視している。
  • Hailo のバージョンが揃うのを待つ間、動体検知または CPU ベースの検出から始められる。
  • ログを通じてカメラパス、依存関係、ドライバをトラブルシューティングする意欲がある。

現在 Frigate がより良い選択肢である場合

  • Hailo-8 を直ちに物体検出に使用する必要がある。
  • Home Assistant に大きく依存している。
  • 物体トラッキング、Review、オーディオイベントが優先度が高い。
  • Seeed の既存の R2000 デプロイチュートリアルに従いたい。
  • カスタム HailoRT コンテナを維持したくない。