VITAL × AI × GUARDSOUTH KOREA

PORTFOLIO · 2026

장우진CHANG WOO JIN

VitAlGuard 팀장 · PM · 풀스택 · 엣지 AI 개발

워치 · 카메라 · 관제 웹을 하나로 잇고, 현장에서 제대로 도는지까지 책임졌습니다.

  • 대상 · 조달청장상
  • 커밋 1,393
  • 보호구 모델 1~7차

SYSTEM

시스템.기술.스택.
자세히 ↓
자세히 ↓
자세히 ↓
자세히 ↓
자세히 ↓
자세히 ↓
자세히 ↓
자세히 ↓
누르고 있으면 소리와 함께 본편.
ABOUT

기획부터 운영까지,
팀이 끝까지 갈 수 있게 만드는 개발자가 되겠습니다.

장우진 — 소개.

장우진 증명사진

장우진

팀 VitAlGuard 팀장 · PM — 프론트엔드 · 백엔드 · 모바일 · ML · DevOps

2026. 6. 22. ~ 10. 7.

팀장이자 PM 으로 VitAlGuard 의 기획 · 일정 · 역할 분담을 이끌었고, 개발에서는 관제 웹 · 서버, CCTV 엣지 AI, 웨어러블 수집 앱, 배포 · 운영을 맡았습니다. 기능을 만드는 데서 멈추지 않고, 그 기능이 현장에서 맞게 동작하는지를 시험 · 게이트 · 실측으로 확인하는 일에 무게를 두었습니다.

맡은 직무.

PROJECT MANAGER

PM · 팀장

팀장

서비스 기획과 일정 · 역할 분담을 이끌고, 공모전 대응(조달청 대상 수상 · 범정부 통합본선 진출)과 사업계획서 · 발표자료 · 홍보 영상 제작을 맡았다.

FRONTEND

프론트엔드

관련 커밋 308건

관제 웹 화면(React · TypeScript) — 생체 추세 차트 · 일정 캘린더 · CCTV 직결 화면 · 경보 확인 흐름

f055e304 · 2026. 7. 23.1561a4d3 · 2026. 8. 20.

BACKEND

백엔드

관련 커밋 272건

Next.js API 라우트 64개 신설 · 감시 크론 · 텔레그램 경보 · 장치 · 공공데이터 연동

0666a5f4 · 2026. 8. 19.923066d6 · 2026. 7. 6.

MOBILE

모바일 · 웨어러블

관련 커밋 238건

갤럭시 워치 Wear OS(Kotlin) · Apple Watch → iPhone(Swift) 수집 앱

c571afba · 2026. 8. 24.70a9ac3a · 2026. 8. 11.

ML / CV

ML · 컴퓨터 비전

관련 커밋 58건

보호구 모델 1~7차 학습 · 현장 배포 게이트 · 자세 모델 교체 · TensorRT 변환

c3982ff5 · 2026. 9. 15.cb23b38f · 2026. 9. 15.

DEVOPS

DevOps · 엣지 인프라

관련 커밋 85건

Cloud Run 배포 · 롤백 · Jetson 2대와 HTTPS 서명 티켓 게이트 운영

17058f25 · 2026. 8. 13.07df7441 · 2026. 9. 9.

기술 스택.

언어

  • TypeScript관제 웹 화면 · 서버 · 시험 코드805f0d8b · 2026. 8. 28.
  • Kotlin갤럭시 워치 Wear OS 단독 수집 앱c571afba · 2026. 8. 24.
  • SwiftApple Watch 수집 · 미착용 판정 하트비트541bfa95 · 2026. 8. 15.
  • Python젯슨 엣지 추론 · 카메라 스크립트213d0706 · 2026. 9. 15.
  • DartFlutter 폰 앱 로그인 · 생체 요약 · 기록 탭b0994d9e · 2026. 8. 11.

프론트엔드

  • React생체 추세 패널 · 기간 조회 화면f055e304 · 2026. 7. 23.
  • Next.jsAPI 라우트 64개 신설 · 감시 공백 알림0666a5f4 · 2026. 8. 19.
  • Tailwind CSS주간 일정표 등 관제 웹 화면 스타일1561a4d3 · 2026. 8. 20.
  • Recharts추세 차트 시간축 — 측정 공백을 그대로 보이게92ffb4f5 · 2026. 8. 13.

백엔드

  • Node.jsGasPod 텔레메트리 수신 엔드포인트ab883def · 2026. 7. 8.
  • Telegram Bot API관제 경보 5종 텔레그램 전송11053d09 · 2026. 7. 23.
  • FastAPICCTV AI 서버 초기판 · MJPEG 스트림80fe0407 · 2026. 6. 27.
  • Flask젯슨 공개 게이트 — 서명 티켓 검증 뒤 영상 · 통계만07df7441 · 2026. 9. 9.

모바일 · 웨어러블

  • Wear OSQR 로그인 · 착용 판정 · LTE 단독 업로드e481e991 · 2026. 9. 7.
  • Samsung Health Sensor SDKSDK 1.4.1 연동 · 센서 실측 도구 3종f53fa7c8 · 2026. 8. 24.
  • watchOS · iOS워치 → iPhone 전달 · 서버 업로드 큐70a9ac3a · 2026. 8. 11.
  • Flutter관리자 폰 앱 — 2단계 로그인 · 작업자 현황eecb1a37 · 2026. 9. 3.

