Frigate NVRをセルフホスト:HomeLabのためのスマートAIカメラ監視

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

誤報にさよなら:よりスマートなホーム監視

家庭用防犯カメラを所有したことがある人なら、誰しも経験があるでしょう。夜中の3時に蛾がレンズのすぐ近くを横切っただけで、スマホが通知で鳴り響くのです。従来の動体検知は、驚くほど融通が利きません。泥棒と、ポーチを横切る濡れた落ち葉の区別がつかないのです。私自身、毎日200件もの「幽霊」通知をスマホから消去し続けた結果、HomeLabにはビデオを処理するためのよりインテリジェントな方法が必要だと気づきました。

Frigate NVRは、実際に何が映っているかを理解するローカルAIオブジェクト検出を実行することで、この状況を一変させます。風が吹くたびに通知を送るのではなく、ポーチにいる「人」や庭にいる「犬」を識別します。すべての処理は自身のハードウェア上で行われるため、プライベートなビデオフィードがサードパーティのクラウドに送信されることはありません。

NVRの比較:最適な選択肢を見つける

ほとんどのホームセキュリティ設定は、3つのカテゴリーのいずれかに当てはまります。適切なものを選択することが、システムが役立つツールになるか、それとも絶え間ない悩みの種になるかを決定します。

クラウドベースのソリューション (Nest, Ring, Arlo)

これらは最も簡単に導入できますが、その利便性には代償が伴います。月額10ドル〜20ドルのサブスクリプション費用がかかるだけでなく、プライバシーも完全に失われます。インターネットが切断されれば、セキュリティ機能も停止します。多くのHomeLab愛好家にとって、玄関ドアのビデオを24時間365日巨大企業に送り続けることは、許容できない条件です。

従来のローカルNVR (Blue Iris, Shinobi)

Blue Irisのようなシステムは強力でデータをローカルに保持しますが、リソースを大量に消費します。Blue Irisには専用のWindowsマシンが必要で、ライセンス料も約70ドルかかります。堅牢ではありますが、これらのシステムはいまだにピクセル変化の検知に大きく依存しています。木々をマスクしたり、感度スライダーを調整したりするのに数週間を費やしても、雲が太陽を遮るたびに通知が届くという結果になりがちです。

AIネイティブなローカルNVR (Frigate)

Frigateは、リアルタイムのAIオブジェクト検出のために特別に構築されました。基本的な動きをトリガーとしてローカルAIチェックを行い、ユーザーに通知する前にオブジェクトのタイプを確認します。MQTTを介して通信するため、カメラをHome Assistantのためのリッチなデータセンサーに変えることができます。これにより、「未知の車両が私道に入ったときだけ、ポーチのライトを点滅させる」といった複雑な自動化が可能になります。

Frigate運用の現実

完璧なソフトウェアはありません. 6ヶ月間のテストを経た正直な評価を紹介します。

メリット

  • 真の信頼性: 一度調整すれば、誤報はほぼゼロになります。重要なことだけを知ることができます。
  • きめ細かな制御: 特定のゾーンを定義できます。歩道の通行人は追跡するが、芝生に足を踏み入れたときだけ記録する、といった設定が可能です。
  • スマートホームとの相乗効果: Home Assistantとの統合はクラス最高です。「人の検出」イベントを、物理的な人感センサーの動作と同じように扱えます。
  • リソースの効率化 ハードウェアアクセラレーションを使用することで、FrigateはCPUに過度な負荷をかけることなく、複数の4Kストリームを処理できます。

デメリット

  • ハードウェアの要件: AI検出は計算負荷が高い作業です。標準的なCPUで実行すると、負荷が90%以上に急増します。実質的にハードウェアアクセラレータが必要です。
  • 急な学習曲線: Frigateの設定用GUIは最小限です。作業のほとんどはYAML設定ファイルで行う必要があり、初心者には少し厳しいかもしれません。

