This commit introduces significant enhancements to the face detection system, addressing false positives by updating configuration settings and validation logic. Key changes include stricter confidence thresholds, increased minimum face size, and improved aspect ratio requirements. A new script for cleaning up existing false positives from the database has also been added, successfully removing 199 false positive faces. Documentation has been updated to reflect these changes and provide usage instructions for the cleanup process.
2.4 KiB
2.4 KiB
Face Detection Improvements
Problem
The face detection system was incorrectly identifying balloons, buffet tables, and other decorative objects as faces, leading to false positives in the identification process.
Root Cause
The face detection filtering was too permissive:
- Low confidence threshold (40%)
- Small minimum face size (40 pixels)
- Loose aspect ratio requirements
- No additional filtering for edge cases
Solution Implemented
1. Stricter Configuration Settings
Updated /src/core/config.py:
- MIN_FACE_CONFIDENCE: Increased from 0.4 (40%) to 0.7 (70%)
- MIN_FACE_SIZE: Increased from 40 to 60 pixels
- MAX_FACE_SIZE: Reduced from 2000 to 1500 pixels
2. Enhanced Face Validation Logic
Improved /src/core/face_processing.py in _is_valid_face_detection():
- Stricter aspect ratio: Changed from 0.3-3.0 to 0.4-2.5
- Size-based confidence requirements: Small faces (< 100x100 pixels) require 80% confidence
- Edge detection filtering: Faces near image edges require 85% confidence
- Better error handling: More robust validation logic
3. False Positive Cleanup
Created /scripts/cleanup_false_positives.py:
- Removes existing false positives from database
- Applies new filtering criteria to existing faces
- Successfully removed 199 false positive faces
Results
- Before: 301 unidentified faces (many false positives)
- After: 102 unidentified faces (cleaned up false positives)
- Removed: 199 false positive faces (66% reduction)
Usage
- Clean existing false positives:
python scripts/cleanup_false_positives.py - Process new photos: Use the dashboard with improved filtering
- Monitor results: Check the Identify panel for cleaner face detection
Technical Details
The improvements focus on:
- Confidence thresholds: Higher confidence requirements reduce false positives
- Size filtering: Larger minimum sizes filter out small decorative objects
- Aspect ratio: Stricter ratios ensure face-like proportions
- Edge detection: Faces near edges often indicate false positives
- Quality scoring: Better quality assessment for face validation
Future Considerations
- Monitor detection accuracy with real faces
- Adjust thresholds based on user feedback
- Consider adding face landmark detection for additional validation
- Implement user feedback system for false positive reporting