suzuran0y/CCTV-Smartphone-AI-Monitoring

本地监控 + AI 视觉 — LAN-based smartphone-powered AI monitoring framework with structured event output for data acquisition and analysis.

Sentinel リアルタイム監視システム

これは何か

Sentinel は、通常の Android スマートフォンをネットワークカメラノードに変え、そのビデオを PC 側の Flask サーバーにストリーミングするオープンソースフレームワークです。PC は Web ダッシュボードをホストし、ライブ MJPEG ビデオの視聴、セグメント化された MP4/AVI ファイルの録画、および(オプションで)モーショントリガーに一致するフレームに対する AI ベースの分析の実行が可能です。

コアコンポーネント

コンポーネント 役割 主要技術
CamFlow(Android アプリ) スマートフォンのカメラをキャプチャし、各フレームを JPEG に圧縮してサーバーに POST します。 Android 8+、Java/Kotlin、HTTP アップロード
PC サーバー(server.py) フレームを受信し、最新の画像を FrameBuffer に保存し、MJPEG ストリームを提供し、ビデオを録画し、オプションの AI モニタースレッドを実行します。 Python 3.9+、Flask、OpenCV、threading
ブラウザダッシュボード ライブプレビュー、録画の開始/停止、パラメータ調整、ログと AI イベントの表示のための UI。 HTML/JS、CSS、Flask テンプレート

動作原理(高レベルフロー)

  1. サーバーを起動 – python server.py で Flask が起動し、アドレス(例:http://192.168.1.10:5000)が表示されます。
  2. CamFlow を起動 – アプリはサーバーアドレスを要求し、フレームを継続的にキャプチャして /upload に POST します。
  3. FrameBuffer – サーバーは最新の JPEG をメモリに保持し、MJPEG エンドポイント(/stream)が任意のブラウザにストリーミングします。
  4. 録画 – バックグラウンドワーカーがバッファから読み取り、セグメント化されたビデオファイルを書き込みます(FPS、コーデック、セグメント長を設定可能)。
  5. AI トリガー(オプション) – モーション検出モジュールがフレームをフラグ付けします。トリガーされると、AI モニターがプラグ可能なビジョンモデル(例:マルチモーダル LLM や CV モデル)を呼び出し、構造化された JSON イベント(has_person、risk_level、confidence、summary)を保存します。
  6. ダッシュボード – ストリーム FPS、JPEG 品質、録画設定、AI パラメータ(プロンプトテンプレート、モーション閾値など)を調整し、ログ/イベントをリアルタイムで表示できます。

主な機能

  • ゼロコストハードウェア – 任意の Android スマートフォンがカメラノードになります。IP カメラは不要です。
  • LAN のみの運用 – すべてのトラフィックはローカルネットワーク内に留まり、プライバシーを保護します。
  • ライブ MJPEG プレビュー – プラグイン不要で、最新のブラウザで表示可能。
  • セグメント化されたビデオ録画 – 巨大なファイルを避けるための自動ファイルローテーション。
  • 設定可能なパラメータ – ストリーム FPS、アップロードレート、録画コーデック、AI トリガー閾値、プロンプトテンプレートなど。
  • 階層型 AI 処理 – まず低コストのモーション検出を行い、その後オプションで大規模モデル推論を実行して計算/API コストを節約。
  • 構造化イベントログ – ダウンストリーム分析やモデルトレーニングのための JSON レコード。
  • 拡張可能なアーキテクチャ – AI モジュールはインターフェースであり、任意のビジョンモデルや推論サービスを組み込むことができます。

典型的なユースケース

シナリオ Sentinel が適している理由
家庭またはラボの監視 既存のスマートフォンを使用し、データをローカルに保存、クラウドサブスクリプション不要。
行動分析の研究プロトタイプ カスタムビジョンモデルを簡単にプラグインし、構造化された JSON 出力を取得。
分散ビジョンシステムの教育 「モバイルキャプチャ → PC 処理 → Web 制御」アーキテクチャをデモ。
小規模データ収集 同期されたビデオ + イベント JSON を生成し、後のモデルトレーニングに使用。

クイックスタート(簡単な手順)

  1. リポジトリをクローン
    git clone https://github.com/suzuran0y/CCTV-Smartphone-AI-Monitoring.git
    cd CCTV-Smartphone-AI-Monitoring
    
  2. Python 依存関係をインストール
    pip install -r requirements.txt
    
  3. サーバーを実行
    python server.py
    
    表示された IP:PORT をメモします。
  4. スマートフォンに CamFlow をインストール(APK は PhoneCamSender/ にあり、または Android Studio からビルド)し、サーバーアドレスを入力します。
  5. 同じ LAN 上のブラウザを開き、http://<server_ip>:5000 にアクセスすると、ライブダッシュボードが表示されます。
  6. 設定タブを使用して AI モニターを有効にし、閾値を調整し、録画を開始します。

AI モジュールの拡張

フォルダ app/ai/ には以下が含まれます:

  • ai_ark.py – ビジョンモデルを呼び出す薄いラッパー(現在はオンライン推論 API のプレースホルダー)。
  • ai_monitor_worker.py – ステートマシン(SLEEP → OBSERVE)を実行し、イベントを書き込みます。
  • motion_trigger.py – シンプルなフレーム差分モーション検出器。 別のモデルを使用するには、ai_ark.py を、JPEG を独自のエンドポイントに送信し、期待されるスキーマに一致する JSON ペイロードを返すコードに置き換えます。

ライセンスと貢献

  • ライセンス: MIT – 自由に使用、変更、再配布できます。
  • プルリクエストによる貢献を歓迎します。このプロジェクトは典型的なオープンソースワークフローに従います。

上記のすべての情報はリポジトリの README から直接取得したものであり、追加機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト