reComputer R2245へのViseronのデプロイ
reComputer R2245上でのViseron連続録画のベンチマークとHailo-8統合の検証。
概要
本プロジェクトは、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 |
| CPU | Quad-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 |
| Docker | Docker CE 29.7.2、Compose 5.4.0 |
| ネットワーク | Gigabit IPv4 LAN 上の ETH0; テスト中は他のインターフェースを無効化 |
| カメラ | H.264 ストリーム 1 台; 録画初期化ファイルで 1280×720 と報告 |
2. デプロイメント
2.1 録画ドライブが実際にマウントされていることを確認する
ディレクトリ名だけでドライブを識別してはいけません。
findmnt -T /mnt/nvme
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL
df -hT /mnt/nvmefindmnt が報告する SOURCE が /dev/nvme0n1p1 などの NVMe パーティションを指している場合にのみ、そのディレクトリを録画ドライブとして扱うべきです。NVMe ドライブが取り付けられていないかマウントされていない場合は、Docker にシステムドライブ上に同名のディレクトリを作成させる前に、連続録画を停止してください。
本番環境へのデプロイメントに関する推奨事項:
- 高耐久 NVMe SSD を
ext4でフォーマットして使用してください。 - UUID を使用してドライブを
/etc/fstabに追加してください。 - Viseron を起動する前に、正常にマウントされていることを確認してください。
- NVMe ドライブが存在しない場合に録画が eMMC にフォールバックしないように、サービスにマウント依存関係を追加してください。
- PostgreSQL データと Viseron 設定の両方を含む
/srv/viseron/configをバックアップしてください。
2.2 推奨 Compose ファイル
以下の Compose 設定は R2245 に適しています。イメージタグは回帰テストに合格した固定バージョンに置き換えてください。Hailo デバイスのマッピングは、HailoRT のバージョンが一致する場合にのみ有効です。
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サービスを起動して確認します:
cd /srv/viseron
docker compose up -d
docker compose logs --tail=200Web インターフェースを開く:
http://DEVICE_IP:88882.3 推奨カメラ設定
カメラの認証情報は secrets.yaml を使用して保存してください。
# secrets.yaml
camera_host: 192.168.10.101
camera_username: admin
camera_password: "REPLACE_WITH_THE_ACTUAL_PASSWORD"# 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 に相当します。この結果は現在のカメラストリームにのみ適用されます。実際のストレージ要件は、すべてのカメラの合計ビットレートから計算する必要があります。
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 の設定は次のとおりです。
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:デバイスもコンテナにマッピングする必要があります。
devices:
- /dev/hailo0:/dev/hailo0公式 Viseron ドキュメントは、そのコンテナが現在 HailoRT 4.22.0 を使用しており、他のホストドライババージョンは互換性がない可能性があると明示的に警告しています。結果として発生するエラーの例:
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 detector5. Viseron vs. Frigate
| Category | Viseron | Frigate |
|---|---|---|
| オープンソースライセンス | MIT | MIT |
| 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 Assistant | MQTT 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 コンテナを維持したくない。