Mode d’emploi
- Copiez la commande et examinez le paquet avant de l’installer dans votre environnement agent.
- Consultez le document original pour les outils, identifiants et environnements requis.
- Décrivez les entrées et le livrable souhaité ; comparez la sortie aux sources.
npx skills add https://github.com/curiositech/windags-skills --skill face-recognition-system-builderAvant de commencer
- L’installation n’inclut ni abonnement au modèle, ni quota API, ni accès aux fichiers.
- Étoiles et installations reflètent l’activité, pas un test indépendant de qualité ou de sécurité.
Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.
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 AdaFaceThreshold Tuning Heuristic
| Use Case | FAR Target | FRR Target | Threshold Range | Validation |
|---|---|---|---|---|
| Security/Access Control | <0.1% | 1-5% | 0.55-0.65 | Test on impostor pairs |
| Photo Organization | 2-5% | <1% | 0.35-0.45 | Test on family albums |
| Investigation/Forensics | <0.01% | 10-20% | 0.65-0.75 | Test on mugshot datasets |
| Social Media Tagging | 5-10% | <2% | 0.30-0.40 | Test 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 photosFailure 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:
- Model Selection: buffalo_l chosen (balance accuracy vs speed for real-time)
- Threshold Analysis: Security use case → target FAR <0.1%, initial threshold 0.55
- Masked Face Testing:
- Standard threshold: 40% FRR (too many false rejects)
- Masked-specific threshold: 0.45 → 15% FRR, 0.2% FAR (acceptable)
- 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:
def adaptive_verify(embedding1, embedding2, mask_detected=False):
threshold = 0.45 if mask_detected else 0.55
similarity = np.dot(embedding1, embedding2)
return similarity > thresholdExample 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:
- 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
- Enrollment Decision: Only 1 primary + 1 supplementary = insufficient for robust enrollment
- User Feedback: "Please submit 1 more clear, well-lit frontal photo"
- 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-analysisfirst - Large-scale batch processing (>10K faces) → Use
data-pipeline-engineerfor 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