ML · 엣지 AI

  • PyTorch보호구 모델 1~7차 학습 · 판본 비교c3982ff5 · 2026. 9. 15.
  • Ultralytics YOLOYOLO26s 보호구 모델 · 클래스별 배포 게이트cb23b38f · 2026. 9. 15.
  • OpenCV카메라 영상 → 젯슨 추론 → 관제 웹 경로b25096e7 · 2026. 7. 29.
  • NVIDIA Jetson · TensorRT두 대 엔진 · 카메라 푸셔 · 게이트 운영0c7a894b · 2026. 9. 28.
  • Google Colab보호구 학습 노트북 · 평가 결과 Drive 저장cb1c2b07 · 2026. 7. 28.

인프라 · DevOps

  • Google Cloud Run배포 사후 관찰 90초 · 원터치 롤백17058f25 · 2026. 8. 13.
  • Docker관제 웹 standalone · CCTV AI 서버 이미지9a59f369 · 2026. 6. 22.
  • GitHub Actions타입 검사 · 린트 · 시험 push/PR 게이트00ea65aa · 2026. 7. 27.
  • TailscaleCCTV 영상 Tailscale 직결 — 서버 중계 없이f0fd01b9 · 2026. 9. 21.
PROJECT

VitAlGuard — 사고를 먼저 알아차리는 연결.

문제.재해자는 스스로 신고할 수 없고, 관리자는 전 구역을 동시에 볼 수 없습니다. 사고는 전담 안전조직이 없는 소규모 현장에 몰립니다.

해법.작업자의 스마트워치, 엣지 AI 카메라, 가스 감지기 GasPod, AED 경보 장치를 관제 웹 하나로 잇습니다. 감지는 현장에서, 판단은 사람이 합니다.

현장에서 관제까지.

도식 전체 화면으로 보기 ↗
  1. 갤럭시 워치LTE 직접 업로드
  2. Apple WatchiPhone 큐 · 재시도
  3. GasPodHTTP POST 5초
  4. AED-alertHTTP GET 8초 폴링
  5. 공공데이터 12종서버 클라이언트 · 8개 기관
관제 웹 APINext.js · Google Cloud RunPostgreSQL 14 · RLS 149
  • 관제 웹실시간 관제 · 경보 처리 기록
  • 담당관 태블릿Kotlin · Compose · 1.3.18
  • 텔레그램SOS · 낙상 · 생체 위험 즉시 전파
CCTV 엣지Jetson ×2 · HTTPS 게이트 · 일회용 서명 티켓서버 중계 없음.
MY WORK

맡은 업무와 해결한 문제.

장우진이 맡은 업무.

1,393커밋병합 제외 1,362 · 활동 81일
64관제 웹 API 라우트 신설현재 라우트 123개 가운데 처음 작성한 수
187관제 웹 시험 파일 작성현재 시험 파일 239개 가운데 처음 작성한 수
1~7차보호구 모델 학습현장 35장 게이트로 7차-E 라이브
영역별 기여.영역별 장우진 커밋 수와 해당 영역 전체 커밋 가운데 장우진의 비율을 가로 막대로 표시합니다.0200400600관제 웹.532 · 영역 내 80.1%.워치 수집 앱.238 · 영역 내 88.8%.보호구 모델.56 · 영역 내 100%.CCTV 엣지.55 · 영역 내 100%.공통 · 운영.100 · 영역 내 73.5%.문서.705 · 영역 내 93.9%.
영역별 기여.
영역별 기여.
영역.커밋 수.영역 내 비율.
관제 웹53280.1%
워치 수집 앱23888.8%
보호구 모델56100%
CCTV 엣지55100%
공통 · 운영10073.5%
문서70593.9%
월별 커밋.2026년 6월부터 10월까지 장우진의 월별 커밋 수를 세로 막대로 표시합니다.0200400600826월.4147월.7058월.1769월.1610월.
월별 커밋.
월별 커밋.
월.커밋 수.
6월82
7월414
8월705
9월176
10월16

기여 목록.

CONTROL WEB · SERVER

관제 웹 · 서버

Next.js · React · TypeScript · Cloud Run

  • 감시 공백 알림

    수신이 끊긴 작업자를 수신 경로가 아닌 별도 감시 경로로 찾아 알린다.

    0666a5f4 · 2026. 8. 19.
  • 산소포화도 수집 · 경보

    측정 1건을 1행으로 쌓고 측정 시각 신선도와 경보 「확인」 상태를 측정 단위로 기억한다.

    186030ff · 2026. 8. 12.208895b3 · 2026. 9. 29.
  • 재난문자 · 태풍 · 폭염

    긴급재난문자 연동, 쌍태풍 경보, 외부 응답 실패 때 타임아웃과 폴백, 폭염 판정의 관측값 전환.

    945073dc · 2026. 7. 30.1bddbc4a · 2026. 7. 14.94b334c2 · 2026. 8. 14.
  • 인근 병원 · E-Gen

    현장 위치 기반 인근 병원 목록과 진료 시간 · 연락처 보강, 응급실 번호 오매칭 수리.

    71e2cec6 · 2026. 7. 3.9ebc8c0b · 2026. 7. 6.7e759fe0 · 2026. 8. 14.
  • 일정 캘린더

    캘린더 미디어 · 댓글, 위험작업 태그와 기상 예보 충돌 경고, 주간 일정표.

    8c908e49 · 2026. 6. 26.56ec20f8 · 2026. 7. 22.1561a4d3 · 2026. 8. 20.
  • GasPod · AED-alert 서버 연동

    GasPod 텔레메트리 수신과 AED 폴링 엔드포인트 · 심각도 판정으로 현장 장치를 관제 웹에 연결.

    ab883def · 2026. 7. 8.923066d6 · 2026. 7. 6.
  • 텔레그램 경보 · 계정 찾기

    관제 경보 5종 텔레그램 전송, 계정 찾기와 비밀번호 재설정.

    11053d09 · 2026. 7. 23.b3272238 · 2026. 8. 15.
  • 생체 추세 차트

    생체 패널을 기간 조회가 되는 Recharts 추세 차트로 바꾸고, 측정이 빈 16시간이 2시간처럼 보이던 축을 시간축으로 고쳤다.

    f055e304 · 2026. 7. 23.92ffb4f5 · 2026. 8. 13.

