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 テンプレート |
動作原理(高レベルフロー)
- サーバーを起動 –
python server.pyで Flask が起動し、アドレス(例:http://192.168.1.10:5000)が表示されます。 - CamFlow を起動 – アプリはサーバーアドレスを要求し、フレームを継続的にキャプチャして
/uploadに POST します。 - FrameBuffer – サーバーは最新の JPEG をメモリに保持し、MJPEG エンドポイント(
/stream)が任意のブラウザにストリーミングします。 - 録画 – バックグラウンドワーカーがバッファから読み取り、セグメント化されたビデオファイルを書き込みます(FPS、コーデック、セグメント長を設定可能)。
- AI トリガー(オプション) – モーション検出モジュールがフレームをフラグ付けします。トリガーされると、AI モニターがプラグ可能なビジョンモデル(例:マルチモーダル LLM や CV モデル)を呼び出し、構造化された JSON イベント(
has_person、risk_level、confidence、summary)を保存します。 - ダッシュボード – ストリーム FPS、JPEG 品質、録画設定、AI パラメータ(プロンプトテンプレート、モーション閾値など)を調整し、ログ/イベントをリアルタイムで表示できます。
主な機能
- ゼロコストハードウェア – 任意の Android スマートフォンがカメラノードになります。IP カメラは不要です。
- LAN のみの運用 – すべてのトラフィックはローカルネットワーク内に留まり、プライバシーを保護します。
- ライブ MJPEG プレビュー – プラグイン不要で、最新のブラウザで表示可能。
- セグメント化されたビデオ録画 – 巨大なファイルを避けるための自動ファイルローテーション。
- 設定可能なパラメータ – ストリーム FPS、アップロードレート、録画コーデック、AI トリガー閾値、プロンプトテンプレートなど。
- 階層型 AI 処理 – まず低コストのモーション検出を行い、その後オプションで大規模モデル推論を実行して計算/API コストを節約。
- 構造化イベントログ – ダウンストリーム分析やモデルトレーニングのための JSON レコード。
- 拡張可能なアーキテクチャ – AI モジュールはインターフェースであり、任意のビジョンモデルや推論サービスを組み込むことができます。
典型的なユースケース
| シナリオ | Sentinel が適している理由 |
|---|---|
| 家庭またはラボの監視 | 既存のスマートフォンを使用し、データをローカルに保存、クラウドサブスクリプション不要。 |
| 行動分析の研究プロトタイプ | カスタムビジョンモデルを簡単にプラグインし、構造化された JSON 出力を取得。 |
| 分散ビジョンシステムの教育 | 「モバイルキャプチャ → PC 処理 → Web 制御」アーキテクチャをデモ。 |
| 小規模データ収集 | 同期されたビデオ + イベント JSON を生成し、後のモデルトレーニングに使用。 |
クイックスタート(簡単な手順)
- リポジトリをクローン
git clone https://github.com/suzuran0y/CCTV-Smartphone-AI-Monitoring.git cd CCTV-Smartphone-AI-Monitoring - Python 依存関係をインストール
pip install -r requirements.txt - サーバーを実行
表示されたpython server.pyIP:PORTをメモします。 - スマートフォンに CamFlow をインストール(APK は
PhoneCamSender/にあり、または Android Studio からビルド)し、サーバーアドレスを入力します。 - 同じ LAN 上のブラウザを開き、
http://<server_ip>:5000にアクセスすると、ライブダッシュボードが表示されます。 - 設定タブを使用して AI モニターを有効にし、閾値を調整し、録画を開始します。
AI モジュールの拡張
フォルダ app/ai/ には以下が含まれます:
ai_ark.py– ビジョンモデルを呼び出す薄いラッパー(現在はオンライン推論 API のプレースホルダー)。ai_monitor_worker.py– ステートマシン(SLEEP → OBSERVE)を実行し、イベントを書き込みます。motion_trigger.py– シンプルなフレーム差分モーション検出器。 別のモデルを使用するには、ai_ark.pyを、JPEG を独自のエンドポイントに送信し、期待されるスキーマに一致する JSON ペイロードを返すコードに置き換えます。
ライセンスと貢献
- ライセンス: MIT – 自由に使用、変更、再配布できます。
- プルリクエストによる貢献を歓迎します。このプロジェクトは典型的なオープンソースワークフローに従います。
上記のすべての情報はリポジトリの README から直接取得したものであり、追加機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト