Skip to main content

リアルタイムエッジアラート用AI銃器検出ソリューション

注意

このプロジェクトは教育およびデモンストレーション目的のみで提供されています。
実際の環境に展開する場合は、地域の規制に準拠し、実行前に必要な認可を取得してください。

概要

Frigate + Node-RED銃器検出ソリューションは、ライブカメラストリームで銃器を検出し、アラート、レビュー、統合を調整するエッジAIビデオ分析スタックです。AI Boxes、NVIDIA Jetsonシリーズ、reComputer R2000でのプライバシー保護、低遅延展開向けに構築され、最適化された検出エンジン(Frigate)とビジュアル自動化レイヤー(Node‑RED)、オプションのLLM支援レビューを組み合わせています。

solution diagram

完全なAI NVR1体験を提供します:

  • ライブRTSP/HTTPストリームから銃器をリアルタイムで検出。
  • イベントアラート、ログ記録、通知を自動化。
  • プライバシー、低遅延、信頼性を確保するためにローカルで動作。

デバイスがSeeedのバンドルからのものでない場合や、独自のセットアップに合わせてカスタマイズしたい場合は、このガイドに従ってソリューションを展開してください。

キャンパス安全管理

機能

従来のNVRは人間による監視に依存しており、遅く、一貫性がなく、スケールが困難です。このソリューションは、即座の価値を提供する測定可能な成果に焦点を当てることで、これらの課題に対処します。

  • より高速な応答時間

    自動アラートとリアルタイムダッシュボードで即座の状況認識を実現し、手動監視の遅延を回避します。

  • より少ない誤検出

    オプションのLLM支援検証を活用してアラートをインテリジェントにレビューし、誤報を大幅に削減してオペレーターの注意を集中させます。

  • データ主権とプライバシー

    すべての推論とデータ処理はクラウド依存なしにオンプレミスで実行され、完全なデータプライバシーと制御を確保します。

  • スケーラブルなマルチストリームサポート

    JetsonとHailoプラットフォームの強力なハードウェアデコーディングを活用して、パフォーマンス低下なしに複数のカメラストリームを同時に監視します。

システムアーキテクチャ

ソリューションは連携して動作するいくつかの主要モジュールで構成されています:

system architecture
  • Frigateはライブビデオを処理し、MQTTを介して検出イベントを公開します。
  • Node-REDはこれらのイベントを購読し、アラートワークフローを調整し、ダッシュボードを更新します。
  • リアルタイムダッシュボードはビジュアル監視、イベントレビュー、システム設定を提供します。
  • Webhooksは通知とデータエクスポートのためのサードパーティシステムとの統合を可能にします。

展開ガイド

前提条件

  • AI Boxes/エッジハードウェア: reComputer J3011/J4012(Jetson Nano/Xavier/Orinシリーズ)。
  • ネットワークカメラ: 同じネットワーク上でアクセス可能なRTSP/HTTPストリーム。
  • Docker、Node-RED、Frigate設定の基本的な知識。

このページでは、**reComputer J4012(Jetson Orin™ NX 16GB)**をサンプルプラットフォームとして使用します。ただし、他のサポートされているハードウェアでも手順は同様です。

ステップ1:Frigateのインストール

注意

まだインストールされていない場合は、以下のコマンドを実行してcurlをインストールしてください:

sudo apt update && sudo apt install -y curl

⚠️ sudo apt upgradeは実行しないでください。Jetson固有の依存関係が破損する可能性があります。


事前設定されたワンクリックインストールスクリプトを使用して、JetsonデバイスにFrigateを自動的に展開します。

curl -sSL https://raw.githubusercontent.com/Seeed-Studio/frigate-on-jetson/main/install.sh | bash

インストールが完了したら、ブラウザを開いてhttp://<your_jetson_ip>:5000にアクセスし、Frigate Web UIにアクセスしてカメラを設定してください。

動作しない場合は、sudoなしでDockerを実行する権限が不足していないか確認してください。トラブルシューティング手順についてはFAQセクションを参照してください。その後、上記のコマンドを再実行してください。

Frigate Homepage

NodeREDでは、FrigateのMQTTトピックを購読して検出イベントを受信し、アラートワークフローを調整します。利用可能なトピックとペイロードの詳細については、Frigate MQTTドキュメントを参照してください。

ステップ2:Node-REDセットアップ

プログラミングを処理するオーケストレーションレイヤーとしてNodeREDを使用します。

Node-REDインストール

まだNode-REDをインストールしていない場合は、以下の手順に従ってJetsonデバイスにセットアップしてください。