EDGE AI · ML

CCTV 엣지 AI · ML

YOLO26s · YOLO11s-pose · TensorRT · Jetson Orin Nano Super

  • 보호구 모델 1~7차 학습

    Google Colab 에서 자료 구성 · 라벨 정제 · 예약 홀드아웃을 바꿔 가며 학습. 6차는 지표가 좋아 보여도 홀드아웃 회귀로 배포를 막았다.

    bff5681c · 2026. 7. 28.5a92e984 · 2026. 7. 31.c3982ff5 · 2026. 9. 15.
  • 현장 35장 배포 게이트

    같은 현장 사진 35장 · 클래스별 문턱으로 판본을 고르는 게이트와 독립 채점 도구. 세 기준을 동시에 넘은 7차-E 를 라이브로.

    cb23b38f · 2026. 9. 15.
  • Jetson 엣지 운영

    두 대에 TensorRT 엔진 · 카메라 푸셔 · HTTPS 서명 티켓 게이트를 맞추고, 반납 전에 엔진 굽는 절차와 측정 도구를 남겼다.

    07df7441 · 2026. 9. 9.0c7a894b · 2026. 9. 28.dab6cd8f · 2026. 10. 7.
  • 자세 모델 · 낙상 규칙

    yolo11s-pose 로 바꿔 판정 가능 프레임을 90.2% 에서 99.6% 로 높이고, 몸통 각도 · 하강 규칙의 문턱을 143.88시간 로그 스윕으로 맞췄다.

    001351fb · 2026. 9. 15.d67babaa · 2026. 9. 15.

WEARABLE APPS

웨어러블 수집 앱

Kotlin · Wear OS · Swift · watchOS

  • 갤럭시 워치 단독 수집 앱

    Wear OS 수집 앱 착수부터 착용 판정 · QR 로그인 · 하트비트 · LTE 단독 업로드까지.

    c571afba · 2026. 8. 24.e481e991 · 2026. 9. 7.
  • Apple Watch → iPhone → 서버

    워치 측정을 iPhone 영속 큐와 재시도를 거쳐 서버로 보내는 수집 앱.

    70a9ac3a · 2026. 8. 11.541bfa95 · 2026. 8. 15.
  • 낙상 ML 3종 워치 탑재

    낙상 판정 모델 3종을 워치 앱에 파일 · 타깃까지 탑재.

    8e5c263e · 2026. 8. 27.

DEPLOY · OPS

배포 · 운영

Google Cloud Run · Cloud Build · Docker

  • 배포 안정화

    사후 관찰 90초 · 라우트 검증 · 원터치 롤백, 배포 대상을 승인 시점 커밋으로 고정, 배포 뒤 번들 검사.

    17058f25 · 2026. 8. 13.805f0d8b · 2026. 8. 28.35e78a23 · 2026. 9. 21.

문제 해결 사례.

폭염 판정을 예보값이 아닌 관측값으로

상황.
같은 시각 기상청 관측은 30.2℃ · 습도 67% 인데 서비스 입력은 26.6℃ · 86% 여서, 법정 기준 31℃ 를 사이에 두고 판정이 갈렸다.
행동.
계산식은 맞음을 먼저 확인한 뒤, 입력을 Open-Meteo 격자값에서 기상청 초단기실황 관측값으로 바꾸고 출처와 관측 시각을 남겼다.
결과.
기온 차 3.6℃ 를 드러냈고, 초단기실황 값은 관측소와 0.3℃ 차이로 확인했다.
94b334c2 · 2026. 8. 14.

모델 점수가 아니라 현장 게이트로 배포 판본 고르기

상황.
회차마다 검증 자료가 달라 mAP 를 단순 비교하면 한 클래스의 실패가 다른 수치에 가려졌다. 6차는 mAP 0.344 로 좋아 보였지만 홀드아웃에서 착용자 머리 오경보가 0.211 → 0.323 으로 늘었다.
행동.
6차 배포를 막고, 같은 현장 사진 35장에 안전모 · 사람 · 조끼를 모두 넘어야 하는 클래스별 문턱을 걸었다. 합산 점수는 만들지 않았다.
결과.
7차-E 가 안전모 96/100 · 사람 99/113 · 조끼 77/100 으로 세 기준을 동시에 넘은 유일한 판본이 되어 라이브로 올렸고, 장비 반납까지 운영했다.
5a92e984 · 2026. 7. 31.cb23b38f · 2026. 9. 15.

CCTV 영상을 서버 없이 안전하게 직결하기

상황.
현장 추론 서버의 포트는 설정 변경까지 인증 없이 열려 있어 그대로 공개할 수 없었고, 영상을 서버로 중계하면 지연과 비용이 생겼다.
행동.
바깥에는 읽기 전용 게이트 하나만 열었다. 티켓은 주소가 아닌 요청 헤더로만 받고, 젯슨에는 공개키만 두는 Ed25519 서명 · 일회용 id 영속 기록 · 스트림 조각마다 만료 재검사 · 동시 스트림과 분당 요청 상한을 걸었다.
결과.
무티켓 401 · 재사용 401 · 권한 밖 요청 403 · 다른 카메라와 현장 403 · 만료 401 · 재시작 뒤 재사용 차단까지 실측 17항목을 모두 통과했고, 관제 웹과 태블릿이 서버 중계 없이 영상과 통계를 직접 받았다.
07df7441 · 2026. 9. 9.

