suzuran0y/CCTV-Smartphone-AI-Monitoring
本地监控 + AI 视觉 — LAN-based smartphone-powered AI monitoring framework with structured event output for data acquisition and analysis.
Sentinel – 실시간 LAN 기반 시각 모니터링 시스템
무엇인가요 – Sentinel은 일반적인 안드로이드 스마트폰을 네트워크 카메라 노드로, PC 측 Flask 서버를 실시간 미리보기, 녹화, AI 분석 대시보드로 전환하는 오픈소스 프레임워크입니다. 모든 비디오 트래픽은 로컬 LAN 내부에 머무르며, 외부 추론 API를 연결하지 않는 한 클라우드 서비스는 필요하지 않습니다.
주요 구성 요소
| 구성 요소 | 역할 | 주요 기술 |
|---|---|---|
| CamFlow (안드로이드 앱) | 스마트폰 카메라를 캡처하고, 각 프레임을 JPEG로 압축하여 서버에 POST합니다. | Java/Kotlin, Android SDK |
| PC 대시보드 | 프레임을 수신하고, 최신 이미지를 버퍼에 저장하며, MJPEG 스트림을 제공하고, 세그먼트화된 MP4/AVI 파일을 녹화하며, 선택적 AI 모듈을 실행합니다. | Python 3.9+, Flask, OpenCV, ffmpeg |
| 브라우저 UI | 실시간 비디오를 표시하고, 녹화 시작/정지, 파라미터 조정, 로그 및 AI 이벤트 JSON 확인을 가능하게 합니다. | HTML/JS (정적 자산) |
작동 방식
- 데이터 수집 계층 – CamFlow는
HTTP POST /upload를 통해 지속적으로 단일 프레임 JPEG을 업로드합니다. - 서비스 처리 계층 – Flask 서버는 최신 프레임을
FrameBuffer에 저장합니다. 별도의 워커가 이 버퍼에서 읽어 다음 작업을 수행합니다:- MJPEG 스트리밍 (
/stream) - 세그먼트화된 비디오 녹화
- 선택적 AI 모니터링
- MJPEG 스트리밍 (
- 표현 계층 – 브라우저 대시보드는 MJPEG 스트림을 읽고, 스트림 FPS, JPEG 품질, 녹화 코덱, 모션 트리거 임계값, AI 프롬프트 템플릿 등의 컨트롤을 제공합니다.
AI 트리거 모니터링
- 각 프레임에서 작동하는 경량 모션 감지기(전통적 CV)가 있습니다.
- 모션 감지가 설정 가능한 임계값을 초과하면 시스템은 OBSERVE 상태로 전환하고, 플러그인 가능한 비전 모델(예: OpenAI, Claude, 또는 HTTP 기반 추론 서비스)을 호출합니다.
- 모델의 응답은 고정된 JSON 스키마(
has_person,risk_level,confidence,summary, …)로 파싱되어 나중 분석을 위해 로깅됩니다. - 프롬프트 템플릿, 장면 프로파일, 추가 규칙 파라미터는 대시보드에서 편집 가능하여 모델의 동작을 프로그래밍 가능하게 만듭니다.
왜 유용한가
- 개인정보 우선: 모든 비디오와 로그는 로컬 PC에 유지되며, SD 카드나 제3자 클라우드 스토리지가 필요하지 않습니다.
- 저비용: 사용하지 않는 안드로이드 스마트폰 하나만으로도 카메라 노드가 됩니다. 전용 IP 카메라가 필요하지 않습니다.
- 확장성: AI 모듈은 인터페이스로 설계되어, 어떤 비전 모델도 교체하거나 사용자 정의 CV 파이프라인을 추가할 수 있습니다.
- 연구용 최적화: 구조화된 JSON 이벤트 로그로 인해, 나중 모델 훈련이나 통계 연구를 위한 데이터셋 수집이 용이합니다.
현재 성숙도
- 버전 v1.1.3 (2026-08-20) – Windows 호환 코덱 백업, API 키 마스킹, 주소 검증 개선, 확장된 테스트 세트를 포함한 안정적 릴리스.
- 실시간 미리보기, 세그먼트 녹화, 모션 트리거, AI 훅과 같은 핵심 기능은 LAN 배포용으로 프로덕션 수준입니다.
- 문서에는 단계별 배포 가이드, 안드로이드 사용자 가이드, 그리고 향후 기능(예: 다중 카메라 집계, 디바이스 내 추론)에 대한 로드맵이 포함되어 있습니다.
시작하기
- 리포지토리 복제하고
requirements.txt에서 Python 종속성 설치. - PC에서
server.py실행 (Python 3.9+). 콘솔에 안드로이드 클라이언트용 주소(IP:PORT)가 출력됩니다. - 안드로이드 기기에서 CamFlow 설치 (
PhoneCamSender/에 제공된 APK 또는 소스에서 빌드)하고 출력된 주소를 입력합니다. - 브라우저에서 출력된 URL을 열어 실시간 MJPEG 스트림을 확인하고, 녹화를 시작하거나 AI 모니터를 활성화합니다.
- (선택 사항) 대시보드를 통해
config/config.json을 편집하여 스트림 FPS, 녹화 코덱, 모션 임계값, AI 프롬프트 템플릿을 조정합니다.
라이선스 – MIT (LICENSE 참조).
결론 – Sentinel은 스마트폰을 저렴한 카메라로 활용하고, 선택적 대규모 모델 추론을 제공하는 진정한 자체 포함형 시각 모니터링 프레임워크입니다. AI/ML/LLM 기반 모니터링 분야에 완벽하게 부합하며, 아마추어용 홈 보안 설정부터 다중 모달 시각 데이터 수집을 위한 연구 프로토타입까지 다양한 용도로 활용 가능합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch