Face Login, Hand Gesture Control, and OCR Capture System on Raspberry Pi 5
- About The Project
- 실행 방법
- Gesture Controls
- System Workflow
- Key Features
- Tech Stack
- Project Structure
- Acknowledgments
- Collaborators
이 프로젝트는 키보드나 마우스와 같은 전통적인 입력 장치 없이, 컴퓨터 비전 기술을 활용하여 사용자와 컴퓨터 간의 상호작용(HCI)을 구현하는 것을 목표로 합니다. 라즈베리파이 5와 카메라 모듈을 사용하여, 얼굴 인식을 통한 사용자 인증 및 손 제스처를 통한 마우스 제어, 화면 캡처, OCR 등의 복합적인 작업을 수행하는 통합 시스템입니다.
- Raspberry Pi 5 + Camera Module 3
- Raspberry Pi OS (X11 환경 설정 필수)
sudo raspi-config>Interface Options>Camera→ Enablesudo raspi-config>Advanced Options>Wayland→ X11 설정sudo reboot필수
git clone https://github.com/summer-Gamba/fingerMouse.git
cd fingerMouse
sudo apt update && sudo apt upgrade -y
sudo apt install python3-picamera2
python -m venv .venv --system-site-packages
source .venv/bin/activate
pip install -r requirements.txt python main.py| 제스처 / 키보드 | 기능 |
|---|---|
Open 🖐️ |
모드 전환 (마우스 제어 ↔ 캡처 & OCR) |
Pointer ☝️ |
커서 이동 또는 캡처 영역 지정 |
Pointer (1.5초 고정) |
클릭 또는 영역 시작/끝 지정 |
Close ✊ |
선택한 영역을 캡처하고 OCR 수행 |
r 키 |
캡처 리셋 |
q 키 |
시스템 종료 |
얼굴 인식
├─ 등록 모드 (r 입력): 이름 등록 후 사용자 얼굴 3면 촬영
└─ 로그인 모드: 1.5초간 얼굴 매치 성공 시 로그인 완료
↓
손 제스처 인식
├─ Pointer ☝️ : 마우스 제어
├─ Open 🖐️ : 모드 전환
└─ Close ✊ : 캡처 실행
↓
화면 캡처 + OCR 수행- 프로그램 시작: Tkinter GUI 실행
- 얼굴 인식:
Start Face Recognition버튼 클릭
2.1 사용자 등록:r키 입력 후 이름 등록 및 얼굴 3면 촬영
2.2 사용자 로그인: 1.5초 인식 후 로그인 성공 → 로그인 완료 후 손 제스처 모드 진입 - 손 제스처 모드
3.1 Pointer 제스처 ☝️: 마우스 이동 및 클릭
3.2 Open 제스처 🖐: Capture 모드 전환 → Pointer 제스처 이용해 1.5초간 고정하면 캡쳐 START와 END 영역 지정
3.3 Close 제스처 ✊: 캡처 실행 & OCR 수행 - OCR 결과: 터미널 출력
1. 얼굴 인식 로그인
Lightweight-FD를 이용한 얼굴 검출과 MobileFaceNet 임베딩 모델을 TFLite로 경량화하여 라즈베리파이 환경에서 실시간 얼굴 인식을 수행한다. 지속적인 프레임 단위 매칭 검증 방식을 적용해 안정적인 사용자 인증을 보장한다.
2. 손 제스처 인식
MediaPipe Hands로 추출한 손 관절 21개의 (x, y) 좌표를 입력 벡터로 변환한 뒤, MLP 기반 Keypoint Classifier로 Pointer, Open, Close 등의 제스처를 분류한다.
3. 마우스 제어
Pointer 제스처로 커서를 이동하며, 손가락 위치를 일정 시간 고정하면 dwell-click을 수행한다. 이를 통해 물리적 클릭 장치 없이도 마우스 조작이 가능하다.
4. OCR 캡처 모드
Open 제스처로 마우스 제어 모드와 캡처 모드를 전환하고, Pointer 제스처로 영역 시작과 끝을 지정한다. Close 제스처가 입력되면 해당 영역을 캡처하여 OCR 모듈로 전달한다.
5. OCR 텍스트 인식
EAST(Efficient and Accurate Scene Text Detector)로 텍스트 영역을 검출하고, CRNN 기반 TFLite모델로 문자를 추출한다.
6. UI 시각화
Tkinter 기반 전체화면 오버레이 UI로 제스처 모드 상태, 캡쳐 영역 등을 시각적으로 표시한다.
| 구분 | 사용 기술 |
|---|---|
| 하드웨어 | Raspberry Pi 5, Camera Module 3 |
| GUI/입력 | Tkinter, pyautogui, pynput |
| 비전 처리 | OpenCV, Picamera2 |
| 얼굴 인식 | Lightweight-FD + MobileFaceNet (TFLite) |
| 제스처 인식 | MediaPipe Hands + Keypoint Classifier (TFLite) |
| OCR | EAST (DNN) + CRNN 기반 문자 인식기 (TFLite) |
fingerMouse/
├── face/ # 얼굴 인식 모델
│ ├── Lightweight-Face-Detection.tflite
│ └── MobileFaceNet_9925_9680.tflite
├── handMini2/ # 손 제스처 모델
│ ├── model/
│ │ └── keypoint_classifier/
│ │ ├── keypoint_classifier.py
│ │ ├── keypoint_classifier_base.tflite
│ │ └── keypoint_classifier_label.csv
│ └── utils/
│ └──calc_landmark.py
├── ocr/ # OCR 모델
│ ├── frozen_east_text_detection.pb
│ └── recognizer_model.tflite
├── main.py # 메인 실행 파일
├── requirement.txt
├── capture.png # 캡처된 이미지
└── README.md - Qualcomm AI Hub for lightweight face detection model
- Sirius AI for MobileFaceNet TensorFlow implementation
- ARM for Cortex-A76 architecture optimization
- kinivi for hand gesture model based on MediaPipe
- kerasOCR for TFLITE.
- How to convert EAST model to TFLITE
- Raspberry Pi Foundation for Raspberry Pi 5 and Camera Module 3
- TensorFlow Lite team for optimized runtime






