curiositech/windags-skills

face-recognition-system-builder

Build face recognition systems with InsightFace, ArcFace, enrollment pipelines, HDBSCAN clustering, and privacy-compliant architecture.

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/curiositech/windags-skills --skill face-recognition-system-builder

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Face Recognition System Builder

Build production face recognition systems with InsightFace/ArcFace for enrollment, verification, identification, and clustering with privacy-compliant architecture.

Decision Points

Model Selection Decision Tree

Requirements Analysis:
├── Latency < 50ms per face?
│   ├── YES: Use buffalo_sc (lightweight, 0.7 accuracy)
│   └── NO: Continue to accuracy analysis
├── Accuracy > 95% required?
│   ├── YES: Use AdaFace (premium accuracy, 200ms latency)
│   └── NO: Use buffalo_l (balanced, 100ms latency)
└── Mobile/Edge deployment?
    ├── YES: buffalo_sc or custom quantized model
    └── NO: buffalo_l or AdaFace

Threshold Tuning Heuristic

Use CaseFAR TargetFRR TargetThreshold RangeValidation
Security/Access Control<0.1%1-5%0.55-0.65Test on impostor pairs
Photo Organization2-5%<1%0.35-0.45Test on family albums
Investigation/Forensics<0.01%10-20%0.65-0.75Test on mugshot datasets
Social Media Tagging5-10%<2%0.30-0.40Test on casual photos

Enrollment Quality Decision

Per photo assessment:
├── Face detected with confidence > 0.7?
│   ├── NO: Reject photo, request new one
│   └── YES: Continue
├── Face size > 80px AND < 50% of image?
│   ├── NO: Reject (too small or too close)
│   └── YES: Continue
├── Pose deviation < 30 degrees (yaw/pitch)?
│   ├── NO: Flag as "supplementary only"
│   └── YES: Mark as "primary reference"
└── Final decision:
    ├── 3+ primary references: Complete enrollment
    ├── 1-2 primary + 2+ supplementary: Proceed with warning
    └── <3 total valid: Require additional photos

Failure Modes

1. Pose/Lighting Degradation

Detection: Similarity scores dropping consistently below historical baseline (>10% decrease) Symptoms: Good enrollments start failing verification, complaints of "system doesn't recognize me" Diagnosis: Environmental conditions changed (new lighting, camera angle, seasonal changes) Fix:

  • Re-tune threshold based on recent data
  • Add current condition photos to existing enrollments
  • Implement adaptive threshold based on lighting detection

2. Enrollment Contamination

Detection: New enrollment has unusually high similarity (>0.8) to existing different identity Symptoms: False positive identifications, "system thinks I'm someone else" Diagnosis: Multiple people enrolled under same identity, or identity mixup during enrollment Fix:

  • Audit enrollment: manually review all photos for consistency
  • Split contaminated enrollment into separate identities
  • Re-enroll with verified identity documentation

3. Threshold Drift Over Time

Detection: FAR/FRR metrics shifting >2% from baseline over 30-day periods Symptoms: Gradual increase in false accepts OR false rejects system-wide Diagnosis: Population demographics changing, or model degradation on new data patterns Fix:

  • Weekly threshold validation on held-out test set
  • Retrain similarity calibration monthly
  • Implement per-demographic threshold adjustments

4. Quality Gate Bypass

Detection: Average enrollment quality score dropping while new enrollments increase Symptoms: Poor recognition accuracy for recently enrolled users Diagnosis: Operators bypassing quality checks to meet enrollment quotas Fix:

  • Implement hard technical blocks on low-quality enrollments
  • Separate enrollment approval from quality assessment
  • Add post-enrollment validation testing

5. Privacy Compliance Drift

Detection: Embedding storage growing faster than enrollment count, or missing consent records Symptoms: Legal compliance audit failures, data retention violations Diagnosis: Raw images stored without consent, or embeddings not properly deleted Fix:

  • Automated compliance scanning: consent tracking, embedding lifecycle
  • Purge process for embeddings without valid consent
  • Convert raw image storage to embedding-only with consent re-confirmation

