gpt4 book ai didi

python - 读取并预处理 tensorflow 预训练模型的图像

转载 作者:行者123 更新时间:2023-12-01 08:52:32 24 4
gpt4 key购买 nike

我在 Tensorflow 方面没有太多经验。我正在尝试使用预训练的 ResNet152 模型来获取最后一层的激活作为输出。我用于输入的图像存储在我的硬盘上。因此,我需要加载图像,对其进行预处理,然后从预训练模型中获取输出。我找到了使用图像 URL 的示例,但是当我尝试使用图像路径时,我无法让它工作。这是我到目前为止所拥有的(目前只有一张图片):

with tf.Graph().as_default():

filename_queue = tf.train.string_input_producer(['./testimg/A_008.jpg'])
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
image = tf.image.decode_jpeg(value, channels=3)
preprocessing = preprocessing_factory.get_preprocessing('resnet_v2_152', is_training=False)
processed_image = preprocessing(image, 299,299)
processed_images = tf.expand_dims(processed_image, 0)

with slim.arg_scope(resnet_v2.resnet_arg_scope()):
logits, end_points = resnet_v2.resnet_v2_152(processed_images, is_training=False)

checkpoints_dir='./models/resnet_v2_152'
init_fn = slim.assign_from_checkpoint_fn(
os.path.join(checkpoints_dir, 'resnet_v2_152.ckpt'),
slim.get_variables_to_restore())

with tf.Session() as sess:
init_fn(sess)
np_image, fv = sess.run([image, logits])

我在 Jupyter Notebook 中执行此操作。当我执行代码时,我没有收到错误消息,它只是继续运行,直到我重新启动内核。

你知道我做错了什么吗?我该如何处理多个图像?

最佳答案

我通过将 tf.WholeFileReader() 替换为 tf.read_file() 找到了解决方案:

graph = tf.Graph()

with graph.as_default():
image_path = image = tf.placeholder(tf.string)
image = tf.image.decode_jpeg(tf.read_file(image_path), channels=3)
preprocessing = preprocessing_factory.get_preprocessing('resnet_v2_152', is_training=False)
processed_image = preprocessing(image, image_size, image_size)
processed_images = tf.expand_dims(processed_image, 0)

with slim.arg_scope(resnet_v2.resnet_arg_scope()):
logits, end_points = resnet_v2.resnet_v2_152(processed_images, is_training=False)

checkpoints_dir='./models/resnet_v2_152'
init_fn = slim.assign_from_checkpoint_fn(
os.path.join(checkpoints_dir, 'resnet_v2_152.ckpt'),
slim.get_variables_to_restore())


images = ['./testimg/A_008.jpg', './testimg/logo.jpg']

with tf.Session(graph=graph) as sess:
init_fn(sess)

for img in images:
fv = sess.run(logits, feed_dict={image_path: img})
print(fv)

关于python - 读取并预处理 tensorflow 预训练模型的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53019944/

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