Функция per_image_standardization
Функция per_image_standardization применяется к тензору изображений
и выполняет независимую стандартизацию для каждого изображения в батче.
Первым параметром передается тензор изображений, обычно четырехмерный
с формой [batch, height, width, channels] или трехмерный
с формой [height, width, channels]. Функция вычисляет среднее
и стандартное отклонение для каждого изображения отдельно и вычитает
среднее, после чего делит на стандартное отклонение. Это помогает
стабилизировать обучение нейронных сетей и ускорить сходимость.
Синтаксис
tf.image.per_image_standardization(image)
Пример
Давайте стандартизируем одно изображение, представленное двумерным тензором с одним каналом:
import tensorflow as tf
image = tf.constant([[1.0, 2.0], [3.0, 4.0]])
res = tf.image.per_image_standardization(image)
print(res)
Результат выполнения кода:
tf.Tensor(
[[-1.3416357 -0.4472119]
[ 0.4472119 1.3416357]], shape=(2, 2), dtype=float32)
Пример
Давайте стандартизируем батч из двух трехканальных изображений размером 2 на 2:
import tensorflow as tf
image = tf.constant([
[[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]],
[[7.0, 8.0, 9.0], [10.0, 11.0, 12.0]]],
[[[2.0, 4.0, 6.0], [8.0, 10.0, 12.0]],
[[14.0, 16.0, 18.0], [20.0, 22.0, 24.0]]]
])
res = tf.image.per_image_standardization(image)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[-1.3416357 -1.3416357 -1.3416357]
[-0.4472119 -0.4472119 -0.4472119]]
[[ 0.4472119 0.4472119 0.4472119]
[ 1.3416357 1.3416357 1.3416357]]]
<BLANKLINE>
[[[-1.3416357 -1.3416357 -1.3416357]
[-0.4472119 -0.4472119 -0.4472119]]
[[ 0.4472119 0.4472119 0.4472119]
[ 1.3416357 1.3416357 1.3416357]]]], shape=(2, 2, 2, 3), dtype=float32)
Пример
Давайте проверим, что после стандартизации среднее значение каждого изображения близко к нулю, а стандартное отклонение - к единице:
import tensorflow as tf
image = tf.constant([
[[1.0, 2.0], [3.0, 4.0]],
[[5.0, 6.0], [7.0, 8.0]]
])
res = tf.image.per_image_standardization(image)
mean = tf.reduce_mean(res, axis=[1, 2])
std = tf.math.reduce_std(res, axis=[1, 2])
print(mean)
print(std)
Результат выполнения кода:
tf.Tensor([0. 0.], shape=(2,), dtype=float32)
tf.Tensor([1. 1.], shape=(2,), dtype=float32)
Смотрите также
-
функцию
adjust_brightness,
которая регулирует яркость изображений -
функцию
adjust_contrast,
которая регулирует контрастность изображений -
функцию
convert_image_dtype,
которая преобразует тип данных изображения -
функцию
rgb_to_grayscale,
которая преобразует RGB-изображение в оттенки серого