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는 웹 대시보드를 호스팅하여 실시간 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 처리 → 웹 제어" 아키텍처를 시연합니다.
소규모 데이터 수집 동기화된 비디오 + 이벤트 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에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트