首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tf.image.random_brightness在TensorFlow中随机给出负值

tf.image.random_brightness在TensorFlow中随机给出负值
EN

Stack Overflow用户
提问于 2018-02-16 06:27:39
回答 1查看 3.8K关注 0票数 6

‘我正在使用旋转、随机亮度、随机饱和等多种方法在TensorFlow中尝试图像数据增强。我观察到tf.image.random_brightness的输出不一致--有时会产生负值。我理解其随机性,但生成负值是否正确?当我试图用matplotlib.pyplot绘制图像时,它失败地说: ValueError:浮点图像RGB值必须在下面的0.1范围内,这是代码的一些示例:“

代码语言:javascript
复制
# Function which reads file and converts to image array
def read_images_from_file (input_queue):
    label = input_queue[1]

    file_content = tf.read_file(input_queue[0])
    image = tf.image.decode_jpeg(file_content, channels=NUM_CHANNELS)
    image = tf.image.convert_image_dtype(image, dtype=tf.float32, saturate=True)
    image = tf.image.resize_images(image, [IMAGE_HEIGHT, IMAGE_WIDTH])

.....
    #inside a function which applies various augmentations - code shown only for brightness

    X_init = tf.placeholder(tf.float32, shape=images.shape)
    X = tf.Variable(X_init)

    sess.run(tf.variables_initializer([X]), feed_dict={X_init: images})
    aug_images, aug_labels = (sess.run(tf.map_fn(lambda params: (tf.image.random_brightness(params[0], 0.8, 1), params[1]), (X, labels))))

    #inside a loop after calling above function - output of function is returned to aug_train_images

    print (aug_train_images[i])


'Some sample output:'
    [[[-0.18852733 -0.27872342 -0.31009597]
      [-0.18059228 -0.2786315  -0.3060825 ]
      [-0.1765788  -0.27461803 -0.302069  ]
      ...

      [-0.20366213 -0.19974056 -0.18405429]
      [-0.22792684 -0.22437292 -0.20458125]
      [-0.24324547 -0.23166458 -0.21205674]]

‘我正在使用Python3.5.3和Ubuntu16.10上的TensorFlow 1.5.0-rc0版本的木星笔记本电脑。

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 14:44:15

你允许强度(δ)的随机变化在-0.8到0.8之间:

代码语言:javascript
复制
tf.image.random_brightness(params[0], 0.8, 1)

请注意,图像的强度在0-1范围内,因为您做到了:

代码语言:javascript
复制
image = tf.image.convert_image_dtype(image, dtype=tf.float32, saturate=True)

这意味着图像中的每个强度值I将更改为以下之间的某个值:

代码语言:javascript
复制
[i-0.8, i+0.8]

它超出了图像的0-1范围。换句话说,您将拥有大于1的负值和值。

第一个评论是,0.8的增量似乎太大了(当然,这取决于问题)。我会推荐一些在0.1左右(即允许10%的变化)。

第二件事,你必须确保在改变亮度后,图像仍然是图像,也就是说,剪辑强度在0-1的范围内。你可以这样做:

代码语言:javascript
复制
image = tf.clip_by_value(image, 0.0, 1.0)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48821218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档