갤럭시 워치 QR 로그인 전부 만료 — 원인을 화면 시간에서 찾기

상황.
갤럭시 워치8 에서 QR 로그인이 6번 모두 승인 전에 만료됐다. 워치9 에서는 같은 코드가 문제없이 됐다.
행동.
화면이 꺼지면 폴링이 멈추는데, 워치8 의 화면 꺼짐은 15초이고 폰 승인은 16~25초 걸린다는 차이를 찾았다. QR 화면 동안에만 화면을 깨워 두고, 상시 켜짐을 막던 기존 가드는 「QR 단계 한정」 규칙으로 좁혔다.
결과.
실기기에서 QR 진입 뒤 44초까지 화면이 유지돼 로그인에 성공했고, 이후 업로드가 남김없이 전송됐으며 QR 을 벗어나면 저전력 화면으로 돌아왔다. 단위 시험 344건 통과.
e481e991 · 2026. 9. 7.

승인한 커밋과 실제 배포를 묶기

상황.
배포를 승인한 뒤 시작 전에 다른 작업의 커밋이 섞일 수 있었고, 빌드 때 박히는 CCTV 주소는 서버 응답 200 만으로는 빠졌는지 알 수 없었다.
행동.
배포 대상을 승인 시점 커밋으로 고정하고 같은 사본에서 검증하게 했다. 배포 뒤에는 모든 번들에서 게이트 주소를 찾고 「없음」과 「받지 못함」을 다른 종료값으로 나눴다.
결과.
가드 6건 · 변이 시험 11종 통과. 실제 검사에서 번들 17개 중 1개에서 주소를 확인했다.
805f0d8b · 2026. 8. 28.35e78a23 · 2026. 9. 21.

팀.

이름.수행 내용.
장우진팀장 · PM(기획 · 일정 · 역할 분담 · 공모전 대응), 관제 웹 프론트엔드 · 백엔드, 웨어러블 수집 앱, CCTV 엣지 AI · ML, 배포 · 운영
김태곤DB 스키마 설계, 현장 하드웨어(GasPod · AED-alert), 담당관 태블릿 앱, 워치 낙상 ML 학습
SYSTEM

현장에서 감지하고, 한 곳에서 판단합니다.

시스템.

NEXT.JS 15 · REACT 19 · TYPESCRIPT · TAILWIND · CLOUD RUN · POSTGRESQL 14

관제 웹 CONTROL WEB

현장 장치와 공공데이터를 한 화면에 모아 통합 안전 신호등으로 보이고, SOS · 낙상 · 생체 위험 경보를 텔레그램으로 바로 보내며 처리 기록을 남깁니다.

  • Next.js 15
  • React 19
  • TypeScript 5.7
  • Tailwind CSS
  • Google Cloud Run
  • Cloud Build
  • PostgreSQL 14
  • Row-Level Security
  • Telegram Bot
  • TOTP 2단계 인증
  • GitHub Actions
화면.
실시간 현장 관제 · 작업자 생체 모니터링 · 가스 · AED · CCTV · 인근 병원 · 일정 캘린더
경보 전파.
텔레그램 봇 — SOS · 낙상 · 생체 위험 · 현장 구획 이탈 · 생체 수신 없음
DB.
PostgreSQL 14 — 표 74 · 외래키 119 · RLS 정책 149 · 트리거 146 · 마이그레이션 101
검증.
관제 웹 시험 2,140/2,140 통과 (2026. 10. 7. 배포 검증)
배포.
Cloud Build 로 만든 이미지를 해시로 고정해 Cloud Run 에 교체 배포
보안.
관리자 TOTP 2단계 인증 · gitleaks 시크릿 스캔 · Dependabot
한계.
  • 화면은 2026. 10. 1. 캡처이며 실연동 장치와 데모 장치가 함께 표시돼 있습니다.

장우진 — 관제 웹 확장 · 서버 · 배포 · 운영 / 김태곤 — 초기 관제 화면 · 관리자 TOTP 2단계 인증.

관제 웹 열기 ↗ 로그인 필요.
워치 생체 요약 — 정상. 이름은 예시 값.
워치 생체 요약 — 정상. 이름은 예시 값.
워치 생체 요약 — 위험(온열). 이름은 예시 값.
워치 생체 요약 — 위험(온열). 이름은 예시 값.
워치 생체 요약 — 위험(산소포화도). 이름은 예시 값.
워치 생체 요약 — 위험(산소포화도). 이름은 예시 값.
워치 심박 추이 화면.
워치 심박 추이 화면.
워치 산소포화도 추이 화면.
워치 산소포화도 추이 화면.
워치 체온 추이 화면 — 피부온과 주변 온도.
워치 체온 추이 화면 — 피부온과 주변 온도.

KOTLIN · COMPOSE FOR WEAR OS · SAMSUNG HEALTH SENSOR SDK · HEALTH SERVICES · LTE

갤럭시 워치 GALAXY WATCH

작업자 손목에서 심박 · 산소포화도 · 피부 온도를 모아 폰 없이 관제로 보내고, 상태를 화면 색으로 알립니다.

  • Kotlin
  • Jetpack Compose for Wear OS
  • Wear OS (targetSdk 36)
  • Samsung Health Sensor SDK 1.4.1
  • Health Services
  • Foreground Service
  • QR 기기 로그인
