python - Tensorflow 2.0 CNN 训练:图像增强功能将像素值移动到 [0, 1] 范围之外。这是一个问题吗?
问题描述
我正在研究我的特定数据增强功能,以在TensorFlow 2.0中训练CNN。我使用的图像数据存储在多维 RGB 数组中;它的所有像素值都是 [0, 1] 范围内的浮点数。numpy
在使用函数tensorflow.image.random_brightness
(文档)时,我发现它的像素值超出了 [0, 1] 范围(高于或低于)。当我尝试使用可视化它们时,matplotlib.pyplot.imshow()
我收到以下消息:
使用 RGB 数据将输入数据裁剪到 imshow 的有效范围(浮点数为 [0..1] 或整数为 [0..255])。
我还发现,当我尝试重新规范化该范围内的数据时,图像会恢复到原来的样子(使整个过程变得毫无用处)。
[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.)
推荐阅读
- qr-code - 需要在手机主屏幕上创建一个二维码链接
- java - 我如何将 userTask() 中的 setElementTemplate() 设置为 my.Form.Task,因为在任何地方的 javadocs 中都找不到接口 setElementTemplate()
- image - 如何将图像放置在堆栈的顶部?
- nlp - 在 LDA 主题建模中应该使用二元语法和三元语法吗?
- google-chrome - 尝试禁用 Chrome 确认弹出窗口
- r - 排列多个绘图并保持 x 轴标签与轴齐平
- cryptography - 如何使用 aes-128-ctr 加密从以下数据中找到私钥?
- qt - QT/Embedded 使用什么图形系统来播放视频?
- sql - [SQL][数据库] SQL中如何统计每颗产品的review id数?
- performance - 我应该在 F# 中使用子函数还是辅助函数?