keras 如何从文件夹中选择一个随机图像进行CNN测试过程?

4xy9mtcn  于 2022-12-27  发布在  其他
关注(0)|答案(3)|浏览(235)

我想问一下,我的代码是否有办法从包含大量水果图片的文件夹中随机选择一张图片。这个想法是用一张随机图片来测试我的CNN模型。下面是我的代码,我已经尝试过了,但出现了如下所示的错误。

from keras.preprocessing import image
import numpy as np
import os
import random

test_img  = random.choice(os.listdir("drive/My Drive/HAZIQ/TESTTEST/MODELTEST/"))
img = image.load_img(test_img, target_size = (208,256))
img = image.img_to_array(img, dtype=np.uint8)
img = np.array(img)/255.0
prediction = model.predict(img[np.newaxis, ...])

print("Probability: ",np.max(prediction[0], axis=-1))
predicted_class = class_names[np.argmax(prediction[0], axis=-1)]
print("Classified: ",predicted_class,'\n')

plt.axis('off')
plt.imshow(img.squeeze())
plt.title("Loaded Image")

错误
FileNotFoundError Traceback (most recent call > last) in () > 5 > 6 test_img = random.choice(os.listdir("drive/My Drive/HAZIQ/TESTTEST/MODELTEST/")) > ----> 7 img = image.load_img(test_img, target_size = (208,256)) > 8 img = image.img_to_array(img, dtype=np.uint8) > 9 img = np.array(img)/255.0 1 frames /usr/local/lib/python3.7/dist-packages/keras_preprocessing/image/utils.py > in load_img(path, grayscale, color_mode, target_size, interpolation) > 111 raise ImportError('Could not import PIL.Image. ' > 112 'The use of load_img requires PIL.') > --> 113 with open(path, 'rb') as f: > 114 img = pil_image.open(io.BytesIO(f.read())) > 115 if color_mode == 'grayscale': FileNotFoundError: [Errno 2] No such file or directory: '32660-3194-5469.jpg'
我可以确认'32660-3194-5469.jpg'在文件夹中。我不知道为什么它说没有这样的文件或目录。
我想这样
enter image description here
任何帮助都很好。
谢谢!

1u4esq0p

1u4esq0p1#

该守则

os.listdir("drive/My Drive/HAZIQ/TESTTEST/MODELTEST/")

将返回一个文件名,但不是文件的完整路径,因此找不到该文件。

sdir=r'drive/My Drive/HAZIQ/TESTTEST/MODELTEST/'
flist=os.listdir(sdir)
test_img=random.choice(flist)
test_img=os.path.join(sdir, test_img)
yptwkmov

yptwkmov2#

命令os.listdir(mydir)返回包含目录中条目名称的列表。
1.在列表中随机选择一个元素之前,必须确保该元素实际上是一个图像文件myimage
1.你的问题就在这里:重要的是,您必须设置完整路径:myfilepath = os.path.join(mydir, myimage)
或者你可以使用glob,它允许通配符,比如jpeg图像:

import glob
image_list = glob.glob(os.path.join(mydir, '*.jpg'))
mznpcxlj

mznpcxlj3#

向您介绍数据集更适合于预处理数据的转换和后续处理的转换。

  • [样品]:*
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
DataSet
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
dataset = tf.data.Dataset.from_tensor_slices((tf.constant(tf.cast(list_file, dtype=tf.int64), shape=(33, 1, 32, 32, 4), dtype=tf.int64),tf.constant(list_label, shape=(33, 1, 1), dtype=tf.int64)))
dataset = tf.data.Dataset.range(33)
dataset = dataset.shuffle(10, reshuffle_each_iteration=True)

相关问题