下面的代码用于从目录结构中的文件中预测图像类
import tensorflow as tf
image_dir = "images"
model = tf.keras.applications.VGG19(input_shape=(224, 224, 3), weights="imagenet")
images = tf.keras.utils.image_dataset_from_directory(image_dir, labels=None, image_size=(224, 224), crop_to_aspect_ratio=True)
probs = model.predict(images)
preds = tf.keras.applications.vgg19.decode_predictions(probs, top=1)现在我想用它们的文件名和预测来绘制图像,由于批处理,这有点复杂。
import matplotlib.pyplot as plt
cols = 6
box_size = 3
rows = (len(images.file_paths) + cols - 1) // cols
fig, axes = plt.subplots(nrows=rows, ncols=cols, figsize=(box_size * cols, box_size * rows))
metas = zip(axes.flatten(), images.file_paths, preds)
for image_batch in images:
for img in image_batch:
ax, file, pred = next(metas)
name = file.split('/')[-1]
ax.imshow(img / 255.0)
ax.set_axis_off()
ax.set_title(f"{name}: {pred[0][1]} {round(pred[0][2]*100)}%")
plt.tight_layout()
plt.show()我得到了文件名、类和百分比的期望的图像网格。但是图像和预测都是混在一起的。我怎样才能保持相关性呢?
发布于 2022-08-01 22:44:12
我需要将shuffle=False添加到image_dataset_from_directory()
见https://www.tensorflow.org/api_docs/python/tf/data/Dataset#list_files中的注意事项
https://stackoverflow.com/questions/73198397
复制相似问题