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 템플릿 |
작동 방식 (고수준 흐름)
- 서버 시작 –
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 처리 → 웹 제어" 아키텍처를 시연합니다. |
| 소규모 데이터 수집 | 동기화된 비디오 + 이벤트 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에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트