以下のコマンドでNode-REDをコンテナで実行します:

sudo docker run -d --restart=always -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red

コンテナが起動したら、ブラウザを開いてhttp://<your_jetson_ip>:1880にアクセスし、Node-REDエディターにアクセスしてください。

nodered-panel

ノードインストール

開始する前に、Node-REDエディターの "Manage palette" オプションから以下のNode-REDノードをインストールしてください:

  • node-red-dashboard シンプルなフロントエンドダッシュボードを構築するため。
nodered-install-dashboard

アプリケーション

キャンパス、交通ハブ、工業団地、公共施設などの環境において、運営者は銃器リスクに対する即座の対応が必要です。このソリューションは以下の用途に設計されています:

  • キャンパス・教育機関

    セキュリティチームへのプロアクティブなアラートを可能にし、ログされたイベントデータとスナップショットによる迅速なインシデント確認を促進します。

  • 公共交通ハブ

    駅全体にマルチカメラ監視を展開し、webhookを介してセキュリティオペレーションセンター(SOC)に直接アラートを統合します。

  • 工業団地・物流

    疲労や注意散漫のない自動監視により、境界、アクセスポイント、機密エリアを保護します。


以下のサンプルデモでは、ソリューションの展開とカスタマイズのプロセスをガイドします。

デモ1 — 銃器検出アラート

このデモでは、MQTTを介してFrigateからの銃器検出イベントをリッスンし、ダッシュボードとwebhook通知の両方でリアルタイムアラートをトリガーするNode-REDフローの構築方法を示します。

データパイプライン

Frigate(銃器検出)→ MQTT(発行)→ Node-RED(フィルタ/アラート)→ ダッシュボード + Webhook

Node-RED gun detection sample

Node-REDフローセットアップ

提供されたフロー設定ファイル(gist flow.json)を使用して、サンプルフローをNode-REDエディタに直接インポートできます。

注意: フロー内のIPアドレスとwebhook URLを、お使いのFrigateインスタンスと通知エンドポイントに合わせて更新してください。

ダッシュボードエントリパスは/frigateとして設定されています。 ダッシュボードには以下でアクセスできます:http://<your_jetson_ip>:1880/dashboard/frigate

例:http://192.168.101.100:1880/dashboard/frigate

フロー概要

  • MQTTリスナー – 指定されたトピック(例:frigate/reviews)を購読して検出イベントを受信します。
  • イベントフィルタ – "gun"とラベル付けされたイベントのみを通します。
  • アラートビルダー – サムネイル、タイムスタンプ、カウンターを含む詳細なアラートメッセージを構築します。
  • ダッシュボード更新 – 最新の画像、イベント履歴、検出カウンターでダッシュボードを更新します。
  • Webhook通知 – Telegramボット、Slack、カスタムAPIなどの外部エンドポイントにHTTP POSTリクエストを送信します。

結果

Frigate event visualization

このフローを設定すると、Node-REDFrigateの銃器検出イベントに自動的に応答し、ダッシュボードを更新して即座にwebhook通知を送信します。

検出パラメータの設定手順については、Frigate設定セクションに進んでください。

デフォルトFrigate設定

http://<your_jetson_ip>:5000/configでFrigate設定ページに素早くナビゲートして、現在のセットアップを確認できます。

Frigateはconfig.ymlというYAMLファイルを使用して実行方法を定義します。 このファイルは、カメラストリームの場所、使用するAIモデル、MQTT経由で検出結果を送信する方法をFrigateに指示します。 これを調整することで、オブジェクトの検出、記録、表示方法を制御できます。

ストレージ場所

デフォルトでは、Frigateはビデオ録画とスナップショットをJetsonデバイスの/media/frigateに保存します。

例:

seeed@desktop:/$ docker exec -it frigate /bin/sh
root@274103ae951b:/opt/frigate# cd /media/frigate/
root@274103ae951b:/media/frigate# ls
clips exports handgun.mp4 machinegun.mov recordings

ビデオを長期間保持する予定がある場合は、Jetsonの内部ストレージが満杯になるのを防ぐため、このディレクトリを外部SSDまたはネットワークドライブにマウントしてください。

カメラ設定

Frigateでは、各カメラをcameras:セクションで定義する必要があります。 各カメラブロックは、ビデオストリームの取得元と、検出モデルによる分析前のデコード方法を記述します。

cameras:
handgun:
enabled: true
ffmpeg:
hwaccel_args: preset-jetson-h264
inputs:
- path: /media/frigate/handgun.mp4
input_args: -stream_loop -1 -re
roles:
- detect
machinegun:
enabled: true
ffmpeg:
hwaccel_args: preset-jetson-h264
inputs:
- path: /media/frigate/machinegun.mov
input_args: -stream_loop -1 -re
roles:
- detect

