【问题标题】:resizing with keras and tensorflow gives different results使用 keras 和 tensorflow 调整大小会产生不同的结果
【发布时间】:2019-07-17 12:20:44
【问题描述】:

重现错误的代码:

import tensorflow as tf
from tensorflow import keras

inputs = keras.layers.Input(shape=(7,7,256))

keras_resized = keras.backend.resize_images(inputs,224,224,data_format='channels_last',interpolation='bilinear')

tf_resized = tf.image.resize_bilinear(inputs,(224,224))

我有以下观察:

1。 tf_resized.get_shape() 给:

TensorShape([Dimension(None), Dimension(224), Dimension(224), Dimension(256)])

这是预期的结果。

2。正如keras_resized.get_shape() 给出的那样:

TensorShape([Dimension(None), Dimension(1568), Dimension(1568), Dimension(256)])

这令人困惑。

3。但是:

mean_input = keras.backend.mean(inputs, axis=[1,2], keepdims=True)
keras_resized = keras.backend.resize_images(mean_input,224,224,data_format='channels_last',interpolation='bilinear')

然后keras_resized.get_shape() 给出:

TensorShape([Dimension(None), Dimension(224), Dimension(224), Dimension(256)])



我需要帮助

  • 调整大小的方法有何不同
  • 在什么情况下应该使用哪个?
  • 案例 1 和 3 是否等效?

【问题讨论】:

  • 7*224=1568 应该可以帮助您找到答案;)keras_resized.get_shape() 的第二个和第三个参数是原始形状的乘数,而不是输出形状。

标签: python tensorflow tf.keras


【解决方案1】:

据我了解,在 TF 2.0 中有两个调整图片大小的函数, 即:

tf.keras.backend.resize_images
tf.image.resize or tf.image.resize_images

这两种功能各有优缺点。

对于 tf.keras.backend.resize_images

优点:支持不同的张量通道顺序(参见 data_format 参数) 缺点:图片只能放大整数倍,不能缩小(因为height_factor和width_factor必须是正整数)

对于 tf.image.resize 或 tf.image.resize_images , 优点是: 1)它支持不同的插值方法,如

ResizeMethod.BILINEAR: Bilinear interpolation
ResizeMethod.NEAREST_NEIGHBOR: Nearest neighbor interpolation
ResizeMethod.BICUBIC: Bicubic interpolation
ResizeMethod.AREA: Area interpolation

2)此外,它还支持图像缩小。

根据需要,您可以使用这些方法

谢谢

【讨论】:

    【解决方案2】:

    实际上,您不必将相同的参数传递给两个函数。例如,如果你想从 7 变为 224,那么使用 tensorflow 方法你需要输入:

    tf.image.resize(inputs,(224,224))
    

    但是使用 keras 方法,您必须指定 height_factor 和 width_factor :所以在这种情况下 224/7 = 32

    tf.keras.backend.resize_images( image, 32, 32, data_format)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2018-02-08
      • 2020-09-17
      • 2015-10-30
      • 1970-01-01
      相关资源
      最近更新 更多