Tensorflow 2.0 CNN 训练:图像增强函数将像素值移出 [0, 1] 范围。这是个问题吗?
Tensorflow 2.0 CNN training: Image augmentation function shifts pixel values outside of the [0, 1] range. Is this a problem?
我正在研究我的特定数据增强功能,以在 TensorFlow 2.0 中训练 CNN。我使用的图像数据存储在 numpy
多维 RGB 数组中;它的所有像素值都是 [0, 1] 范围内的浮点数。
在使用函数 tensorflow.image.random_brightness
(documentation) 时,我发现它的像素值移动到了 [0, 1] 范围之外(甚至高于或低于)。当我尝试使用 matplotlib.pyplot.imshow()
可视化它们时,我收到以下消息:
Clipping input data to the valid range for imshow with RGB data
([0..1] for floats or [0..255] for integers).
我还发现,当我尝试重新规范化该范围内的数据时,图像会恢复到原来的样子(使整个过程无用)。
超出 [0, 1] 范围的像素值是否会成为 CNN 训练的问题?如果这代表有问题,我该怎么做才能使像素值在正确的范围内,而不放弃调整亮度?
是的,这是一个问题,因为你在 0-1 中代表的是 0-255 中的东西,因此当你向 CNN 提供大于 1 的值时,你正在向 CNN 提供它永远看不到的东西在真实场景中。
应用随机亮度没问题,但你应该使用 tf.clip_by_value
函数处理溢出问题:
image = tf.clip_by_value(image, clip_value_min=0., clip_value_max=1.)
我正在研究我的特定数据增强功能,以在 TensorFlow 2.0 中训练 CNN。我使用的图像数据存储在 numpy
多维 RGB 数组中;它的所有像素值都是 [0, 1] 范围内的浮点数。
在使用函数 tensorflow.image.random_brightness
(documentation) 时,我发现它的像素值移动到了 [0, 1] 范围之外(甚至高于或低于)。当我尝试使用 matplotlib.pyplot.imshow()
可视化它们时,我收到以下消息:
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
我还发现,当我尝试重新规范化该范围内的数据时,图像会恢复到原来的样子(使整个过程无用)。
超出 [0, 1] 范围的像素值是否会成为 CNN 训练的问题?如果这代表有问题,我该怎么做才能使像素值在正确的范围内,而不放弃调整亮度?
是的,这是一个问题,因为你在 0-1 中代表的是 0-255 中的东西,因此当你向 CNN 提供大于 1 的值时,你正在向 CNN 提供它永远看不到的东西在真实场景中。
应用随机亮度没问题,但你应该使用 tf.clip_by_value
函数处理溢出问题:
image = tf.clip_by_value(image, clip_value_min=0., clip_value_max=1.)