-
Notifications
You must be signed in to change notification settings - Fork 19.7k
Add lpip loss implementation #21879
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add lpip loss implementation #21879
Conversation
- torch-xla is not available for Windows platform - Manually installed tensorflow-cpu, torch, jax, and flax - Fixed protobuf version conflicts (downgraded to <6.0.0) - Tests now run successfully without ModuleNotFoundError
…ng errors - Fixed custom_gradient in JAX backend to extract Variable values automatically - Improved code structure by moving helper function outside wrapper - Fixed EfficientNetV2B2 import to use direct module import - Fixed all Ruff linting errors (line length, unused imports/variables) - Tests now pass without requiring manual .value access on Variables
- Changed input size from 64x64 to 224x224 (minimum supported by EfficientNetV2) - Fixed EfficientNetV2B0 import to use direct module path - Resolves ValueError: Input size must be at least 32x32 - Resolves ImportError for EfficientNetV2B0
…input_shape validation This commit addresses three issues that were causing CI failures: 1. Fixed JAX Backend custom_gradient with Variables (Issue keras-team#21105) - Problem: Variables passed to custom_gradient in JAX backend caused 'TypeError: NoneType object is not callable' - Root cause: JAX copies Variables during tracing, causing both _value and _initializer to become None - Solution: * Modified custom_gradient wrapper to properly convert Variables to values * Added fallback in __jax_array__ to handle uninitialized Variables - Added test: test_custom_gradient_with_variable in keras/src/ops/core_test.py 2. Fixed obtain_input_shape validation for channels_first format - Problem: Confusing error when users provide input_shape in wrong format (e.g., (224,224,3) when (3,224,224) expected for channels_first) - Solution: Added validation to detect format mismatch with clear error message - Updated efficientnet_v2_jit_test.py to use correct channels_first format 3. Code format fixes - Fixed line length violations - Fixed import ordering - Removed unused imports Files modified: - keras/src/backend/jax/core.py - keras/src/ops/core_test.py - keras/src/applications/imagenet_utils.py - keras/src/applications/efficientnet_v2_jit_test.py - test_custom_gradient_jax_variable.py All tests passing with JAX backend.
- Changed get_shapes_dict to only exclude 'mask' parameter, not all *_mask - Allows custom layers to use parameters like attention_mask, padding_mask - Added comprehensive tests for _mask parameter handling - Maintains backward compatibility with Keras masking Fixes keras-team#21154
Summary of ChangesHello @Mayankvlog, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances Keras by integrating the LPIP perceptual loss, a crucial metric for image generation and quality assessment. It also addresses a critical bug in the JAX backend's Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces LPIPS loss, which is a valuable addition. However, it also includes several unrelated changes, such as fixes for JAX custom gradients, layer mask argument handling, and new documentation files. Most critically, it deletes the project's .gitignore and README.md files. These deletions are very likely a mistake and must be reverted. I strongly recommend splitting this PR into smaller, focused PRs: one for the LPIP loss, and separate ones for each of the other fixes. This will make the review process much cleaner and align with the PR's stated goal of being a clean feature review. My review comments focus on the LPIP loss implementation and the critical file deletions.
hertschuh
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR adds LPIP loss support.
It is separated from unrelated fixes to keep the feature review clean.