我在tf.image
中发现了许多方法来调整图像大小,但几乎所有方法都是裁剪或填充或插值。插值方法可以缩小图像吗?我只想缩小我的图像而不裁剪。
非常感谢!
答案 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-pool和average-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,以获得图像的低维表示。但是,大多数方法都是线性技术,可能无法完全保留所有内容。另一种方法是训练自动编码器,然后将低维结果保存为预处理数据。
希望这有帮助!