説明:

  • enabled:このカメラを有効または無効にします。
  • ffmpeg:FrigateがFFmpegを使用してビデオストリームを読み取りデコードする方法を定義します。
    • FFmpegは、ファイル、RTSPカメラ、その他のソースからビデオを変換・ストリーミングするメディアフレームワークです。
  • hwaccel_args:ハードウェアアクセラレーション(例:JetsonでのH.264デコード)を有効にします。
  • inputs:1つ以上のビデオ入力をリストします。
    • path:実際のビデオソース。
      • この例では、/media/frigate/handgun.mp4のようなローカルデモファイルです。
      • 実際の展開では、path: rtsp://user:[email protected]:554/stream1のようなライブカメラストリームに置き換えることができます。
  • input_args:追加のFFmpegパラメータ。
    • -stream_loop -1はデモビデオを無限にループします。
    • -reは再生がリアルタイム速度に合うことを保証します。
  • roles:この入力の使用方法を定義します。
    • detectはストリームがオブジェクト検出に使用されることを意味します。
    • その他の可能な役割には、録画用のrecordやストリーミング用のrtmpがあります。
tip

各カメラは複数の入力を持つことができます — 例えば、検出用に1つ、高品質録画用に別の1つなど。 Frigateは、定義されたすべてのソースに対してFFmpegを通じてデコードとフレーム抽出を自動的に管理します。

AIモデルと検出設定

カメラを定義した後、次のステップはFrigateにどのAIモデルを使用し、各ビデオフレームをどのように処理するかを指示することです。 このセクションでは、検出器タイプ、モデルファイルパス、フレームサイズ、オブジェクト追跡、閾値などの検出動作を定義します。

detectors:
tensorrt:
type: tensorrt
device: 0

model:
path: /config/model_cache/tensorrt/yolov4-tiny-288_gun_v3.trt
width: 288
height: 288
labelmap_path: /config/guns.txt
input_tensor: nchw
input_pixel_format: rgb

説明:

  • detectors:Frigateが推論に使用するAIバックエンドを定義します。
    • type:tensorrtはFrigateにNVIDIA TensorRTアクセラレーション(Jetson用に最適化)を使用するよう指示します。
    • device:GPU インデックスを指定します。ほとんどのJetsonデバイスでは0を使用します。
  • model:AIモデルファイルを指し、その入力形式を記述します。
    • path:.trt(TensorRTエンジン)ファイルへのパス。
    • width / height:モデルの入力解像度(モデルが期待するものと一致する必要があります)。
    • labelmap_path:クラスインデックスをラベルにマップするファイル、例:guns.txt → "gun"を含む。
    • input_tensor:テンソルレイアウトを定義;nchw = バッチ、チャンネル、高さ、幅。
    • input_pixel_format:ピクセル形式を指定、通常はrgb。
tip

TensorRTモデルは、高速GPU推論用に最適化された訓練済みネットワークのコンパイル版です。 新しいモデルを訓練する場合は、このファイルを独自のモデルに置き換えることができます — 幅、高さ、ラベルが一致することを確認してください。

オブジェクト追跡設定

Frigateは特定のタイプのオブジェクトを検出・追跡できます。 このプロジェクトでは銃器のみを追跡し、システムを効率的で集中的に保ちます。

objects:
track:
- gun
filters:
gun:
threshold: 0.3

説明:

  • track: 検出・追跡するオブジェクトのリスト。
    • ここでは "gun" のみですが、モデルがサポートしている場合は他のラベル(例:person、car など)を追加できます。
  • filters: 各オブジェクトタイプの検出信頼度を微調整します。
  • threshold: 最小信頼度値(0.0–1.0)。
    • 低い値(0.3 など)はより敏感ですが、誤検出を含む可能性があります。
    • 高い値(0.5 など)は検出をより厳格にします。
tip

誤検出が多すぎる場合は、閾値を 0.5 以上に上げてみてください。 見逃されがちな小さなオブジェクトについては、少し下げることもできますが、精度とノイズのバランスを取ってください。

録画設定

Frigate がオブジェクトを検出すると、さらなる分析やアラート表示のためにビデオを録画し、スナップショットを保存できます。 これらの設定は、録画の保存期間と、キャプチャされた画像に表示される情報を制御します。

record:
enabled: true
retain:
days: 3
mode: all

