SK쉴더스 루키즈 지능형 애플리케이션 개발 5기 최종 프로젝트 - 2조 이상행
이상행은 CCTV 영상을 실시간으로 분석해 쓰러짐·실신과 같은 이상 행동을 탐지하고, 관제 담당자와 보호자가 빠르게 대응할 수 있도록 지원하는 End-to-End 스마트 안전 관제 플랫폼입니다.
- RTSP 영상에서 YOLO Pose와 LSTM을 활용한 실시간 쓰러짐·실신 탐지
- 낙상 상황에 특화된 객체 추적 및 ID 재연결로 분석 시퀀스 안정화
- MQTT와 WebSocket/STOMP 기반 실시간 경보 및 관제 대시보드
- 사고 전후 5초씩 총 10초 클립 저장과 얼굴 비식별화
- Gemini VLM 기반 사고 요약 및 768차원 벡터 자연어 검색
- 개인 사용자부터 요양원·병원·복지관 등 기관까지 지원하는 통합 관제
- AWS EKS, Terraform, GitHub Actions 기반의 확장 가능한 운영 환경
| 실시간 AI 관제 및 사고 영상 검색 |
|---|
|
| 이벤트 영상 재생 |
|---|
|
- AI Hub의 실제 CCTV 환경 기반 영상에서
NORMAL과FAINT데이터를 구성하고, 사람·장소·촬영 조건이 다양한 데이터를 학습에 활용 - YOLO26n-Pose로 사람의 17개 관절 좌표를 실시간 추출
- 단일 자세가 아닌 약 1초 동안의 변화를 분석하기 위해 30프레임 시퀀스를 LSTM에 입력
- 17개 관절의 51차원 특징에
center_drop,velocity,torso_angle을 추가한 54차원 특징 벡터로 낙상 전이를 학습 - RNN보다 장기 시점 정보 유지에 유리하고 ST-GCN보다 가벼운 LSTM을 사용해 실시간성과 시계열 표현력을 확보
- 순간적으로 누운 자세만 판단하지 않고
하강 → 쓰러짐 → 누움의 시간적 변화를 분석하여 오탐과 미탐을 감소
- 낙상 순간 자세와 Bounding Box 형태가 급변하면서 ByteTrack ID가 끊기고 LSTM 입력 시퀀스가 분리되는 문제를 보완
- IoU와 중심점 거리를 활용한
Hard Match로 정상 추적을 유지 frame gap,center ratio,velocity를 활용한Soft Relink로 짧게 끊긴 Track을 재연결- 단일 인물 상황의
Sole Candidate Match와 일시 검출 누락을 허용하는Grace Period를 적용 TrackSelector의 Strict/Fallback 전략으로 분석 대상을 안정적으로 선택- 내부 추적 ID와 화면 표시 ID를 분리하고, 영상 종료·소스 변경 시 상태를 초기화
- 자체 평가에서 Track 연속성 및 재연결 품질을 약 19.7% 개선
- CCTV의 RTSP 영상을 AI Worker가 분석하고, 분석 영상은 MJPEG/HTTP로 송출
- 탐지 이벤트는 MQTT QoS 1로 전송하여 ACK 수신 전까지 메시지를 보관하고 최소 한 번 이상 전달
- Backend는 MQTT 이벤트를 저장한 뒤 WebSocket/STOMP로 관제 대시보드에 즉시 브로드캐스트
- 개인·기업 대시보드의 실시간 팝업과 사이렌, 모바일 FCM 푸시 알림을 지원
- 쓰러짐 이벤트는 10초, 이탈 이벤트는 60초의 쿨다운을 적용해 중복 경보로 인한 관제 피로도를 완화
- 최신 프레임을 우선 처리하고 최대 3장만 유지하는 백프레셔 전략으로 과거 프레임 누적과 영상 지연을 방지
- 장애 발생 시 1초 이내 감지, 2초 간격 재시도로 8초 이내 화면 자동 복구
- 사고 전후 클립에서 사건의 시작·중간·종료를 고르게 포함하는 8개 Keyframe을 추출
- 외부 API 전송 전 얼굴을 비식별화하고 Gemini 2.5 Flash로 사고 상황을 텍스트로 요약
- 사고 설명을 768차원 Embedding으로 변환해 PostgreSQL
pgvector에 저장 - 단순 이벤트 코드 검색을 넘어 복장·장소·자세·상황을 자연어로 설명하여 유사 사고 기록을 검색
- VLM은 탐지 모델을 대체하지 않고, 이미 탐지된 이벤트의 사후 요약과 검색을 돕는 보조 기능으로 활용
- 이상 행동 감지 시 사고 전 5초와 사고 후 5초를 결합해 총 10초·300프레임 클립을 생성
- Keypoint 기반 얼굴 영역, 어깨·골반 장축 기반 머리 추정, 전신 Bounding Box 상단 영역의 3단계 폴백으로 비식별화 누락을 최소화
- GPU 서버에서 즉시 얼굴 블러를 적용해 원본 얼굴 영상의 외부 유출을 방지
- 비공개 S3 버킷에 저장하고 Public Access를 차단
- 권한 검증을 통과한 사용자에게만 15분 제한 Presigned URL을 제공
| 지표 | 51D 모델 | 최종 54D 모델 | 개선 |
|---|---|---|---|
| Accuracy | 89.20% | 93.45% | +4.25%p |
| Precision | 88.10% | 92.80% | +4.70%p |
| Recall | 90.50% | 94.20% | +3.70%p |
| F1-score | 89.29% | 93.49% | +4.20%p |
| False Positive | 132건 | 81건 | 38.6% 감소 |
| False Negative | 108건 | 66건 | 38.9% 감소 |
| 검증 항목 | PyTorch | TensorRT | 개선 |
|---|---|---|---|
| YOLO 평균 지연 | 9.454ms | 4.723ms | 50.0% 감소 |
| 최악 카메라 p95 지연 | 14.719ms | 7.159ms | 51.4% 감소 |
| 전체 처리 지연 | 11.789ms | 6.101ms | 48.2% 감소 |
| Dropped Frames | 40건 | 34건 | 15.0% 감소 |
| 추정 Drop 비율 | 1.10% | 0.94% | 0.16%p 감소 |
- End-to-End 알림 지연은 평균 20.9ms, 최대 27ms로 모든 알림을 30ms 이내 전달
- TensorRT 적용으로 전체 처리 지연을 약 절반으로 줄이고 프레임 누락과 Drop 비율을 함께 개선
- CCTV 또는 샘플 영상에서 RTSP 스트림을 AI Engine Server로 전달
- 카메라별 AI Worker가 YOLO Pose, Tracking, LSTM 분석을 수행
- 분석 영상은 MJPEG/HTTP로, 탐지 이벤트는 MQTT로 분리 전송
- Spring Boot Backend가 이벤트를 저장하고 WebSocket/STOMP 및 FCM으로 알림을 전달
- React Web Dashboard와 Android 앱에서 실시간 영상·경보·이벤트 이력을 확인
- 사고 클립과 Keyframe은 VLM 요약 및 자연어 검색 파이프라인으로 연계
- CloudFront와 ACM을 통해 HTTPS/WSS 통신과 CDN 기반 정적 콘텐츠 전송
- Public Subnet에는 ALB, NAT Gateway, SSM 관리용 Bastion을 배치
- Private Subnet에는 EKS 애플리케이션, EMQX MQTT Broker, RDS PostgreSQL, Redis를 배치하여 외부 직접 접근을 제한
- 온프레미스 GPU 서버와 AWS VPC를 Site-to-Site VPN으로 연결해 RTSP·MQTT·MJPEG 트래픽을 암호화
- S3 Gateway Endpoint를 통해 인터넷을 거치지 않고 비공개 스토리지에 접근
- Backend와 Frontend 이미지는 ECR에서 관리하고 EKS에 배포
- GitHub Push를 기준으로 GitHub Actions가 테스트와 빌드를 자동 수행
- Docker Image를 생성해 Amazon ECR에 저장
- Kubernetes Manifest의 이미지 태그를 자동 갱신
- 선언된 인프라와 애플리케이션 배포 구성을 Git으로 추적
- Terraform으로 VPC, Subnet, Security Group 등 인프라 정책을 코드화
- Spring Security와 JWT를 적용해 REST API 전 구간의 인증·인가를 처리
- Redis에 Refresh Token을 저장·검증해 세션 탈취 위험을 완화
- SSM Session Manager를 사용해 SSH 포트 개방과 SSH Key 관리 부담을 제거
- DB 비밀번호와 JWT Secret 등 민감 정보는 Kubernetes Secret으로 분리
- TLS/SSL, CloudFront, Site-to-Site VPN, VPC 망 분리로 외부 공격 표면을 최소화
![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|
| 안진경 (팀장) | 김연아 | 임서연 | 민병주 | 이채현 |
| AI | Full-Stack | Full-Stack | Full-Stack | Infra |
| YOLO·LSTM, Tracking, 최적화 | 관리자, Snapshot | 개인·기업, ROI | 인증, 알림, DB, App | AWS, IaC, GitOps |