수집.
심박 · 산소포화도 · 피부 온도 · 주변 온도 · 심박변이 · 걸음 · 오른 층 · 활동 에너지 · 움직임 · 배터리 · 위치 — 측정값이 있을 때만
전송.
폰 없이 워치 단독으로 LTE 직접 업로드
착용 감지.
저지연 미착용 센서로 착용하면 수집을 시작하고 벗으면 멈춤
로그인.
워치에는 코드와 QR 만, 폰 브라우저에서 관제 웹 계정으로 승인
화면.
0 로그인 → 1 생체 요약 → 2 심박 · 3 산소포화도 · 4 체온 · 5 스트레스 · 6 걸음
상태 색.
정상 · 주의 · 위험 · 무동작 · 전송 대기
한계.
  • 화면은 현행 코드를 갤럭시 워치 9 해상도(480×480)로 렌더한 것이며 이름은 예시 값입니다.

장우진 — 갤럭시 워치 수집 앱.

현장 35장 배포 게이트.안전모, 사람, 조끼의 판본 네 개를 정답 대비 검출 수로 비교하고 기준선을 표시합니다.정답 대비 검출 수.0255075100안전모.사람.조끼.5차.0/100 · 거짓 0.7차-A.0/100 · 거짓 0.7차-D.74/100 · 거짓 0.7차-E.96/100 · 거짓 1.5차.89/113 · 거짓 15.7차-A.95/113 · 거짓 10.7차-D.98/113 · 거짓 11.7차-E.99/113 · 거짓 7.5차.69/100 · 거짓 5.7차-A.85/100 · 거짓 6.7차-D.78/100 · 거짓 4.7차-E.77/100 · 거짓 2.
현장 35장 배포 게이트.같은 현장 사진 35장에서 판본별 정답 검출 수. 세 기준(안전모 94 · 사람 96 · 조끼 69 이상, 거짓 검출 상한)을 동시에 넘은 판본만 라이브로 올렸다.
현장 35장 배포 게이트.
분류.판본.검출.기준.거짓 검출.
안전모5차0/100940
안전모7차-A0/100940
안전모7차-D74/100940
안전모7차-E96/100941
사람5차89/1139615
사람7차-A95/1139610
사람7차-D98/1139611
사람7차-E99/113967
조끼5차69/100695
조끼7차-A85/100696
조끼7차-D78/100694
조끼7차-E77/100692
Jetson 추론 시간 (TensorRT).두 제트슨 기기의 보호구와 자세 추론 시간을 33.3밀리초 예산선과 비교합니다.0ms.10ms.20ms.30ms.40ms.30fps 예산.1호기 · CAM-03.2026. 9. 25. · 30.0fps.보호구.14.1ms.자세.14.1ms.2호기 · CAM-01.2026. 9. 25. · 29.7fps.보호구.14.9ms.자세.16ms.
Jetson 추론 시간 (TensorRT).2호기 값은 p50. 30fps 한 프레임 예산은 약 33.3ms 이다.
Jetson 추론 시간 (TensorRT).
기기.보호구.자세.초당 화면.
1호기 · CAM-0314.1ms14.1ms30
2호기 · CAM-0114.9ms16ms29.7
미착용 머리 검출 — 예약 홀드아웃 1,566개.판본 네 개의 재현율, 정밀도와 혼동 행렬 수치 표입니다.
미착용 머리 검출 — 예약 홀드아웃 1,566개.conf 0.25 기준. F1 이 가장 높은 지점은 네 판본 모두 conf 0.10 이었다(5차 재현율 0.987 · 정밀도 0.999). 같은 홀드아웃에서 기존 모델(vyra_ppe.pt) 재현율은 0.011. 7차-E 는 이 홀드아웃 측정이 없다.
판본.재현율.정밀도.TP.FP.FN.
5차0.9731.0001524042
6차0.9580.9991501165
7차-A0.9740.9991526140
7차-D0.9581.0001500066
미착용 머리 검출 — 예약 홀드아웃 1,566개.
판본.재현율.정밀도.TP.FP.FN.
5차0.97311524042
6차0.9580.9991501165
7차-A0.9740.9991526140
7차-D0.95811500066
자세 모델 교체 — yolo11n → yolo11s-pose.현장 판정 가능 화면, 공개 자료 낙상 재현율, 공개 자료 F1에서 작은 모델과 큰 모델을 비교합니다.0.25.50.75.100.현장 판정 가능 프레임.n 과 s 비교.n 90.23%.s 99.61%.GMDCSA-24 낙상 재현율.n 과 s 비교.n 0.671.s 0.785.GMDCSA-24 F1.n 과 s 비교.n 0.684.s 0.761.
자세 모델 교체 — yolo11n → yolo11s-pose.공개 가중치를 학습 없이 쓴 비교다. GMDCSA-24 는 침실 자료라 현장 낙상 성능이 아니다.
자세 모델 교체 — yolo11n → yolo11s-pose.
지표.n.s.
현장 판정 가능 프레임90.2399.61
GMDCSA-24 낙상 재현율0.6710.785
GMDCSA-24 F10.6840.761

YOLO26s · YOLO11s-POSE · TENSORRT · JETSON ORIN NANO SUPER ×2 · JETPACK 6.2

엣지 AI EDGE AI

카메라와 Jetson 을 묶은 엣지 유닛이 현장에서 안전모 · 조끼 착용과 자세를 판정했고, 게이트가 판정 영상과 통계를 서버 중계 없이 관제 웹 · 태블릿에 직접 보냈습니다.

  • YOLO26s (보호구 7차-E)
  • YOLO11s-pose (자세)
  • TensorRT
  • Jetson Orin Nano Super 8GB ×2
  • JetPack 6.2
  • Google Colab A100 학습
  • HTTPS 게이트 · Ed25519 일회용 티켓
