📌 머신러닝 기반 얼굴 및 제스처 인식 출퇴근 기록 시스템
웹캠을 통해 사용자의 얼굴을 등록 및 인식하고, 손 제스처를 통해 출근/퇴근/외출/복귀를 기록할 수 있습니다.
📅 개발 기간
- 24/05/27 ~ 24/06/16
🛠️ 주요 라이브러리
- OpenCV (cv2) : 얼굴 감지, 웹캠 연동, 이미지 전처리
- Face Recognition (face_recognition) : 얼굴 특징 추출(128차원 벡터) 및 비교
- MediaPipe : 손 제스처 인식 (21개 랜드마크 검출)
- Scikit-learn : SVM, KNN, RandomForest, AdaBoost 모델 학습
- NumPy : 벡터 연산 및 데이터 처리
- Pandas : 출퇴근 로그 파일(attendance_log.txt) 관리
- Pillow (PIL) → OpenCV 이미지를 활용한 UI 버튼 및 텍스트 출력
- os → 시스템 폴더/파일 관
- time → 인증 시간 기록 및 지연 처리
🎯 구현 기능
- 얼굴 인식 기반 사용자 인증 (Face Recognition)
- 손 제스처 인식 기반 출퇴근 선택 (MediaPipe)
- 가상 버튼 UI를 활용한 출퇴근 입력 시스템
- 출퇴근 로그 기록 (attendance_log.txt)
- 데이터 증강 기법 적용 (얼굴 이미지 10배 증강 후 학습)
📂 프로젝트 구조
📂출퇴근시스템/
│── 📂.ipynb_checkpoints/ # Jupyter 자동 백업 폴더
│── 📂김주리/ # 사용자 얼굴 데이터 폴더
│── 📂유창민/
│── 📂조윤서/
│── 📂README.md # 프로젝트 설명
│── 📂attendance_log.txt # 출퇴근 기록 로그 파일
│── 📂ensemble_model.pkl # 머신러닝 앙상블 모델
│── 📂ensemble_model2.pkl # 추가 학습된 모델
│── 📂앙상블 모델(최종).ipynb # Jupyter Notebook (머신러닝 모델 학습 및 출퇴근 기록)
* 시연
1️⃣ 웹캠을 통해 사용자 얼굴 캡처 및 저장 (100장)
웹캠을 통해 실시간으로 얼굴 이미지를 100개 캡처한다.
폴더명을 입력받고 저장한다.
폴더 생성 완료.
2️⃣ 한 장당 10개의 데이터셋 증가 (이미지 증강 기법)
사진 하나당 10개의 데이터셋이 증가한 것을 확인할 수 있다.
3️⃣ 얼굴 데이터 학습
한 명당 500장씩 총 1500개의 얼굴 사진 데이터를 학습시켰다.
3️⃣ 사용자 인증
등록된 사용자인지 얼굴을 확인하는 단계이다.
등록된 얼굴 데이터가 있는지 확인한다.
인증 실패 시, "인증에 실패하였습니다. 다시 시도해 주세요."라는 메시지가 출력되며 프로그램이 종료된다.
4️⃣ 인증 성공 시 가상 버튼 인터페이스 출력
등록된 사용자 인증이 완료되면, 가상 버튼 인터페이스가 화면에 표시된다.
사용자는 손을 이용하여 '출근', '외출', '복귀', '퇴근' 버튼을 누를 수 있다.
5️⃣ 버튼에 3초 이상 손을 대고 있으면 선택 완료
사용자가 손으로 가리키면 '복귀하시겠습니까?'라는 메시지를 출력하고,
3초 이상 손을 대고 있으면 선택이 완료됨과 동시에 캠이 종료된다.
커피나 핸드폰과 같은 손이 아닌 다른 것은 인식하지 않는 것을 확인할 수 있다.
6️⃣ 실시간 출퇴근 로그 기록
사용자가 출퇴근한 시간이 메모장에 자동 기록된다.
여기에는 이름, 시간, 출퇴근 상태가 저장되어 있다.
'Project' 카테고리의 다른 글
IoT 기반 세탁기 시스템 (0) | 2025.03.03 |
---|---|
YOLOv8 실시간 객체 탐지 웹 애플리케이션 (4) | 2024.11.11 |