gpt4 book ai didi

python - batch_size = 1 的 tensorflow 中的不同图像大小

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:56 25 4
gpt4 key购买 nike

我想实现一个python类,它可以加载一个tensorflow模型并实现一个推理。但是我不知道如何输入可变图像大小的图像。 :(

class ArtGenerater():
def __init__(self,model_path):
self.model_path = model_path
# vary shape?
self.x = tf.placeholder(tf.float32,shape=(1,512,512,3))
self.gen = model.resnet(self.x)
self.out = tf.saturate_cast(self.gen,tf.uint8)

self.sess = tf.Session()
file = tf.train.lastest_checkpoint(self.model_path)
saver = tf.train.Saver()
saver.restore(self.sess,file)
def pic(self,image_path):
img =np.asarray(Image.open(image_path)).astype(np.float32)
img = np.expand_dims(img,0)
output_t = self.sess.run(self.out,feed_dict={self.x:img})
return output_t

现在我只使用tf.placeholder(tf.float32,shape=(1,512,512,3)),但我的图像有不同的尺寸(例如 1000*900)。

如何实现这个功能?谢谢。

编辑:

谢谢大家。我已经通过使用解决了问题:

x = tf.placeholder(tf.string)
img = tf.image.decode_jpeg(x,channels=3)

这可以为具有不同图像大小的网络(我的 ConvNet 包括许多 conv2dconv2d_tranpose)提供数据。 :)

最佳答案

基本上您可以使用 None 定义各种尺寸的输入,如下所示

self.x = tf.placeholder(tf.float32, [1, None, None, 3]) 

然后你可以提供不同的输入

feed_dict={self.x: current_data} etc..

但是要小心你的神经网络结构。如果您将最后一个卷积层展平为第一个密集层的输入,那么您的网络只能在该尺寸下工作,并且您需要拉伸(stretch)或裁剪图像以使其工作。

更灵活的方法是使用类似 Global Average Pooling 的方法或 Spatial Pyramid Pooling两者都解决了这个问题。

关于python - batch_size = 1 的 tensorflow 中的不同图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38966533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com