학습.
Google Colab 에서 보호구 모델 1~7차 — AI Hub E63 35,227장 · GDUT · CSS · HHW
카메라.
CAM-01 TP-Link VIGI C340S IP 카메라 · CAM-03 GoPro HERO9
추론.
PPE 14.1~14.9ms · 자세 14.1~16.0ms · 영상 29.7~30.0fps (2026. 9. 25. 실측)
배포 게이트.
현장 35장에서 안전모 · 사람 · 조끼 세 기준을 동시에 통과한 판본만 라이브
전송.
1호기 HTTPS 게이트가 일회용 서명 티켓으로 영상과 통계를 직접 제공

Jetson 2대는 2026. 10. 7. 반납했습니다. 지금 관제 웹의 CCTV 칸에는 영상이 나오지 않습니다.

한계.
  • 0.987 은 5차 모델 · 예약 홀드아웃 1,566개 · F1 최고 지점(conf 0.10)의 값이며 7차-E 의 값이 아닙니다. 라이브는 conf 0.30 으로 돌렸습니다.
  • 7차-E 는 안전화 검출을 0/118 로 잃었습니다. 안전화는 게이트에서 감시만 했습니다.
  • 영상 낙상 규칙은 현장 낙상 정답이 0건이라 경보에 연결하지 않았습니다. 자세 모델 비교의 GMDCSA-24 는 침실 자료입니다.

장우진 — 모델 학습 · 배포 게이트 · 엣지 추론.

낙상 오탐을 줄인 두 단계.재학습과 경보 게이트가 낙상 오탐을 얼마나 줄였는지 항목마다 전 값을 기준으로 한 전후 막대로 표시합니다.v4 → v5 재학습.2026. 7. 29. 실행 리포트.전.75건.후.16건.−79%.2.8G 경보 게이트.섀도 7일 1,431건.전.5.29건/시간.후.0.65건/시간.−87%.
낙상 오탐을 줄인 두 단계.
낙상 오탐을 줄인 두 단계.
항목.전.후.변화.
v4 → v5 재학습75 건16 건−79%
2.8G 경보 게이트5.29 건/시간0.65 건/시간−87%
낙상 ML 3종 — 역할과 성능.세 낙상 모델의 역할, 지표, 값과 한계를 정리한 표입니다.
낙상 ML 3종 — 역할과 성능.
모델.역할.지표.값.한계.
work_veto작업 동작 기각LOSO 기각 정밀도0.971낙상 오기각 실측 0
impact고G 충격 판정LOSO PR-AUC0.460단독 판정 부적합 → 증거 전용
recovery쓰러진 뒤 미회복인물 내 정확도86%위험 미탐 1/11 · 1인 21윈도
  1. 12초 창(충격 전 2초 + 후 10초)
  2. work_veto 기각
  3. recovery 비회복 → 위험
  4. 피크 2.8G 이상
  5. 30초 본인 확인
  6. 무응답이면 경보 확정
낙상 ML 3종 — 역할과 성능.
모델.역할.지표.값.한계.
work_veto작업 동작 기각LOSO 기각 정밀도0.971낙상 오기각 실측 0
impact고G 충격 판정LOSO PR-AUC0.460단독 판정 부적합 → 증거 전용
recovery쓰러진 뒤 미회복인물 내 정확도86%위험 미탐 1/11 · 1인 21윈도

SWIFT · CORE ML · IMU 88특징 · LOSO 평가 · ONNX RUNTIME(WEAR OS 이식)

낙상 감지 FALL

워치 안에서 충격을 감지하면 작업 동작인지 가려내고, 본인이 30초 안에 응답하지 않을 때만 경보를 확정합니다. ML 은 경보를 억제하는 데만 쓰고 단독으로 경보를 내지 않습니다.

  • Swift · watchOS
  • Core ML (온디바이스)
  • IMU 88특징 · 12초 창
  • LOSO 교차 검증
  • ONNX Runtime (갤럭시 워치 이식)
work_veto.
작업 동작을 낙상 후보에서 기각 — LOSO 기각 정밀도 0.971 · 낙상 오기각 실측 0
impact.
고G 충격 판정 — LOSO PR-AUC 0.460, 단독 판정 부적합이라 증거 전용
recovery.
쓰러진 뒤 미회복만 위험 — 인물 내 정확도 86% · 위험 미탐 1/11
실기기.
자가검증 6/6 · 시나리오 4종 통과 · 25시간 착용 배터리 2.8%/h
한계.
  • recovery 는 1인 21윈도로 학습해 증량이 필요합니다.
  • 2.8G 경보 게이트는 매트 기준 낙상의 절반이 게이트 아래(피크 중앙값 2.76G)라는 한계가 있습니다.
  • 갤럭시 워치 이식은 실기기 시나리오 검증이 남아 있습니다.

김태곤 — 낙상 모델 학습 · 검증 / 장우진 — Apple Watch 수집 앱 · 워치 앱 탑재 · 관제 연동.

GasPod 실물 세 방향 — 투명 아크릴 4칸 케이스, 센서와 보드, 삼각대 거치.
GasPod 실물 세 방향 — 투명 아크릴 4칸 케이스, 센서와 보드, 삼각대 거치.

ESP32-S3 · ARDUINO · SEN0322 · MQ-7 · MQ-136 · BME280 · WI-FI OTA

GASPOD

밀폐공간의 산소 · 일산화탄소 · 황화수소 · 온습도 · 기압을 재고, 현장에서 바로 빛과 소리로 경보한 뒤 5초마다 관제로 보냅니다.

  • ESP32-S3-WROOM-1 N16R8
  • Arduino
  • SEN0322 (O₂)
  • MQ-7 (CO)
  • MQ-136 (H₂S)
  • BME280 (온습도 · 기압)
  • Wi-Fi OTA (v5)
경보 문턱.
산소 19.2% 미만 경고 · 18.5% 미만 위험, CO · H₂S 는 원시값 문턱
전송.
5초마다 HTTP POST, 상태가 바뀌거나 확인 버튼을 누르면 즉시
현장 경보.
빨강 · 노랑 LED · 부저 · 확인 버튼(소리만 끄고 LED 는 유지)
전원.
삼성 30Q 2셀 · 5V 승압 · 보수 약 7시간 · 3.2V 경고 / 3.0V 안전 종료
케이스.
5T 아크릴 4칸 타워 180×113×195mm · 삼각대 거치
무선 갱신.
v5 펌웨어 배터리 단독 OTA 실증 (2026. 8.)
끊김.
Wi-Fi 가 없어도 현장 경보는 계속하고 전송만 건너뜀
한계.
  • 교육용 프로토타입입니다. ppm 정량값과 산업 인증(검교정 · 방폭 · IP)은 주장하지 않습니다.

김태곤 — 회로 · 펌웨어 · 케이스 제작 / 장우진 — 텔레메트리 수신 · 관제 웹 연동.

AED-alert 실물 세 방향 — 흰 본체 위 빨간 경광등과 노란 받침.
AED-alert 실물 세 방향 — 흰 본체 위 빨간 경광등과 노란 받침.

RASPBERRY PI · PYTHON · RPI.GPIO · SYSTEMD · HTTP 폴링

AED 경보 AED ALERT

AED 배터리와 전극패드 교환 주기를 서버가 판정하면, 현장 장치가 그 상태를 빛과 소리로 알립니다.

  • Raspberry Pi
  • Python · RPi.GPIO
  • systemd 서비스
  • HTTP 폴링 /api/aed/alarm
판정.
단말 배터리 · AED 본체 배터리 · 전극패드 교환 주기 가운데 가장 나쁜 값 (서버)
경보.
위험 — 빨강 LED + 부저 0.12초 순차, 해제 전까지 유지 · 경고 — 노랑 LED + 0.25초 순차
끊김.
응답이 없거나 시간이 넘으면 직전 경보 단계를 유지
수동 경보.
강제 활성화 버튼 — 서버와 무관하게 1분간 위험 유지
운영.
systemd 로 부팅 때 자동 시작, 비정상 종료 5초 뒤 재시작
부품.
LED 2 · 액티브 부저 4 · 버튼 1 · 전원 스위치 1 · 5V 어댑터
한계.
  • 가장 가까운 AED 의 위치를 사이렌으로 알리는 기능은 개발 예정입니다.

김태곤 — 장치 제작 / 장우진 — 폴링 엔드포인트 · 심각도 판정 · 관제 웹 연동.

기상청 초단기실황 · 기상특보 · 태풍 · 행정안전부 재난문자 · OPEN-METEO 돌풍

기상 · 강풍 WEATHER

기상청 관측 · 특보 · 태풍 정보와 행정안전부 긴급재난문자를 현장 위치에 맞춰 보여 주고, 폭염 · 강풍 작업중지 기준과 대조합니다.

  • 기상청 초단기실황
  • 기상청 기상특보
  • 기상청 태풍 정보
  • 행정안전부 긴급재난문자
  • Open-Meteo 돌풍 예보
폭염.
법정 기준인 기상청 체감온도 31℃ 를 관측값(초단기실황)으로 판정
강풍.
강풍 · 태풍 특보 때 순간풍속 10m/s 이상 타워크레인 작업 중지, 15m/s 이상 외부작업 전면 중지 안내(KOSHA 참고)
특보 · 재난문자.
현장 위치에 맞춘 현재 발효 특보와 인근 재난문자 표시
태풍.
진로 · 중심 기압 · 최대 풍속 표시
한계.
  • 크레인 풍속계 실측 연동은 개발 예정입니다. 지금은 기상 자료로 판단합니다.

장우진 — 태풍 경보 · 재난문자 연동 · 폭염 관측값 전환 / 김태곤 — 기상 · 태풍 클라이언트 첫 작성.

공공데이터 12종 · 8개 기관.다섯 기관의 일곱 공공데이터와 현장 쓰임을 정리한 목록입니다.
공공데이터 12종 · 8개 기관.
기관.데이터.쓰임.
  • 조달청나라장터 입찰공고위험작업 추출 · 사전 위험도
  • 조달청나라장터 계약진행 중 공사 현장
  • 조달청종합쇼핑몰 품목정보보호구 조달 단가
  • 국세청사업자등록 상태조회발급처 계속 · 휴업 · 폐업
  • 법제처국가법령정보산업안전 고시 개정 감지
  • 기상청초단기실황폭염 작업 기준
  • 기상청기상특보현장 위치 특보
  • 기상청태풍 정보진로 · 기압 · 풍속
  • 행정안전부긴급재난문자인근 재난 알림
  • 국립중앙의료원E-Gen 병의원인근 병원
  • 국토교통부VWorld좌표 · 지도 · 지적도
  • 안전보건공단사고사망 · 재해사례사고 정보
공공데이터 12종 · 8개 기관.
기관.데이터.쓰임.
조달청나라장터 입찰공고위험작업 추출 · 사전 위험도
조달청나라장터 계약진행 중 공사 현장
조달청종합쇼핑몰 품목정보보호구 조달 단가
국세청사업자등록 상태조회발급처 계속 · 휴업 · 폐업
법제처국가법령정보산업안전 고시 개정 감지
기상청초단기실황폭염 작업 기준
기상청기상특보현장 위치 특보
기상청태풍 정보진로 · 기압 · 풍속
행정안전부긴급재난문자인근 재난 알림
국립중앙의료원E-Gen 병의원인근 병원
국토교통부VWorld좌표 · 지도 · 지적도
안전보건공단사고사망 · 재해사례사고 정보

