Frigate
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Seeed Odyssey を使用した FRIGATE NVR プロジェクト
Frigate NVR とは?

Frigate のショーケース画像は Frigate 公式サイト より
"Frigate はリアルタイム AI オブジェクト検出を中心に構築されたオープンソースの NVR です。すべての処理はローカルのハードウェア上で実行され、カメラフィードが自宅外に出ることはありません。" -- Frigate NVR
Frigate NVR は、セキュリティカメラにローカル処理された AI 機能を追加する、最も人気のあるネットワークビデオレコーダープロジェクトの 1 つです。そのため、クラウド推論サーバーに対する高額な料金を支払う必要がなくなるだけでなく、貴重なプライベートカメラストリームデータをインターネット上に公開する必要もありません。Frigate は、単一の Google Coral TPU を使用して 1 秒間に 100 以上のオブジェクト検出を処理できます。検出ゾーンやマスクをカスタマイズして使用ケースに合わせることができ、Home Assistant やその他のオートメーションプラットフォームに最小限の設定で統合することで、より多くのセキュリティ機能を提供し、貴重な資産にエッジ AI ソリューションを統合できます。
必要条件
- 1 x Odyssey Blue: Quad Core Celeron J4125 Mini PC with 128GB external SSD
- 1 x Coral USB Accelerator (オプション)
- RTSP カメラストリーム
- キーボードと HDMI ディスプレイ
Odyssey Blue が同じネットワークに接続されているか、RTSP ウェブカメラにアクセスできることを確認してください。
はじめに
このガイドでは、Seeed Studio の Odyssey Blue と Coral USB Accelerator を使用して、RTSP カメラストリームでローカル AI 検出を実行するための Frigate Docker 環境を設定する方法を説明します。Home Assistant アドオンのセットアップについては、続報をお待ちください!
STEP 1: Odyssey Blue に Debian 11 をインストールしていることを確認してください
Debian 11 OS イメージをダウンロードし、こちら のセットアップガイドに従って Odyssey Blue に Debian 11 オペレーティングシステムをインストールしてください。
STEP 2: Debian 11 に Docker Engine と Docker Compose をインストールしていることを確認してください
Debian に Docker Engine をインストールする ガイドに従って Docker Engine と Docker Compose をインストールしてください。
Docker が正常にインストールされているか確認するには:
ターミナルアプリを開き、以下のコマンドを入力してください:
docker -v
ターミナルに以下のような出力が表示されるはずです:

