A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python
We're excited to introduce some fantastic updates in this release! Here's what's new:
๐ Custom Threshold Support: With PR-1223, we've enhanced the verify method to support an optional threshold parameter. Now, you can tailor the verification process to your needs for stricter or more lenient results.
๐ Enhanced Documentation: Thanks to PR-1224, you'll find the latest publication mentioned in the README. Additionally, experiment results are conveniently shared in the benchmarks folder for your reference.
๐ผ๏ธ Improved Functionality: We've fixed a bug in the represent function (PR-1225) where face regions were inaccurately returned if detection was skipped. Now, you can expect more reliable results.
๐ License Inclusion: PR-1225 addresses a missing license in the pip package, ensuring compliance and transparency.
๐ง Issue Templates: To streamline communication and issue tracking, we've created issue templates with PR-1203. Now, reporting and addressing concerns is easier than ever before.
Thank you for your continued support and feedback! Download DeepFace v0.0.91 now to enjoy these enhancements and more. Happy coding! ๐คโจ
Now utilizes dlib detector for obtaining the centers of the left and right eyes, enhancing accuracy and reliability (https://github.com/serengil/deepface/pull/1138).
Eye positioning is now relative to the person instead of the observer, aligning with biological standards (https://github.com/serengil/deepface/pull/1140).
Embeddings extraction function renamed to "forward" and moved to superclass for improved modularity (https://github.com/serengil/deepface/pull/1156).
Improved file detection by examining content type instead of relying solely on file extension, enhancing security (https://github.com/serengil/deepface/pull/1171, https://github.com/serengil/deepface/pull/1173, https://github.com/serengil/deepface/pull/1174).
Separated resize functionality into representation module for better code organization (https://github.com/serengil/deepface/pull/1175).
Singleton pattern implemented for logger classes to optimize resource usage (https://github.com/serengil/deepface/pull/1177).
Introduction of CenterFace face detector to DeepFace's toolkit (https://github.com/serengil/deepface/pull/1184).
Consideration of additional arguments impacting embeddings during facial database creation (https://github.com/serengil/deepface/pull/1185).
Introduction of File Utils for improved file management (https://github.com/serengil/deepface/pull/1186).
๐ ๏ธ Enforcing TF 2.12 or earlier is necessary if you intend to utilize the DeepFace model. Additionally, the LocallyConnected2D dependency isn't imported by default as it's unavailable post TF 2.12. - https://github.com/serengil/deepface/pull/1134
๐ DeepFace v0.0.88 Release Notes ๐
We're thrilled to announce the latest update to DeepFace, version 0.0.88! This release brings fixes, improvements, and enhancements to ensure a smoother and more accurate facial recognition experience. Here's what's new:
โจ TensorFlow Compatibility Fix: We've addressed an issue where TensorFlow 2.16 caused trouble with DeepFace due to the default use of Keras 3. Thanks to PR-1126, this issue has been sorted out, ensuring seamless integration with the latest TensorFlow version.
๐๏ธ Eye Coordinate Correction: In previous versions, there was a bug affecting the calculation of left and right eye coordinates, particularly for OpenCV and SSD models. While this bug didn't impact facial recognition accuracy, it led to incorrect return values. Thanks to PR-1126, this issue has been resolved, guaranteeing accurate eye coordinate calculations.
๐งช Expanded Unit Tests: We're dedicated to ensuring the reliability and stability of DeepFace. To achieve this, we've added more unit tests for the API in PR-1127 and PR-1128. These tests help validate the functionality of the API, ensuring consistent performance across different scenarios.
With these fixes and enhancements, DeepFace v0.0.88 is better equipped to deliver accurate facial recognition results while maintaining compatibility with the latest TensorFlow versions. Upgrade now to experience the improvements firsthand! ๐
Stay tuned for more updates and improvements as we continue to evolve DeepFace to meet your needs. Thank you for your continued support and feedback! ๐
๐ DeepFace Project Release Notes - Version 0.0.87
We're excited to announce the latest updates to the DeepFace project! Here's what's new:
๐ป GhostFaceNet Model Added: Introducing GhostFaceNet model to our DeepFace model portfolio! Utilize this cutting-edge addition for even more accurate and robust facial recognition capabilities. - https://github.com/serengil/deepface/pull/1111
๐ง Real-time Streaming Module Refactored: We've revamped our real-time streaming module for enhanced performance and efficiency. Enjoy smoother streaming experiences with DeepFace! - https://github.com/serengil/deepface/pull/1110
๐ ๏ธ Dependency Compatibility Fix: We've resolved an issue where importing the DeepFace model was causing exceptions due to a missing dependency after TensorFlow 2.12. Enjoy seamless integration regardless of your TensorFlow version. - https://github.com/serengil/deepface/pull/1083
๐ Improved Input Handling for Non-Keras Models: We've enhanced the input handling for facial recognition models like SFace and Dlib, ensuring consistency and ease of use across all models. Say goodbye to unnecessary complexities with retired layer.input_shape! - https://github.com/serengil/deepface/pull/1091
๐ Refactoring Fast MtCnn detector: model building simplified and bug while extracting facial area was sorted. - https://github.com/serengil/deepface/pull/1115
Upgrade now to DeepFace version 0.0.87 and unlock these exciting features and improvements! ๐
##ย Package
๐ Release Notes: Enhancements & Fixes ๐
๐ฏ All detectors now return a confidence score between 0 and 1 (https://github.com/serengil/deepface/pull/1041)
๐ Fixed the "expand facial area" logic โ it was doubling the expand_percentage for width and height instead of applying it correctly. Now, it's just right. (https://github.com/serengil/deepface/pull/1047)
๐ Ensured rotation angles are now nicely constrained within a [0, 360) range, keeping things in a perfect circle. (https://github.com/serengil/deepface/pull/1047)
๐ซ๐ฌ Added meaningful error messages for when a face can't be detected for a given a numpy array or base64 encoded image. (https://github.com/serengil/deepface/pull/1059)
๐ Optimized the verify function to avoid unnecessary recalculations of embeddings when multiple faces are detected in one of the image pairs. (https://github.com/serengil/deepface/pull/1059)
๐ Loading images from web if and only if given image is really link, discarding files with name starting with http prefix (https://github.com/serengil/deepface/pull/1059)
๐ In the find function, we're now checking the type of base64 encoded images to ensure compatibility with jpg, jpeg, and png formats. (https://github.com/serengil/deepface/pull/1059)
๐จ The fastmtcnn detector has been fixed to gracefully handle cases where no face is detected. (https://github.com/serengil/deepface/pull/1059)
๐ Verify function now gracefully accepts pre-calculated embeddings as inputs. (https://github.com/serengil/deepface/pull/1072)
๐ We're now including column names in the output pickle files of the file function for that extra clarity and convenience. (https://github.com/serengil/deepface/pull/1072)
๐๐ In find function, we are now tracking replaced files in a folder (https://github.com/serengil/deepface/pull/1072, https://github.com/serengil/deepface/pull/1074)
๐ ๏ธ Updated GitHub Actions configuration to wave goodbye to those pesky warnings. Smooth sailing ahead! (https://github.com/serengil/deepface/pull/1082)
๐ค We now check the TensorFlow version in DeepFace model to avoid issues with LocallyConnected2D not being supported after tf 2.12. Ensuring smooth imports and no surprises! (https://github.com/serengil/deepface/pull/1083)
๐ Bug Fix: Resolved issue with image processing from the web. Now your DeepFace package handles web images seamlessly. https://github.com/serengil/deepface/pull/1026
๐ Interface Upgrade: The interface of detectors has been revamped! Detectors now return facial area coordinates, eye locations, and confidence scores. https://github.com/serengil/deepface/pull/1025
๐ Common Functionality Centralization: All detectors now share common functionalities like detection, alignment, and expanding facial areas, thanks to the new parent module - DetectorWrapper. https://github.com/serengil/deepface/pull/1025
๐ญ Improved Face Alignment: We've switched the order! Now, face alignment precedes facial area extraction. No more black pixels, providing a cleaner output. https://github.com/serengil/deepface/pull/1025
๐ Dlib Detector Fix: Corrected the returned facial area coordinates for the dlib detector. https://github.com/serengil/deepface/pull/1020
๐ฃ Version Information: Now you can easily access version information directly from the DeepFace module with version variable. https://github.com/serengil/deepface/pull/1007
๐ Streaming Module Refactoring: The streaming module has undergone a thorough refactoring, enhancing its efficiency and performance. Enjoy a smoother streaming experience! https://github.com/serengil/deepface/pull/1031
๐ Recognition Module Overhaul: The backend of the find function, the recognition module, has been revamped for improved functionality and reliability. https://github.com/serengil/deepface/pull/1031, https://github.com/serengil/deepface/pull/1032
๐ Image Loading Bug Fix: Resolved a pesky bug where OpenCV's imread was returning 'None' instead of a valid image. Say goodbye to unexpected errors when loading images! https://github.com/serengil/deepface/pull/1038
๐ Confidence Score Standardization: Now, all detectors uniformly return confidence scores in the scale [0, 1]. This standardization ensures consistency across your DeepFace detections. https://github.com/serengil/deepface/pull/1041
##ย Package
We are thrilled to announce the latest release, packed with exciting enhancements, bug fixes, and organizational improvements. Let's dive into the highlights of this release:
๐ ๏ธ Error Prevention in MTCNN Detector: Resolved a TypeError when running the MTCNN detector on an image with no faces. A condition using short-circuit evaluation has been added to prevent this exception. (https://github.com/serengil/deepface/pull/976)
๐ธ Updated Return Type for Face Detection: Modified the return type of Detector.detect_faces and its inherited classes to improve clarity. Now returning a List[DetectedFace] where DetectedFace includes the detected image, facial area coordinates, and face confidence score. (https://github.com/serengil/deepface/pull/978)
๐ API Restructuring: Moved the API under the 'deepface' folder for better organization. Unit tests have been added to ensure the reliability of the API functionalities. (https://github.com/serengil/deepface/pull/1004)
๐ Bug Fix in API Serialization: Resolved the bug causing "Object of type int32 is not JSON serializable" in the API. Converted facial area regions from numpy int32 to Python built-in int. (https://github.com/serengil/deepface/pull/1004)
๐ Facial Area Expansion: Added an 'expand facial area percentage' argument to all functions for greater flexibility. (https://github.com/serengil/deepface/pull/990)
๐ ๏ธ Code Refactoring and Organization: Retired the 'find target size' function, moving facial recognition model input shapes retrieval to clients. Created a preprocessing module, relocated load image functions, and organized code logic into separate modules. (https://github.com/serengil/deepface/pull/990)
๐ Snake Case for Distance Calculation: Made distance calculation functions snake-cased for consistency. (https://github.com/serengil/deepface/pull/990)
๐ฆ Commons Module Refactoring: Retired commons.function in favor of commons.package_utils and commons.version_utils. The logic previously available under function.commons has been moved to the appropriate modules. (https://github.com/serengil/deepface/pull/999)
๐ Citations Added: Included a citations.md file for easy access to citations and references. (https://github.com/serengil/deepface/pull/999)
๐งน Code Cleanup and Restructuring: Distance calculation functions have been moved into the verification module. Version information is now stored in package_info.json. The Postman collection is now located under api/postman. (https://github.com/serengil/deepface/pull/999)
We appreciate your continued support and feedback. Please feel free to explore these improvements and let us know if you encounter any issues or have suggestions for further enhancements. Happy coding! ๐โจ
๐ Enhancement
Find function now returns a pandas dataframe, with the distance column named as distance by default. Improved naming practice for clarity and consistency.PR-974
Ticket: https://github.com/serengil/deepface/issues/969
๐ฏ New Feature
Added optional threshold argument to the find function. You can now filter the pandas dataframe after finding distances for each pair. If threshold is not set, the pre-tuned threshold will still be used for the given model name and distance metric. PR-974
Ticket: https://github.com/serengil/deepface/issues/972
๐ Bug Fix
Resolved yunet bug related to "Argument 'score_threshold' can't be treated as a float." The issue has been sorted out. PR-974
Ticket: https://github.com/serengil/deepface/issues/973
๐ VGG-Face Model Structure Update: A significant change has been made to the model structure of the VGG-Face model. The last layer, originally with 2622 output nodes for classifying identities, has been replaced. The model now utilizes its early layer, featuring 4096 output nodes. This modification is backed by experiments demonstrating an impressive accuracy improvement of nearly 6%. PR-948
๐กType Hints Added: Type hints have been introduced for both function arguments and return types in DeepFace functions. This enhancement provides improved clarity and documentation, making it easier for developers to understand and utilize the functions effectively. PR-922, PR-934
๐ ๏ธUnit Test Refactoring: The unit testing structure has undergone significant improvements. Previously, there was a single long-running unit test, but now, the tests have been modularized into multiple units. This refactoring enhances test manageability and granularity, allowing for more focused and efficient testing of individual components. PR-932
๐ ๏ธ YuNet Alignment Issue Resolved: Addressed and resolved the alignment issue in YuNet. Users can now experience improved alignment functionality, ensuring a more accurate and reliable performance. PR-921
๐ฐ load_image Function Update: The load_image function now returns a tuple containing the loaded image and its corresponding image name. An update has been made in DeepFace.py to accommodate this change. The outdated point where this function was called has been rectified, ensuring proper assignment of the result as a tuple for improved functionality. PR-917
๐ขDocker Shell Script Typo Fix: Resolved a typo in the shell script file used for Dockerizing. The discrepancy in image names during both build and run steps has been corrected, ensuring consistency and preventing potential errors. PR-943