理想的なハードウェア構成

Raspberry PiのCPUで5台のカメラのAI検出を行おうとしないでください。クラッシュする前に15秒ほどのラグが発生するでしょう。安定した運用環境のために、推奨されるハードウェア構成を以下に示します。

1. サーバー

整備済みのIntelベースのミニPC(OptiPlex 7050 Microなど)が標準的な選択肢です。eBayなどで130ドル以下で見つかることも多いです。第8世代以降のIntel CPUを探してください。内蔵のQuickSyncテクノロジーは、AMDやARMの同等品よりもはるかに効率的にビデオのデコードを処理します。

2. 決め手となるデバイス:Google Coral TPU

本格的なセットアップにおいて、この60〜90ドルのデバイスは譲れません. USBまたはM.2接続のGoogle Coral TPUが、オブジェクト検出の重い処理を担います。これにより、CPUでは100ms以上かかっていた推論時間が、驚異的な7msにまで短縮されます。このオフロードにより、サーバーは低温でレスポンスの良い状態を保つことができます。

3. カメラ

RTSPとデュアルストリーミングをサポートするカメラを選んでください。Frigateは、常時のAI分析には低解像度の「サブストリーム」(通常は640×480)を使用します。保存されたクリップやスナップショットにのみ高解像度の4Kストリームを使用するため、ネットワーク帯域幅を大幅に節約できます。

DockerによるFrigateのデプロイ

Dockerが準備できていることを前提として、コンテナを実行するための手順を説明します。

ステップ 1:環境の準備

mkdir -p ~/frigate/config ~/frigate/storage
cd ~/frigate

ステップ 2:Docker Composeの設定

この docker-compose.yml は、Intel GPUとUSB接続のCoral TPU向けに最適化されています。shm_size に注意してください。標準的なコンテナは64MBしか割り当てられませんが、高解像度のビデオバッファには不十分です。

version: "3.9"
services:
  frigate:
    container_name: frigate
    privileged: true
    restart: unless-stopped
    image: ghcr.io/blakeblackshear/frigate:stable
    shm_size: "256mb" 
    devices:
      - /dev/bus/usb:/dev/bus/usb
      - /dev/dri/renderD128:/dev/dri/renderD128
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./config:/config
      - ./storage:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "5000:5000"
      - "8554:8554"
    environment:
      FRIGATE_RTSP_PASSWORD: "強力なパスワードを設定してください"

ステップ 3:ロジックの定義 (config.yml)

config/config.yml を作成します。これがシステムの頭脳になります。プレースホルダーのIPアドレスを、実際のカメラのアドレスに置き換えてください。

mqtt:
  host: 192.168.1.50 # MosquittoブローカーのIPを指定してください

detectors:
  coral:
    type: edgetpu
    device: usb

cameras:
  front_porch:
    ffmpeg:
      inputs:
        - path: rtsp://admin:[email protected]:554/stream1
          roles: [record]
        - path: rtsp://admin:[email protected]:554/stream2
          roles: [detect]
    detect:
      enabled: True
      width: 640
      height: 480
      fps: 5
    objects:
      track: [person, dog, car]
    record:
      enabled: True
      retain:
        days: 7
        mode: motion

統合と結果

docker-compose up -d でスタックを起動します。http://[server-ip]:5000 にアクセスしてフィードを確認してください。Coralが正常に動作していれば、デバッグUIに10ms以下の検出速度が表示されるはずです。

本当の魔法は、HACS統合を介したHome Assistantで起こります。私のお気に入りの自動化は、午後11時以降に「人」が検出されたときだけポーチの照明を100%の明るさにし、近所の猫は完全に無視するというものです。セットアップにはYAML設定ファイルを扱う忍耐が必要ですが、その結果、あなたを邪魔するのではなく、あなたのために働くプロフェッショナルグレードのセキュリティシステムが手に入ります。

Share: