Function Differences with tf.image.per_image_standardization

View Source On Gitee

tf.image.per_image_standardization

tf.image.per_image_standardization(
    image
)

For more information, see tf.image.per_image_standardization.

mindspore.dataset.vision.Normalize

class mindspore.dataset.vision.Normalize(
    mean,
    std,
    is_hwc
)

For more information, see mindspore.dataset.vision.Normalize.

Differences

TensorFlow: Normalize the image using mean and standard deviation calculated automatically from the image.

MindSpore: Normalize the image using the specified mean and standard deviation.

Code Example

# The following implements Normalize with MindSpore.
import numpy as np
import mindspore.dataset as ds

image = np.random.random((28, 28, 3))
mean = [np.mean(image, axis=(-1, -2, -3), keepdims=False)]
std = [np.std(image, axis=(-1, -2, -3), keepdims=False)]
adjusted_stddev = list(np.maximum(std, 1.0 / np.sqrt(image.size)))
result = ds.vision.Normalize(mean, adjusted_stddev)(image)
print(result.mean())
# 0.0
print(result.std())
# 1.0

# The following implements per_image_standardization with TensorFlow.
import tensorflow as tf
tf.compat.v1.enable_eager_execution()

image = tf.random.normal((28, 28, 3))
result = tf.image.per_image_standardization(image)
print(tf.math.reduce_mean(result))
# 0.0
print(tf.math.reduce_std(result))
# 1.0