12종 · 8개 기관 · 조달청 나라장터 · 국세청 · 법제처 · 기상청 · 행정안전부 · E-GEN · VWORLD · 안전보건공단

공공데이터 PUBLIC DATA

8개 기관의 공공데이터 12종을 실제로 연동했습니다. 현장 안전(기상 · 재난 · 응급 · 지도 · 사고 정보)과 공사 정보(조달 · 사업자 · 법령)를 관제 화면에서 함께 씁니다.

  • 조달청 나라장터 입찰공고
  • 조달청 나라장터 계약
  • 조달청 종합쇼핑몰 품목정보
  • 국세청 사업자등록 상태조회
  • 법제처 국가법령정보
  • 기상청 초단기실황
  • 기상청 기상특보
  • 기상청 태풍 정보
  • 행정안전부 긴급재난문자
  • 국립중앙의료원 E-Gen
  • 국토교통부 VWorld
  • 안전보건공단 사고사망 · 재해사례
조달청 나라장터 입찰공고.
공사 공고의 과업 문서에서 위험작업을 뽑아 사전 위험도를 매김 — 키워드 선별 → CLOVA Studio HCX-005 구조화 추출 → 원문 근거 검증
조달청 나라장터 계약.
착공 · 진행 중 공사 현장 확인
조달청 종합쇼핑몰 품목정보.
개인보호구 조달 실단가 조회
국세청 사업자등록 상태조회.
증빙 발급처의 계속 · 휴업 · 폐업 상태 확인
법제처 국가법령정보.
고용노동부 산업안전 고시의 개정 감지 · 별표(HWP) 파싱으로 요율 자동 대조
기상청 초단기실황.
관측 기온 · 습도 · 풍속으로 폭염 작업 기준 판단
기상청 기상특보.
현장 위치에 맞춘 현재 발효 특보
기상청 태풍 정보.
태풍 진로 · 중심 기압 · 최대 풍속
행정안전부 긴급재난문자.
현장 인근 재난문자 알림
국립중앙의료원 E-Gen.
인근 병원 연락처 · 진료 시간 · 좌표
국토교통부 VWorld.
주소 좌표 변환 · 지도 타일 · 연속지적도
안전보건공단.
사고사망 · 재해사례 게시판(실응답 확인). 건설현장 안전 신호등 API 는 기관 서버 오류(99)로 목업 유지
보조 데이터.
공공데이터 밖의 외부 자료 — Open-Meteo 예보 · 대기질, RainViewer 레이더, NASA GIBS 위성, 일본 기상청 태풍, 네이버 지역 검색 · 뉴스
한계.
  • 조달청 · 국세청 · 법제처 · 안전보건공단 클라이언트는 키가 없거나 응답이 실패하면 캐시 · 목업 · 내장 기준값으로 강등해 화면이 멈추지 않게 했습니다.

장우진 — 재난문자 · E-Gen · VWorld 첫 연동, 기상 · 태풍 확장 / 김태곤 — 조달청 · 국세청 · 법제처 · 안전보건공단 · 기상 첫 연동.

FILM

현장의 신호가 안전한 판단으로 이어집니다.

영상.

AWARDS

대회에서 검증받은 기록.

수상.

수상대상 상장 — 아이디어 기획, 팀 VitAlGuard. 팀원 성명은 가림.

대상 · 조달청장상

아이디어 기획 부문

2026년 공공조달데이터·AI 활용 창업경진대회

조달청 · 2026. 8. 3.
본선 발표

통합본선 발표 · A09

아이디어 부문 · 조달청 추천

제14회 범정부 공공데이터·AI 활용 창업경진대회

행정안전부 · 2026. 9. 30.
TIMELINE

현장과 함께 쌓아 가는 기록.

기록.

  1. 2026. 6.

    아이디어 플랜 V2.x 제출 · 신규 DB 설계 착수

  2. 2026. 6. 24.

    실착용 운영 시작 — 8월 1일까지 39일 동안 생체 샘플 247,518건

  3. 2026. 7. 16.

    2차 심사 5분 대면 발표(v2.8)

  4. 2026. 7.

    CCTV 보호구 판정 모델 학습(Google Colab) · Jetson 엣지 추론 착수

  5. 2026. 8. 3.

    공공조달데이터·AI 활용 창업경진대회 대상(조달청장상) · 조달청 추천으로 범정부 통합본선 진출

  6. 2026. 8.

    DB 외부 감사 · 보안 보강 · GasPod v5 무선 업데이트 실증 · Apple Watch 수집 앱 PoC · 갤럭시 워치 수집 앱 착수

  7. 2026. 9.

    담당관 태블릿 앱 Compose 재작성(1.0 → 1.3.18) · 자세 모델 yolo11s-pose 전환(9. 14.) · 보호구 모델 7차-E 라이브(9. 15.)

  8. 2026. 9. 30.

    제14회 범정부 공공데이터·AI 활용 창업경진대회 통합본선 아이디어 부문 발표(A09)

  9. 2026. 10. 2.

    시연 영상 공개

  10. 2026. 10. 7.

    CCTV Jetson 2대 반납 · 관제 웹 배포

  11. 2026. 10. 8.

    홍보 영상 공개

CONTACT

현장 안전을 함께 연결합니다.

연락.

EMAILchangwoojin@gmail.com

관제 웹 열기 ↗ 로그인 필요.
FILM

VitAlGuard 본편.