説明:

  • enabled: ビデオ録画を有効にします。
  • retain: 録画ファイルの保存期間と保存される映像のタイプを制御します。
    • days: 自動削除前に録画を保持する日数。
    • mode:
      • all – 連続録画(テスト用に便利)。
      • motion – モーションが検出された時のみ録画。
      • events – 追跡されたオブジェクト(例:銃)が現れた時のみ録画。
tip

実際のデプロイメントでは、mode: events または mode: motion を使用して、有用な録画を保持しながらストレージ容量を節約してください。

スナップショット設定

snapshots:
enabled: true
clean_copy: true
timestamp: true
bounding_box: true
crop: false
retain:
default: 14
quality: 95

説明:

  • enabled: 検出イベント発生時のスナップショット保存を有効にします。
  • clean_copy: 検出ボックスなしの追加バージョンを保存します。
  • timestamp: スナップショットに時刻と日付のオーバーレイを追加します。
  • bounding_box: 検出されたオブジェクトの周りにボックスを描画します。
  • crop: true の場合、検出エリアのクロップ部分のみを保存します。
  • retain.default: スナップショットを保持する日数。
  • quality: 画像品質を設定(1–100)。高い値 = より良い詳細だがファイルサイズが大きくなります。
tip

スナップショットは、ビデオクリップよりもはるかに小さく、webhook や MQTT 経由で送信しやすいため、アラートやダッシュボードに最適です。

Birdseye ビュー

Frigate は Birdseye ビューもサポートしており、複数のカメラフィードを一緒に表示して素早く概要を確認できます。

birdseye:
enabled: true
mode: objects

説明:

  • enabled: Birdseye 複合ビューを有効にします。
  • mode:
    • objects – 現在オブジェクトが検出されているカメラのみを表示。
    • continuous – 常にすべてのカメラフィードを表示。

MQTT 設定

Frigate は MQTT を通じて検出イベントを通信し、Node-RED、Home Assistant、またはカスタムダッシュボードなどの他のサービスが、オブジェクトが検出されるたびにリアルタイム更新を受信できるようにします。 また、システムパフォーマンスの監視と検出問題のデバッグに役立つログオプションも提供します。

mqtt:
enabled: true
host: 172.17.0.1
port: 1883

説明:

  • enabled: MQTT 通信を有効にします。
  • host: MQTT ブローカーの IP アドレス。
    • Jetson で Docker を使用する場合、172.17.0.1 は通常ホストマシンを指します。
    • 別のデバイスで実行している場合は、実際の MQTT サーバー IP に置き換えてください。
  • port: デフォルトの MQTT ポート、通常は 1883。

より高度な MQTT 設定については、Frigate MQTT ドキュメントを参照してください。

MQTT を有効にすることで、Frigate はリアルタイムイベントネットワークの一部となり、銃検出アラートを Node-RED や Home Assistant に直接送信し、ダッシュボード、通知、またはカスタムワークフローをトリガーできます。

パフォーマンス & サイジング

ハードウェアプラットフォームモデルFPS(合計)安定ストリーム(≥15 FPS)備考
reComputer R2000 (Raspberry Pi + Hailo-8)YOLOv11-s302コンパクト AI NVR;効率的な低電力エッジデバイス
reComputer J3011 (Jetson Orin Nano 8 GB)YOLOv4-tiny-288906エントリーレベル Jetson;ウォームアップ後に FPS が安定
reComputer J4012 (Jetson Orin NX 16 GB)YOLOv4-tiny-2881208NVDEC 同時実行制限に到達;計算余力は残存

リソース & 次のステップ

FAQ

1. Jetson デバイスに Docker をインストールできません。どうすればよいですか?

デフォルトの Docker インストールスクリプトで問題が発生した場合は、以下の代替スクリプトを使用できます:

bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

詳細については、https://linuxmirrors.cn をご覧ください。

2. Jetpack バージョンを確認するには?

Jetson デバイスで以下のコマンドを実行してください:

dpkg -l | grep nvidia-jetpack

出力にインストールされている Jetpack バージョンが表示されます。

3. Jetpack バージョンを更新するには?

特定の製品 wiki の手順に従ってください。

4. Docker 実行時の "Permission Denied" エラー

Docker デーモンにアクセスする権限がありません。 以下を実行してください:

sudo usermod -aG docker $USER
newgrp docker

ログアウトして再度ログインすることで、新しいグループ権限も適用されます。

その後、確認してください:

docker ps

Footnotes

  1. AI NVRは高度な機械学習モデルを活用してリアルタイムの洞察と自動化機能を提供しますが、従来のNVRは主にビデオ映像の録画と保存に焦点を当てています。 `

Loading Comments...