在TensorFlow中是否有任何方法可以缩小没有裁剪的图像?

时间:2017-03-27 02:09:46

标签: tensorflow

我在tf.image中发现了许多方法来调整图像大小,但几乎所有方法都是裁剪或填充或插值。插值方法可以缩小图像吗?我只想缩小我的图像而不裁剪。 非常感谢!

2 个答案:

答案 0 :(得分:1)

嗯,好像你需要tf.image.resize_images

res = tf.image.resize_images(images, size, method=ResizeMethod.BILINEAR, align_corners=False)

默认调整大小的方法是BILINEAR

val = np.random.rand(100, 70, 3)
x = tf.constant(val)
y = tf.image.resize_images(x, (30,30))

with tf.Session() as sess:
    a = sess.run(y)  # size (30, 30, 3)

答案 1 :(得分:0)

在一天结束时,图像是矩阵/张量。为了直接缩小图像,您必须进行一些有损压缩。即,对各个像素组(或矩阵值)进行平均或最大池化,并将它们保存为模型的预处理图像。尝试查看Tensorflow max-poolaverage-pool函数:

tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=None)

tf.nn.avg_pool(value, ksize, strides, padding, data_format='NHWC', name=None)

根据应用程序的不同,您可能只想"收缩"使用"创建功能的模型的图像"例如卷积神经网络(CNN),然后您可以将其用于您的模型。但是,您仍需要在每次运行时处理原始大小的图像。

另一种高级方法是进行某种分解,例如SVD,以获得图像的低维表示。但是,大多数方法都是线性技术,可能无法完全保留所有内容。另一种方法是训练自动编码器,然后将低维结果保存为预处理数据。

希望这有帮助!