-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Open
Description
It seems to me that the implementation of contrast
enhancement using TF ops (as per it's PIL equivalent) in the EfficientNet codebase has a small bug associated with it which results in incorrect degenerate
.
tpu/models/official/efficientnet/autoaugment.py
Lines 199 to 213 in da56dcf
def contrast(image, factor): | |
"""Equivalent of PIL Contrast.""" | |
degenerate = tf.image.rgb_to_grayscale(image) | |
# Cast before calling tf.histogram. | |
degenerate = tf.cast(degenerate, tf.int32) | |
# Compute the grayscale histogram, then compute the mean pixel value, | |
# and create a constant image size of that value. Use that as the | |
# blending degenerate target of the original image. | |
hist = tf.histogram_fixed_width(degenerate, [0, 255], nbins=256) | |
mean = tf.reduce_sum(tf.cast(hist, tf.float32)) / 256.0 | |
degenerate = tf.ones_like(degenerate, dtype=tf.float32) * mean | |
degenerate = tf.clip_by_value(degenerate, 0.0, 255.0) | |
degenerate = tf.image.grayscale_to_rgb(tf.cast(degenerate, tf.uint8)) | |
return blend(degenerate, image, factor) |
Is it intended?
Seems like the following line might need some change!
mean = tf.reduce_sum(tf.cast(hist, tf.float32)) / 256.0 |
I'd run some tests on this op by comparing the resulting values with its PIL equivalent which can be found in this Colab notebook.
(after changing the said line, tests could pass)
/cc: @tanzhenyu, @mingxingtan, @saberkun
Metadata
Metadata
Assignees
Labels
No labels