이 프로젝트는 2025년도 정부(과학기술정보통신부)의 재원으로 정보통신기획평가원의 지원을 받아 수행된 연구임 (No.RS-2022-00155857, 인공지능융합혁신인재양성(충남대학교))
This project was supported by the Institute of Information & Communications Technology Planning & Evaluation (IITP) grant funded by the Korean government (MSIT) (No.RS-2022-00155857, AI Convergence Innovation Talent Training Program at Chungnam National University).
CleanCheck는 안드로이드 태블릿(키오스크) 환경에서 구동되는 온디바이스 AI 시스템입니다. 컴퓨터 비전 기술을 활용하여 사용자의 손 씻기 동작을 실시간으로 인식하고, 세정된 부위를 히트맵으로 시각화하여 감염 예방을 위한 올바른 손 위생 습관을 코칭합니다.
cleancheck.org (HomePage)
감염 관리의 패러다임을 '사후 분석'에서 '실시간 예방'으로.
-
WHO 6단계 표준 동작 코칭
yolo패키지 내 탑재된 YOLOv8n 모델이 카메라로 입력되는 손 씻기 동작을 실시간으로 분류합니다. 손바닥, 손등, 손깍지 등 WHO 권장 단계를 인식하여 절차적 준수도를 평가합니다. -
실시간 세정 커버리지 시각화 (Hybrid Analysis) MediaPipe Hand Landmarker로 양손의 21개 랜드마크를 추적하고, 기하학적 분석(Convex Hull)을 통해 손끼리의 접촉 여부를 판정합니다. 문지름이 감지된 영역은 실시간으로 색상이 입혀져 시각적인 피드백을 제공합니다.
-
키오스크 모드 및 사용자 식별 다중 사용자가 이용하는 병원/공공시설 환경을 고려하여
kiosk모드를 지원합니다. MobileFaceNets 기반의 안면 인식을 통해 사용자를 식별하고, 개인별 위생 리포트를db(Room)에 저장하여 관리합니다. -
개인정보 보호 (On-device AI) 네트워크 통신 없이 모든 연산이 기기 내부에서 처리되므로, 민감한 영상 데이터나 생체 정보가 외부로 유출되지 않습니다.
본 프로젝트는 Clean Architecture 원칙에 따라 데이터, 도메인, UI 계층을 분리하여 설계되었습니다.
| 구분 | 기술 스택 / 라이브러리 | 설명 |
|---|---|---|
| Language | Kotlin | 전체 애플리케이션 로직 구현 |
| Architecture | MVVM | ui, domain, data 패키지 분리를 통한 유지보수성 확보 |
| AI Inference | TensorFlow Lite | YOLOv8(동작 인식) 및 FaceNet(얼굴 인식) 온디바이스 추론 |
| Computer Vision | MediaPipe | 실시간 손 랜드마크 추적 및 제스처 분석 |
| Local DB | Room | 사용자 정보 및 분석 결과 로컬 저장 (data/db) |
| Background | WorkManager | 데이터 동기화 및 백그라운드 작업 처리 (data/worker) |
| UI | Android View/XML | res/layout 기반의 직관적인 사용자 인터페이스 |
CleanCheckNative/
├─ app/
│ ├─ src/
│ │ └─ main/
│ │ ├─ java/
│ │ │ └─ com/example/cleanchecknative/
│ │ │ ├─ data/ # 데이터 계층
│ │ │ │ ├─ db/ # 로컬 DB (Room 등)
│ │ │ │ ├─ remote/ # 네트워크/원격 데이터 소스
│ │ │ │ └─ worker/ # WorkManager 등 백그라운드 작업
│ │ │ ├─ domain/ # 도메인 로직, use case
│ │ │ ├─ kiosk/ # 키오스크/전시 모드 관련
│ │ │ ├─ ui/ # 프레젠테이션 계층
│ │ │ │ ├─ common/ # 공통 UI 컴포넌트
│ │ │ │ ├─ hand/ # 손 인식/제스처 관련 화면
│ │ │ │ ├─ handwash/ # 손씻기 훈련/평가 화면
│ │ │ │ ├─ pose/ # 전신 포즈/자세 관련
│ │ │ │ ├─ recognize/ # 사용자/세션 인식 화면
│ │ │ │ ├─ register/ # 사용자 등록/관리
│ │ │ │ ├─ results/ # 훈련 결과 리포트
│ │ │ │ ├─ theme/ # 테마/스타일
│ │ │ │ ├─ user/ # 단일 사용자 화면
│ │ │ │ └─ userlist/ # 사용자 목록 화면
│ │ │ └─ yolo/ # YOLO 관련 래퍼/유틸
│ │ ├─ assets/
│ │ │ └─ steps/ # WHO 6단계 등 리소스
│ │ └─ res/
│ │ ├─ layout/ # XML 레이아웃
│ │ ├─ font/
│ │ ├─ raw/
│ │ ├─ values/ # colors, strings, styles 등
│ │ └─ xml/
│ └─ src-main/
│ └─ java/com/example/cleanchecknative/ui/common/
│ (↳ 기존 common UI, 마이그레이션 중인 듯)
│
├─ .idea/ # IDE 설정
├─ .gradle/ # Gradle 캐시
├─ build/ # 프로젝트 리포트 등 빌드 산출물
└─ gradle/wrapper/ # Gradle wrapper 설정
- Android Studio (Ladybug 이상 권장)
- Android Device: Android 10 (API Level 29) 이상 태블릿
- 권장 사양: NPU가 탑재된 최신 AP (Snapdragon 8 Gen 1 이상) 권장
# 1) 리포지토리 클론
$ git clone https://github.com/chanwoopark11/CleanCheckNative.git
# 2) Android Studio에서 프로젝트 열기
# File > Open > 'CleanCheckNative' 디렉토리 선택
# 3) Gradle Sync 및 빌드
# local.properties 설정 확인 후 Build 진행assets/폴더 내에 TFLite 모델 파일(yolov8n.tflite,mobilefacenet.tflite)이 존재하는지 확인해주세요.- 키오스크 모드 테스트를 위해서는 개발자 옵션 활성화 및 카메라 권한 허용이 필요합니다.
| 역할 | 이름 | 연락처 (Email) | 소속 |
|---|---|---|---|
| 프로젝트 매니저 | 주다빈 | programbins@gmail.com | 충남대학교 컴퓨터융합학부 |
| AI CV 모델링 | 최민서 | msc503@naver.com | 충남대학교 컴퓨터융합학부 |
| 데이터 수집·검증 | 박찬우 | pcw22600@gmail.com | 충남대학교 컴퓨터융합학부 |
| 실험 및 검증 | 민영순 | zhzhxh@cnuh.co.kr | 충남대학교병원 |
| 프로젝트 지도 | 김재정 교수 | jjkim@cnu.ac.kr | 충남대학교 / 바이오AI융합연구센터 |
Copyright © 2025 CleanCheck Team. All Rights Reserved.
