一次可预测多张图片

为什么我要写这篇博客呢?因为我刚开始学习深度学习的时候,什么都不懂,网上好多代码调用一次模型都是预测一张图片。然后我对一个文件夹的图片进行预测,调用了一个文件夹图片数量次模型!我太傻了。。。

训练模型部分我就不说了,下面介绍模型预测部分:(代码环境是tensorflow2.0

  • 读入图片的路径信息、名字列表

#读入所有图片的路径
test_image_path = glob.glob('图片文件夹目录/*.jpg')
#根据图片的名字进行排序(因为我的图片是0.jpg,1.jpg,2.jpg,..全是数字命名的,就按数字大小进行排#序)
test_image_path.sort(key=lambda x:int(x.split('\\')[-1].split('.')[0]))

#使用tensorflow的Dataset改造test_image_path
data_test = tf.data.Dataset.from_tensor_slices(test_image_path)
#图片名字列表(不包含.jpg)
img_name = [int(x.split('\\')[-1].split('.')[0]) for x in test_image_path]
  • 定义一个对图片进行预处理的函数

def load_preprocess_image(path):
    image = tf.io.read_file(path)
    image = tf.image.decode_jpeg(image,channels=3)
    image = tf.image.resize(image,[256,256])
    image = tf.cast(image,tf.float32)
    image = image/255
    return image
  • 调用函数对图片进行预处理,并给data_test设置batch

#给data_test应用该函数(之前data_test里边是图片路径,应用函数后就会成为图片)
data_test = data_test.map(load_preprocess_image)
#设置batch
data_test = data_test.batch(32)
  • 最重要的一环,开始预测 

predictions = model.predict(data_test)

我的代码是用xception进行迁移学习,对猫狗进行分类,属于二分类问题,最后在Dense层用的是softmax激活函数,所以predictions是一个0-1的概率值(也就是若大于0.5则是表示猫,小于0.5表示狗) 。因此下边是用列表推导式进行最后的处理:

preds = [1 if x>0.5 else 0 for x in predictions]
  • 存文件

import pandas as pd
data = pd.DataFrame(preds,index=img_name,columns=['result'])

完整代码使用jupyter notebook编写,

代码链接:链接:https://pan.baidu.com/s/1vKV27Nuf0PEMTqnadmla4w 
提取码:pfmu 

 

 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
要将模型转化为一次性可识别多张图片的功能,可以使用以下步骤: 1. 加载模型:首先,加载已经训练好的模型。这可以是图像识别、目标检测或其他类型的模型。 2. 准备图像:将多张待识别的图像准备好,可以是一个图像文件夹或图像列表。 3. 批量处理图像:使用模型对每张图像进行预测。可以使用循环遍历每张图像,然后将其传递给模型进行预测。 4. 获取预测结果:对于每张图像,模型会返回一个预测结果。你可以将这些结果保存在一个列表或字典中,以后进行处理或输出。 下面是一个示例代码,展示了如何使用Python和TensorFlow库将模型转化为一次性可识别多张图片: ```python import tensorflow as tf import numpy as np # 加载模型 model = tf.keras.models.load_model('model.h5') # 准备图像 image_folder = 'path/to/images' image_files = ['image1.jpg', 'image2.jpg', 'image3.jpg'] # 批量处理图像 predictions = [] for image_file in image_files: image_path = os.path.join(image_folder, image_file) image = tf.keras.preprocessing.image.load_img(image_path, target_size=(224, 224)) image = tf.keras.preprocessing.image.img_to_array(image) image = np.expand_dims(image, axis=0) image = tf.keras.applications.resnet50.preprocess_input(image) prediction = model.predict(image) predictions.append(prediction) # 获取预测结果 for image_file, prediction in zip(image_files, predictions): # 处理预测结果,例如输出类别或保存到文件 print(f'{image_file}: {prediction}') ``` 请注意,上述代码仅为示例,实际使用时可能需要根据你的模型和数据进行适当的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello689

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值