This commit adds a new command-line interface (CLI) and graphical user interface (GUI) components for the PunimTag desktop application. The `photo_tagger.py` script serves as the CLI entry point, enabling users to scan, process, and manage photos with facial recognition capabilities. The GUI includes a unified dashboard with various panels for identifying, modifying, and managing tags for photos. Additionally, comprehensive documentation has been created to guide users through installation and usage, ensuring a smooth experience. This update enhances the overall functionality and accessibility of the PunimTag application.
This commit introduces a comprehensive analysis of pose modes and face width detection to enhance profile classification accuracy. New scripts have been added to analyze pose data in the database, check identified faces for pose information, and validate yaw angles. The PoseDetector class has been updated to calculate face width from landmarks, which serves as an additional indicator for profile detection. The frontend and API have been modified to include pose mode in responses, ensuring better integration with existing functionalities. Documentation has been updated to reflect these changes, improving user experience and accuracy in face processing.
This commit enhances the photo processing workflow in the FaceService by ensuring that cancellation checks occur after completing the current photo's processing, including pose detection and database commits. It introduces robust error handling during progress updates, allowing for graceful cancellation and improved user feedback. Documentation has been updated to reflect these changes, enhancing the overall user experience and reliability of the photo processing feature.
This commit introduces a comprehensive auto-match automation plan that automates the face matching process in the application. Key features include the ability to automatically identify faces based on pose and similarity thresholds, with configurable options for auto-acceptance. The API has been updated to support new parameters for auto-acceptance and pose filtering, while the frontend has been enhanced to allow users to set an auto-accept threshold and view results. Documentation has been updated to reflect these changes, improving user experience and functionality.
This commit introduces a comprehensive face pose detection system utilizing the RetinaFace library to automatically classify face poses (yaw, pitch, roll) during image processing. The database schema has been updated to store pose information, including pose mode and angles. The face processing pipeline has been modified to integrate pose detection with graceful fallback mechanisms, ensuring compatibility with existing functionality. Additionally, new utility functions for pose detection have been added, along with unit tests to validate the implementation. Documentation has been updated to reflect these changes, enhancing the overall user experience and accuracy in face matching.
This commit introduces new navigation buttons in the AutoMatch component, allowing users to easily move between persons being matched. Additionally, the Identify component has been updated to include a collapsible filters section, improving the user interface for managing face identification. The unique faces filter is now enabled by default, enhancing the identification process. Documentation and tests have been updated to reflect these changes, ensuring a reliable user experience.
This commit introduces several new features for tag management, including the ability to retrieve tags for specific photos, update tag names, and delete tags through new API endpoints. The frontend has been updated to support these functionalities, allowing users to manage tags more effectively with a user-friendly interface. Additionally, new components for managing photo tags and bulk tagging have been added, improving overall usability. Documentation and tests have been updated to reflect these changes, ensuring reliability and user satisfaction.
This commit introduces the Modify Identified workflow, allowing users to edit person information, view associated faces, and unmatch faces from identified people. The API has been updated with new endpoints for unmatching faces and retrieving faces for specific persons. The frontend includes a new Modify page with a user-friendly interface for managing identified persons, including search and edit functionalities. Documentation and tests have been updated to reflect these changes, ensuring reliability and usability.
This commit introduces a new feature that allows users to open the folder containing a selected photo in their system's file manager. The API has been updated with a new endpoint to handle folder opening requests, supporting various operating systems. The frontend has been enhanced to include a button for this action, providing user feedback and error handling. Documentation and tests have been updated to reflect these changes, ensuring reliability and usability.
This commit introduces a comprehensive photo search feature in the application, allowing users to search photos by various criteria including name, date, and tags. The API has been updated to support these search parameters, returning results that match the specified filters. Additionally, new endpoints for managing tags have been added, enabling users to add and remove tags from multiple photos. The frontend has been enhanced with a user-friendly interface for search inputs and results display, improving overall usability. Documentation and tests have been updated to reflect these new features and ensure reliability.
This commit introduces a new feature in the Identify component that allows users to filter for unique faces only, hiding duplicates with ≥60% match confidence. The API has been updated to log calls to the get_similar_faces endpoint, including warnings for non-existent faces and information on the number of results returned. Additionally, the SimilarFaceItem schema has been updated to include the filename, improving data handling and user experience. Documentation and tests have been updated accordingly.
This commit enhances the README with detailed instructions on the automatic database initialization and schema compatibility between the web and desktop versions. It also introduces new API endpoints for managing unidentified faces and people, including listing, creating, and identifying faces. The schemas for these operations have been updated to reflect the new data structures. Additionally, tests have been added to ensure the functionality of the new API features, improving overall coverage and reliability.
This commit introduces a new Alembic migration to add a 'processed' column to the 'photos' table, enhancing the database schema to track photo processing status. Additionally, it includes new utility scripts for dropping and recreating all tables in the web database, as well as a script to display all tables and their structures. These changes improve database management and facilitate a fresh start for the web application, ensuring alignment with the updated schema.
This commit introduces the DeepFace integration for face processing, allowing users to configure detector backends and models through the new Process tab in the GUI. Key features include batch processing, job cancellation support, and real-time progress tracking. The README has been updated to reflect these enhancements, including instructions for automatic model downloads and handling of processing-intensive tasks. Additionally, the API has been expanded to support job management for face processing tasks, ensuring a robust user experience.
This commit enhances the README with detailed instructions for installing and starting Redis, including commands for various operating systems. It clarifies the automatic startup of the RQ worker with the FastAPI server and updates the project status for Phase 2 features. Additionally, a new script `run_api_with_worker.sh` is introduced to streamline the process of starting the FastAPI server alongside the RQ worker, ensuring a smoother setup for users. The worker now has a unique name to prevent conflicts during execution.
This commit introduces a new confidence calibration system that converts DeepFace distance values into actual match probabilities, addressing previous misleading confidence percentages. Key changes include the addition of calibration methods in `FaceProcessor`, updates to the `IdentifyPanel` and `AutoMatchPanel` to utilize calibrated confidence, and new configuration settings in `config.py`. The README has been updated to document these enhancements, ensuring users see more realistic match probabilities throughout the application.
This commit modifies the `AutoMatchPanel` class to enable search entry and buttons when the auto-match process starts. The search controls are disabled when there is only one matched person, and the help label text is updated accordingly. Additionally, the search controls are disabled when clearing the search, improving user experience by providing clear feedback on search functionality status.
This commit introduces a new method `_calculate_face_canvas_size` in the `IdentifyPanel` class to calculate a responsive size for the face canvas based on the available window space. Additionally, the `_update_face_canvas_size` method has been implemented to dynamically adjust the canvas size during window resize events. The dashboard GUI has also been updated to improve layout consistency by fixing the width of the folder input text box. These changes enhance the user experience by ensuring that the face canvas adapts to different screen sizes and resolutions.
This commit modifies the `process_faces` method in both the `PhotoTagger` and `FaceProcessor` classes to accept an optional `limit` parameter. If `None`, all unprocessed photos will be processed, enhancing flexibility in face processing. Additionally, the `get_unprocessed_photos` method in `DatabaseManager` is updated to handle the optional limit, ensuring consistent behavior across the application. Docstrings have been updated to reflect these changes, improving code documentation and clarity.
This commit introduces a comprehensive EXIF orientation handling system to improve face processing accuracy. Key changes include the addition of an `exif_orientation` field in the database schema, updates to the `FaceProcessor` class for applying orientation corrections before face detection, and the implementation of a new `EXIFOrientationHandler` utility for managing image orientation. The README has been updated to document these enhancements, including recent fixes for face orientation issues and improved face extraction logic. Additionally, tests for EXIF orientation handling have been added to ensure functionality and reliability.
This commit refactors the handling of face location data to exclusively use the DeepFace format ({x, y, w, h}) instead of the legacy tuple format (top, right, bottom, left). Key changes include updating method signatures, modifying internal logic for face quality score calculations, and ensuring compatibility in the GUI components. Additionally, configuration settings for face detection have been adjusted to allow for smaller face sizes and lower confidence thresholds, enhancing the system's ability to detect faces in various conditions. All relevant tests have been updated to reflect these changes, ensuring continued functionality and performance.
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.
This commit adds final notes to the migration documentation and quickstart files, confirming readiness for DeepFace implementation across all phases. The updates include completion confirmations in `DEEPFACE_MIGRATION_COMPLETE.md`, `PHASE1_COMPLETE.md`, `PHASE2_COMPLETE.md`, and `PHASE3_COMPLETE.md`, as well as quickstart notes in `.notes/phase1_quickstart.md` and `.notes/phase2_quickstart.md`. These changes ensure clarity on the project's progress and readiness for the next steps in the DeepFace integration.
This commit adds a quality filtering feature to the Identify Panel, allowing users to filter faces based on a quality score (0-100%). The `_get_unidentified_faces()` method has been updated to accept a `min_quality_score` parameter, and the SQL query now includes a WHERE clause for quality filtering. All relevant call sites have been modified to utilize this new feature, improving the user experience during face identification. The unique checkbox default state has also been confirmed to be unchecked, ensuring consistency in the UI behavior.
This commit introduces a quality filtering feature in the Identify Panel, allowing users to filter faces based on a quality score (0-100%). The panel now includes a slider for adjusting the quality threshold and displays the current quality percentage. Additionally, navigation functions have been updated to skip to the next or previous face that meets the quality criteria, improving the user experience during identification. The README has been updated to reflect these new features and enhancements.
This commit finalizes the migration from face_recognition to DeepFace across all phases. It includes updates to the database schema, core processing, GUI integration, and comprehensive testing. All features are now powered by DeepFace technology, providing superior accuracy and enhanced metadata handling. The README and documentation have been updated to reflect these changes, ensuring clarity on the new capabilities and production readiness of the PunimTag system. All tests are passing, confirming the successful integration.
This commit introduces several new files to enhance project organization and developer onboarding. The `.cursorignore` and `.cursorrules` files provide guidelines for Cursor AI, while `CONTRIBUTING.md` outlines contribution procedures. Additionally, `IMPORT_FIX_SUMMARY.md`, `RESTRUCTURE_SUMMARY.md`, and `STATUS.md` summarize recent changes and project status. The `README.md` has been updated to reflect the new project focus and structure, ensuring clarity for contributors and users. These additions aim to improve maintainability and facilitate collaboration within the PunimTag project.