-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
개요
실시간 얼굴 인식 스트림에서 인물이 인식되면 자동으로 출석을 기록하는 로직을 구현합니다.
선행 작업
- 프로젝트 디렉토리 구조 생성 #1 SQLite 데이터베이스 설정 및 출석 모델 구현
배경
현재 generate_frames() 함수에서 실시간으로 얼굴을 인식하고 있습니다. 여기에 출석 기록 로직을 연동하여, 인식된 인물을 자동으로 출석 처리합니다.
요구사항
출석 기록 트리거 조건
- 얼굴이 인식(recognized) 되었을 때 (Unknown 제외)
- 신뢰도(confidence)가 임계값(0.5) 이상일 때
- 해당 인물이 당일 미출석 상태일 때
중복 방지 전략 (2단계)
- 메모리 캐시: 당일 출석 완료된 face_id를 메모리에 캐싱하여 DB 조회 최소화
- DB 제약조건:
UNIQUE(face_id, date)+INSERT OR IGNORE로 최종 방어
구현 항목
-
generate_frames()내에 출석 기록 로직 추가- 인식 성공 시 → 당일 출석 여부 확인 (메모리 캐시 우선) → 미출석이면 기록
- 당일 출석 캐시 구현 (daily reset)
_today_attendance_cache: Set[str]- 당일 출석 완료된 face_id 집합- 자정에 자동 리셋 (날짜 변경 감지)
- 카메라 통계(
_camera_stats)에 출석 정보 추가today_attendance_count: 오늘 총 출석 인원latest_attendance: 가장 최근 출석 기록
성능 고려사항
- 프레임마다 DB 쓰기 방지 (캐시 활용)
- 비동기 처리 또는 별도 스레드에서 DB 기록
- 인식 결과가 안정적일 때만 기록 (연속 N프레임 인식 시)
완료 기준
- 카메라에 얼굴이 인식되면 자동으로 출석 기록
- 같은 날 동일 인물은 1회만 기록
- 카메라 통계에 출석 정보 포함
- 성능 저하 없이 실시간 스트리밍 유지
Reactions are currently unavailable