삼성 청년 SW·AI 아카데미 13기
특화 프로젝트 부울경 1반 TEAM 02
🏆 우수상 수상
🏆 영상 포트폴리오 입상
건설현장의 산업재해는 매년 반복적으로 발생하며, 주요 원인은 안전장비 미착용과 즉각적인 사고 대응 부재입니다.
WatchOut은 AI 영상 분석을 통한 실시간 안전장비 감지와 스마트워치를 활용한 낙상 감지·SOS 신고 기능을 제공하여, 현장의 위험 상황을 신속히 파악하고 대응할 수 있는 통합 안전관리 플랫폼입니다.
WatchOut은 AI 영상 분석을 중심으로 웹, 모바일 앱, 스마트워치 세 가지 플랫폼이 유기적으로 연동되는 통합 안전 관리 솔루션입니다.
- 주요 역할: CCTV 영상을 실시간으로 분석하여 잠재적 위험을 사전 감지 및 예방
- 핵심 감지 기능:
- ⛑️ 안전장비 미착용 감지: YOLACT 모델 활용, 작업자의 안전모 및 안전조끼 착용 여부 실시간 감지
- 🚚 중장비 위험 감지: CCTV 영상 내 작업자와 중장비(지게차 등)의 위험한 접근 상황 감지
- 👨 안면인식 출입 관리: ArcFace 모델 활용, 등록된 작업자의 현장 출퇴근 및 주요 구역 입출입 기록 자동화
- 주요 역할: 현장 총괄 관리자를 위한 종합 관제 대시보드
- 핵심 기능:
- 📊 종합 대시보드: 실시간 안전 현황, AI 감지 위반 통계, 작업자 상태 등 현장 데이터 총괄 모니터링
- 📹 CCTV 실시간 모니터링 및 관리: 다수 CCTV의 구역별 실시간 스트리밍 및 AI가 감지한 위험 상황(안전장비 미착용, 중장비 접근 등) 확인
- 🚨 통합 알림 관리: 현장에서 발생하는 모든 안전 알림(AI 감지, 낙상, SOS 등)의 실시간 수신 및 이력 관리
- 👥 자원 통합 관리: 현장 작업자, 작업 구역, 스마트워치 등 시스템의 모든 자원 등록 및 관리
- 📢 공지 관리: 현장 전체 또는 특정 그룹 대상 중요 공지사항 발송
- 주요 역할: 현장 관리자 및 작업자를 위한 실시간 현장 대응 및 정보 확인 도구
- 핵심 기능 (관리자용):
- 📹 이동 중 CCTV 확인: 모바일 환경에서 언제 어디서든 현장 CCTV 확인으로 즉각적인 상황 파악
- 🚨 실시간 위험 알림: 푸시 알림을 통한 AI 감지 위험 상황, 낙상, SOS 등 즉시 인지 및 대응
- 👥 현장 작업자 관리: 모바일에서의 작업자 상태 확인 및 관리
- 핵심 기능 (작업자용):
- 📢 알림 수신: 안전 관련 공지 및 위험 알림 수신
- 📍 작업 구역 확인: 자신의 현재 작업 구역 정보 확인
- 주요 역할: 작업자의 신체에 가장 가까운 곳에서 생명과 안전을 지키는 최전방 장비
- 핵심 기능:
- 🤕 낙상 감지 & 자동 신고: Health Services API 연동, 심각한 낙상 자동 감지 및 응답 부재 시 SOS 자동 전송
- 🆘 수동 SOS 신고: 위급 상황 발생 시 버튼을 통한 즉각적인 긴급 구조 요청
- 📍 작업 정보 확인: 할당된 작업 구역 및 담당 관리자 정보 확인
- 1주차 (8/25 ~ 8/31): 프로젝트 기획 및 요구사항 분석
- 2주차 (9/1 ~ 9/7): 시스템 설계 및 기술 스택 선정
- 3주차 (9/8 ~ 9/14): 인프라 구축 및 기본 기능 구현
- 4주차 (9/15 ~ 9/21): AI 모델 연동 및 고도화
- 5주차 (9/22 ~ 9/28): 테스트 및 최적화
- 9/29: 최종 프로젝트 평가
1. 🔗 기획서
2. 🔗 기능 명세서
3. 🔗 ERD
4. 🔗 API 문서
5. 🔗 발표 자료
AI 기반 건설현장 안전관리 플랫폼 WatchOut을 개발한 팀입니다.
팀원 구성은 최씨 1명, 김씨 4명, 박씨 1명으로, 이를 합쳐 최가네 사각김박이라는 팀명을 지었습니다.
최민석 (Team Leader) @m0304s
|
김동규 @donggyu-kim12
|
김예나 (FE Leader) @yeneua
|
김현서 @khyunse0
|
김환수 @KimHS17
|
박정훈 @Leehwa531
|
| 대시보드 |
|---|
|
| CCTV 확인 | CCTV 등록 |
|---|---|
|
|
| CCTV 수정 | CCTV 삭제 |
|
|
| 구역 확인 | 구역 등록 |
|
|
| 구역 별칭 수정 | 구역 담당자 수정 |
|
|
구역 삭제 |
|
|
| 작업자 확인 |
|---|
|
| 워치 등록 | 워치 수정 |
|---|---|
|
|
| 워치 삭제 | 워치 대여 및 반납 |
|
|
| 작업자 입출입 알림 | 안전장비 미착용 알림 |
|---|---|
|
|
| 중장비 접근 알림 | SOS 긴급 알림 |
|
|
| 공지 발송 |
|---|
|
| 로그인 | 회원가입 | 안면인식 등록 |
|---|---|---|
![]() |
![]() |
![]() |
| 작업자 관리 | CCTV 현장 관리 |
|---|---|
![]() |
![]() |
| 작업자 입출입 알림 | 안전장비 미착용 알림 | 중장비 접근 알림 | SOS 긴급 알림 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 구역 정보 | SOS |
|---|---|
![]() |
![]() |
| 낙상 감지 활성화 | 낙상 감지 | 낙상 신고 완료 |
|---|---|---|
![]() |
![]() |
![]() |
- 사용자(User) → Nginx(443) → Frontend / Backend
- Backend → DB(PostgreSQL), Cache(Redis), Messaging(Kafka)
- AI 서버 → CCTV 영상 분석 → 안전장비 위반 감지 → Backend 전달
- 스마트워치 → 낙상 감지 → 모바일 앱 → Backend 알림
- Jenkins → CI/CD 파이프라인 관리
frontend-repo/
frontend-repo/
┣ android/ # Capacitor Android bridge (Wear OS companion)
┃ ┣ app/
┃ ┣ build/
┃ ┗ gradle/
┣ docker/
┃ ┣ edge/
┃ ┗ frontend/
┣ public/
┃ ┣ fonts/
┃ ┗ firebase-messaging-sw.js
┣ scripts/
┃ ┗ copy-sw.js
┣ src/
┃ ┣ api/
┃ ┣ bootstrap/
┃ ┣ components/
┃ ┣ constants/
┃ ┣ features/
┃ ┣ hooks/
┃ ┣ layouts/
┃ ┣ notification/
┃ ┣ routes/
┃ ┣ stores/
┃ ┣ styles/
┃ ┣ types/
┃ ┗ utils/
┣ capacitor.config.ts
┣ package.json
┣ pnpm-lock.yaml
┗ vite.config.ts
backend-repo/
backend-repo/
┣ src/
┃ ┣ main/
┃ ┃ ┗ java/watch/out/
┃ ┃ ┣ accident/ # 사고 이력 및 대응 관리
┃ ┃ ┣ announcement/ # 공지 게시 모듈
┃ ┃ ┣ area/ # 작업 구역 · 출입 제어
┃ ┃ ┣ auth/ # 인증 및 토큰 처리
┃ ┃ ┣ cctv/ # CCTV 연동 및 스트림 제어
┃ ┃ ┣ common/ # 공통 설정 · 예외 · 유틸리티
┃ ┃ ┣ company/ # 현장/기업 마스터 데이터
┃ ┃ ┣ dashboard/ # 대시보드 통계 API
┃ ┃ ┣ notification/ # FCM 알림 발송
┃ ┃ ┣ s3/ # 파일 업로드(S3)
┃ ┃ ┣ safety/ # 안전장비 위반 기록
┃ ┃ ┣ user/ # 사용자 · 역할 관리
┃ ┃ ┗ watch/ # 스마트워치 연동 API
┃ ┗ test/
┃ ┗ java/watch/out/
┣ dummy_data.sql
┣ build.gradle
┣ settings.gradle
┣ Dockerfile
┗ gradlew
watch-repo/
watch-repo/
┣ app/
┃ ┣ src/
┃ ┃ ┣ main/
┃ ┃ ┃ ┣ AndroidManifest.xml
┃ ┃ ┃ ┣ java/com/ssafy/watchout/
┃ ┃ ┃ ┃ ┣ core/ # DI, 서비스 및 계약 정의
┃ ┃ ┃ ┃ ┣ data/ # 원격 데이터 모델
┃ ┃ ┃ ┃ ┣ domain/ # Health Services 도메인 로직
┃ ┃ ┃ ┃ ┗ presentation/ # Wear Compose UI 화면
┃ ┃ ┃ ┗ res/ # 리소스 (레이아웃, 이미지 등)
┃ ┃ ┗ test/
┃ ┣ build.gradle.kts
┃ ┗ proguard-rules.pro
┣ build.gradle.kts
┣ gradle/
┃ ┗ wrapper/
┣ gradlew
┗ settings.gradle.kts
ai-repo/
ai-repo/
┣ main.py # Flask 진입점 (멀티 스트림 제어)
┣ config.py
┣ util/
┃ ┣ capture_utils.py
┃ ┣ cctv_bound.py
┃ ┣ kafka_client.py
┃ ┣ kafka_control_consumer.py
┃ ┗ stream_workers.py
┣ templates/
┃ ┣ form.html
┃ ┗ multi.html
┣ snapshot/ # 탐지 스냅샷 예시
┣ weights/
┃ ┗ yolact_resnet101_safety_33_200000.pth
┣ yolactMaster/ # 커스텀 YOLACT 백본
┃ ┣ data/
┃ ┣ layers/
┃ ┣ scripts/
┃ ┣ utils/
┃ ┗ yolact.py
┣ check_bytes.py
┗ check_s3.py
ai-repo2/
ai-repo2/
┣ app/
┃ ┣ main.py # FastAPI 엔트리포인트
┃ ┣ adapters/ # 외부 연동 레이어 (S3, Redis 등)
┃ ┣ routes/ # API 엔드포인트 정의
┃ ┣ services/ # ArcFace 추론 · 업무 로직
┃ ┗ config.py
┣ models/ # 얼굴 인식 모델 자산
┣ scripts/
┃ ┗ run_local_registration.py
┣ requirements.txt
┣ evaluate_lfw.py
┣ test_api_request.py
┗ test_arcface.py
🚧 WatchOut - 산업재해 예방을 위한 AI 영상 분석 스마트 안전관제 시스템 🚧




































