Тренировка Tensorflow 2.0 CNN: функция увеличения изображения смещает значения пикселей за пределы диапазона [0, 1]. Это проблема? - PullRequest
0 голосов
/ 21 апреля 2019

Я работаю над своей специфической функцией увеличения данных, чтобы обучить CNN в TensorFlow 2.0 . Данные изображения, которые я использую, хранятся в многомерном массиве RGB numpy; все значения его пикселей являются числами с плавающей точкой в ​​диапазоне [0, 1].

Во время игры с функцией tensorflow.image.random_brightness ( документация ) я обнаружил, что значения его пикселей смещены за пределы диапазона [0, 1] (выше или ниже). Когда я пытаюсь визуализировать их, используя matplotlib.pyplot.imshow(), я получаю следующее сообщение:

Обрезка входных данных до допустимого диапазона для imshow с данными RGB ([0..1] для чисел с плавающей запятой или [0..255] для целых чисел).

Я также обнаружил, что когда я пытаюсь повторно нормализовать данные в этом диапазоне, изображение возвращается к своему первоначальному виду (что делает весь процесс бесполезным).

Являются ли значения пикселей за пределами диапазона [0, 1] проблемой для обучения CNN? И если это представляет проблему, что я могу сделать, чтобы значения пикселей были в правильном диапазоне, не отказываясь от регулировки яркости?

1 Ответ

1 голос
/ 23 апреля 2019

Да, это проблема, поскольку вы представляете в 0-1 что-то, что находится в 0-255, поэтому, когда вы подаете значение больше 1. на свой CNN, вы подаете CNN то, что он никогда не увидит в реальный сценарий.

Применение случайной яркости - это нормально, но вы должны позаботиться о проблемах переполнения, используя функцию tf.clip_by_value:

image = tf.clip_by_value(image, clip_value_min=0., clip_value_max=1.)
...