-
Notifications
You must be signed in to change notification settings - Fork 19.6k
Add dtype tests for ops.image.*
.
#21612
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?
Conversation
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.
Summary of Changes
Hello @james77777778, 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 focuses on improving the robustness of image processing operations by adding extensive data type (dtype) tests and implementing necessary fixes. The changes ensure that image manipulation functions maintain correct data types throughout their execution, especially when dealing with various floating-point precisions. This enhancement is crucial for maintaining numerical stability and consistency across different backend frameworks.
Highlights
- New Dtype Tests for Image Operations: This PR introduces comprehensive
dtype
tests for various image operations withinkeras.src.ops.image
, ensuring that these functions correctly handle and preserve data types across different backend implementations (JAX, NumPy, TensorFlow, Torch). - Dtype Compatibility Fixes Across Backends: Several fixes were implemented across backends to address
dtype
compatibility issues, particularly for half-precision floating-point types (float16
,bfloat16
), which often require casting tofloat32
for underlying library calls (e.g.,scipy.ndimage
,np.linalg.solve
,torch.linalg.solve
) and then casting the result back to the originaldtype
. - JAX Backend Dtype Adjustments: Specific adjustments were made in
keras/src/backend/jax/image.py
to ensure correctdtype
propagation ingaussian_blur
and kernel creation. - NumPy Backend Half-Precision Support: Significant changes were applied to
keras/src/backend/numpy/image.py
foraffine_transform
,compute_homography_matrix
,map_coordinates
, andgaussian_blur
to robustly handlefloat16
andbfloat16
by temporarily upcasting tofloat32
for SciPy/NumPy functions that lack direct support for these types. - TensorFlow and Torch Backend Dtype Consistency: The
keras/src/backend/tensorflow/image.py
andkeras/src/backend/torch/image.py
files received updates to ensure properdtype
handling for input tensors and intermediate calculations in functions likegaussian_blur
,perspective_transform
, andcompute_homography_matrix
.
Using Gemini Code Assist
The 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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
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 .gemini/
folder in the base of the repository. Detailed instructions can be found here.
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
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
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 adds comprehensive dtype tests for the ops.image
module, which is a great addition for ensuring correctness across different backends and data types. The associated fixes in the JAX, TensorFlow, and PyTorch backends correctly address dtype consistency issues. However, I found a bug in the NumPy backend's compute_homography_matrix
function where a dtype casting operation has no effect, leading to an incorrect output dtype. I've provided a suggestion to fix this.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #21612 +/- ##
==========================================
+ Coverage 82.45% 82.48% +0.03%
==========================================
Files 572 572
Lines 57337 57358 +21
Branches 8970 8969 -1
==========================================
+ Hits 47277 47314 +37
+ Misses 7761 7753 -8
+ Partials 2299 2291 -8
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
dc11880
to
5bca106
Compare
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.
Great work on expanding dtype coverage and strengthening consistency across ops.image.*.
@fchollet Since I don’t have merge rights, could you please check this PR and merge it? |
This PR adds dtype tests for
ops.image.*
and includes fixes discovered.