Worked Examples

Example 1: Masked Face at 0.3m Distance

Scenario: COVID-era access control, masks required, camera mounted at door (0.3m typical distance)

Decision Process:

  1. Model Selection: buffalo_l chosen (balance accuracy vs speed for real-time)
  2. Threshold Analysis: Security use case → target FAR <0.1%, initial threshold 0.55
  3. Masked Face Testing:
  • Standard threshold: 40% FRR (too many false rejects)
  • Masked-specific threshold: 0.45 → 15% FRR, 0.2% FAR (acceptable)
  1. Implementation: Mask detection → route to specialized threshold

Novice would miss: Using same threshold for masked/unmasked faces, not testing on representative masked dataset Expert catches: Separate calibration needed, eye region weighting more important, enrollment should include masked photos

Final Configuration:

python
def adaptive_verify(embedding1, embedding2, mask_detected=False):
    threshold = 0.45 if mask_detected else 0.55
    similarity = np.dot(embedding1, embedding2)
    return similarity > threshold

Example 2: Enrollment with 1 Poor-Quality Photo

Scenario: Employee self-enrollment via mobile app, submits 3 photos: 1 excellent frontal, 1 slight profile, 1 blurry/dark

Decision Process:

  1. Quality Assessment:
  • Photo 1: 0.95 confidence, 150px face, frontal pose → PRIMARY
  • Photo 2: 0.85 confidence, 120px face, 20° yaw → SUPPLEMENTARY
  • Photo 3: 0.65 confidence, 90px face, poor lighting → REJECT
  1. Enrollment Decision: Only 1 primary + 1 supplementary = insufficient for robust enrollment
  2. User Feedback: "Please submit 1 more clear, well-lit frontal photo"
  3. Fallback: Store partial enrollment as "pending", allow manual review override for urgent cases

Trade-off Decision: Reject enrollment (high quality standard) vs Accept with warning (user convenience) Chosen: Reject with guidance - better user experience long-term than poor recognition accuracy

Recovery Process:

  • Clear photo guidelines with examples
  • Real-time quality feedback during capture
  • Manual review queue for edge cases
  • Temporary PIN-based access while enrollment pending

Quality Gates

  • [ ] Face detection confidence >0.7 AND face size >80px for all enrolled photos
  • [ ] Minimum 3 photos per identity with pose variation <30° for primary references
  • [ ] Similarity threshold validated on representative test set with documented FAR/FRR
  • [ ] Demographic bias tested: <5% accuracy difference across age/gender/ethnicity groups
  • [ ] Enrollment rejection rate <20% (too high indicates unrealistic quality standards)
  • [ ] Average enrollment-to-first-successful-recognition time <24 hours
  • [ ] Privacy audit: all stored embeddings have valid consent records
  • [ ] Deletion capability tested: embedding removal within 24 hours of request
  • [ ] Performance benchmark: <100ms average recognition latency at production scale
  • [ ] Failure graceful degradation: uncertain matches flagged, not auto-decided

NOT-FOR Boundaries

This skill should NOT be used for:

  • General object detection or image classification → Use computer-vision-pipeline
  • Facial emotion, expression, or attribute analysis → Use ai-engineer
  • Face generation, deepfakes, or synthetic face creation → Use specialized generative AI skills
  • Real-time video streaming face recognition → Use video-frame-extraction-analysis first
  • Large-scale batch processing (>10K faces) → Use data-pipeline-engineer for orchestration

Delegate when you encounter:

  • Performance optimization beyond model selection → system-performance-optimizer
  • Complex database design for vector storage → database-architect
  • Legal/compliance requirements analysis → Domain expert consultation
  • Custom model training or fine-tuning → machine-learning-engineer

관련 작업