keras image predict

from __future__ import print_function
import keras
from keras.models import Model
from keras.datasets import cifar10
import numpy as np
import os
from PIL import Image
from keras.preprocessing.image import img_to_array
import matplotlib.pyplot as plt

#image mean
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
# Normalize data.
x_train = x_train.astype('float32') / 255
x_train_mean = np.mean(x_train, axis=0)

# 自己加载raw image进行识别
lst = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
def onehot_to_label(res):
    label = ''
    for i in range(len(res[0])):
        if res[0][i] == 1:
            label = lst[i]
    return label

def softmax_to_label(res):
    label = ''
    index = res[0].argmax()
    label = lst[index]
    return label

# load model
model = keras.models.load_model('./saved_models/cifar10_ResNet83v2_model.060.h5')
print(model)

# read image and preprocess
def image_to_array(path):
    image = Image.open(path)
    image = image.resize((32, 32))   # 会将图像整体缩放到指定大小,不是裁剪
    image = img_to_array(image)      # 变成数组

    image = image.astype('float32') / 255
    image -= x_train_mean

    image = image.reshape([1, 32, 32, 3]) # reshape到4维张量
    return image


image_path = './cifar10'
for filename in os.listdir(image_path):
    filename = os.path.join(image_path, filename)
    # print(filename)
    # img = input('Input image filename:')
    try:
        image = image_to_array(filename)
    except:
        print('Open Error! Try again!')
        continue
    else:
        res = model.predict(image)
        label = softmax_to_label(res)
        print(f'{filename}      is: {label}')
        # plt.imshow(image)
        # plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI周红伟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值