STEP 3: Frigate Docker ファイルを作成する
ターミナルアプリで以下のコマンドを入力して、vi テキストエディタを使用して Frigate Docker ファイルを作成します:
1 mkdir ~/Documents/frigate
2 cd ~/Documents/frigate
3 vi frigate.yml
frigate.yml ファイルに以下の行を挿入して Frigate Docker Compose のセットアップを行い、環境設定に応じて必要な部分を置き換えてください。
version: "3.9"
services:
frigate:
container_name: frigate
privileged: true # すべてのセットアップで必要ではない場合があります
restart: unless-stopped
image: blakeblackshear/frigate:stable-amd64
shm_size: "64mb" # 上記の計算に基づいてカメラに合わせて更新してください
devices:
- /dev/bus/usb:/dev/bus/usb # USB Coral を渡します。他のバージョンの場合は修正が必要です
- /dev/apex_0:/dev/apex_0 # PCIe Coral を渡します。ドライバの指示に従ってください https://coral.ai/docs/m2/get-started/#2a-on-linux
- /dev/dri/renderD128 # Intel ハードウェアアクセラレーション用。ハードウェアに合わせて更新が必要です
volumes:
- /etc/localtime:/etc/localtime:ro
- /path/to/your/config.yml:/config/config.yml:ro
- /path/to/your/storage:/media/frigate
- type: tmpfs # オプション: 1GB のメモリ。SSD/SD カードの摩耗を軽減します
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "5000:5000"
- "1935:1935" # RTMP フィード
environment:
FRIGATE_RTSP_PASSWORD: "password"
Frigate Docker Compose YAML セットアップオプションの詳細については、Frigate ドキュメントページ を参照してください。
私の場合、frigate.yml は次のようになります:
version: "3.7"
services:
frigate:
container_name: frigate
privileged: true # すべてのセットアップで必要ではない場合があります
restart: unless-stopped
image: blakeblackshear/frigate:stable-amd64
shm_size: "64mb" # 上記の計算に基づいてカメラに合わせて更新してください
devices:
- /dev/bus/usb:/dev/bus/usb # USB Coral を渡します。他のバージョンの場合は修正が必要です
- /dev/apex_0:/dev/apex_0 # PCIe Coral を渡します。ドライバの指示に従ってください https://coral.ai/docs/m2/get-started/#2a-on-linux
- /dev/dri/renderD128 # Intel ハードウェアアクセラレーション用。ハードウェアに合わせて更新が必要です
volumes:
- /etc/localtime:/etc/localtime:ro
- /home/seeed/Documents/frigate/config/config.yml:/config/config.yml:ro
- /home/seeed/Documents/frigate:/media/frigate
- type: tmpfs # オプション: 1GB のメモリ。SSD/SD カードの摩耗を軽減します
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "5000:5000"
- "1935:1935" # RTMP フィード
environment:
FRIGATE_RTSP_PASSWORD: "password"
STEP 4: Frigateの設定ファイルを作成する
ターミナルアプリで以下のコマンドを入力して設定フォルダを作成します:
1 cd ~/Documents/frigate
2 mkdir config/
3 cd config/
viテキストエディタを使用してFrigateの設定ファイルを作成するには、以下のコマンドを入力します:
1 vi config.yml
その後、Frigateを動作させるための最小構成を以下のようにコピーしてください:
mqtt:
host: mqtt.server.com # 有効なMQTTブローカーに置き換えてください
cameras:
back:
ffmpeg:
inputs:
- path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 # RTSPカメラのURLに置き換えてください
roles:
- detect
- rtmp
detect:
width: 1280
height: 720
すべての設定オプションについては、Frigateのドキュメントページのconfigurationセクションをご覧ください。
私の場合、以下の設定を自分の環境に合わせてカスタマイズしましたが、それ以外の設定はデフォルトのままにしています:
- MQTT: broker.hivemq.com
- Detector: Coral USB Accelerator
- Cameras: rtsp://192.168.8.34:8080/unicast
- トラッキング対象: person, cup (注: オブジェクトラベルのリストはFrigateのドキュメントページのObjectsセクションで確認できます)
- 録画: PersonまたはCupが検出された場合、検出の2秒前と2秒後の録画を行います。
そのため、私のconfig.yml
は以下のようになります:
mqtt:
host: broker.hivemq.com # テスト目的でHiveMQ MQTT Brokerを使用
detectors:
# 必須: デテクタの名前
coral:
# 必須: デテクタのタイプ
# 有効な値は 'edgetpu'(以下のdeviceプロパティが必要)および 'cpu'。
type: edgetpu
# オプション: デバイス名(詳細は https://coral.ai/docs/edgetpu/multiple-edgetpu/#using-the-tensorflow-lite-python-api を参照)
device: usb
# オプション: モデルの変更
model:
# オプション: モデルのパス(デフォルト: 自動設定)
path: /edgetpu_model.tflite
# オプション: ラベルマップのパス(デフォルト: 以下に示す)
labelmap_path: /labelmap.txt
# 必須: オブジェクト検出モデルの入力幅(デフォルト: 以下に示す)
width: 320
# 必須: オブジェクト検出モデルの入力高さ(デフォルト: 以下に示す)
height: 320
cameras:
back:
ffmpeg:
inputs:
- path: rtsp://192.168.8.34:8080/unicast
roles:
- detect
- rtmp
# オプション: 検出設定
# 注: カメラレベルで上書き可能
detect:
# オプション: 検出ロールを持つ入力フレームの幅(デフォルト: 以下に示す)
width: 800
# オプション: 検出ロールを持つ入力フレームの高さ(デフォルト: 以下に示す)
height: 600
# オプション: カメラの希望FPS(デフォルト: 以下に示す)
# 注: 推奨値は5。可能であればカメラのFPSを減らしてください。
fps: 8
# オプション: カメラの検出を有効化(デフォルト: True)
# この値はMQTTを介して設定可能で、起動時に保持された値に基づいて更新されます。
enabled: True
# オプション: 検出がないフレーム数(デフォルト: フレームレートの5倍)
max_disappeared: 25
# オプション: 静止オブジェクトのトラッキング設定
stationary:
# オプション: 静止オブジェクトを確認する頻度(デフォルト: 以下に示す)
interval: 0
# オプション: 静止オブジェクトと見なすためのフレーム数(デフォルト: フレームレートの10倍または10秒)
threshold: 50
# オプション: 静止オブジェクトをトラッキングする最大フレーム数(デフォルト: 設定なし、無期限トラッキング)
max_frames:
# オプション: すべてのオブジェクトタイプのデフォルト(デフォルト: 設定なし、無期限トラッキング)
default: 3000
# オプション: 特定のオブジェクトの値
objects:
person: 1000
# オプション: オブジェクト設定
# 注: カメラレベルで上書き可能
objects:
# オプション: labelmap.txtからトラッキングするオブジェクトのリスト(デフォルト: 以下に示す)
track:
- person
- cup
# オプション: 録画設定
# 注: カメラレベルで上書き可能
record:
# オプション: 録画を有効化(デフォルト: 以下に示す)
enabled: True
# オプション: クリーンアップ実行間隔(デフォルト: 以下に示す)
expire_interval: 60
# オプション: 録画の保持設定
retain:
# オプション: イベントに関係なく録画を保持する日数(デフォルト: 以下に示す)
days: 0
# オプション: 保持モード。利用可能なオプション: all, motion, active_objects
mode: all
# オプション: イベント録画設定
events:
# オプション: 長時間のイベント中にビデオを保持する最大時間(デフォルト: 以下に示す)
max_seconds: 300
# オプション: イベント前に含める秒数(デフォルト: 以下に示す)
pre_capture: 2
# オプション: イベント後に含める秒数(デフォルト: 以下に示す)
post_capture: 2
# オプション: 録画を保存するオブジェクト(デフォルト: すべてのトラッキング対象オブジェクト)
objects:
- person
- cup
# オプション: 指定されたゾーンに入ったオブジェクトに録画を制限(デフォルト: 必要なゾーンなし)
required_zones: []
# オプション: イベント録画の保持設定
retain:
# 必須: デフォルトの保持日数(デフォルト: 以下に示す)
default: 10
# オプション: 保持モード(デフォルト: 以下に示す)
mode: motion
# オプション: オブジェクトごとの保持日数
objects:
person: 2
cup: 3
STEP 5: Frigate Dockerコンテナを起動する
1 cd ~/Documents/frigate
2 sudo docker-compose -f frigate.yml up
トラブルシューティングを行う場合、以下のコマンドでDockerログを出力してエラーを確認できます:
sudo docker logs frigate
STEP 6: FrigateのWebフロントエンドを表示する
以下のコマンドをターミナルで入力して、Odyssey BlueサーバーのIPアドレスを確認してください:
1 ip a
ターミナルに類似の出力が表示されます。接続設定に応じて有効なIPアドレスを見つけてください:

Odyssey BlueのIPアドレスを特定したら、お気に入りのWebブラウザを開き、アドレスバーにip-address:5000を入力してください。例えば、IPアドレスが192.168.8.57の場合、ブラウザのアドレスバーに入力するURLは192.168.8.57:5000となります。以下の画像のようなホームページにアクセスできるはずです:

ライブ検出を観察するには、ビデオフィードをクリックし、メインビューの右上にあるDebugをクリックしてください。その後、ライブフィードの下にあるSHOW OPTIONSボタンをクリックし、Bonding Boxやその他のオプションを選択してライブフィードに表示させてください。

Odyssey BlueでFrigateのさまざまなオプションを探索して楽しんでください。また、エッジAIをアプリケーションに追加するために、reComputerシリーズなどの他のSBCオプションもぜひチェックしてください。
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。