Skip to content

[efficientnet/autoaugment/contrast] Op Bug #825

Open
@swghosh

Description

@swghosh

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.

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions