软工划水日报-模型预测 4/22

今天来编写预测程序,代码如下:

import paddle
import paddle.fluid as fluid
from PIL import Image
import numpy as np

paddle.enable_static()


# 创建执行器
place = fluid.CPUPlace()
exe = fluid.Executor(place)


# 保存预测模型路径
save_path = 'infer_model/'
# 从模型中获取预测程序、输入数据名称列表、分类器
[infer_program, feeded_var_names, target_var] = fluid.io.load_inference_model(dirname=save_path, executor=exe)


# 预处理图片
def load_image(file):
    images = Image.open(file)
    # 统一图像大小
    images = images.resize((224, 224), Image.ANTIALIAS)
    # 转换成numpy值
    images = np.array(images).astype(np.float32)
    # 转换成CHW
    images = images.transpose((2, 0, 1))
    # 转换成BGR
    images = images[(2, 1, 0), :, :] / 255.0
    images = np.expand_dims(images, axis=0)
    return images


# 获取图片数据
img = load_image('images/0c387b80-6b69-4b54-9ec5-e2ebdabdff83___Rutg._HL 3706.JPG')

# 执行预测
result = exe.run(program=infer_program,
                 feed={feeded_var_names[0]: img},
                 fetch_list=target_var)

# 显示图片并输出结果最大的label
lab = np.argsort(result)[0][0][-1]
lab2 = np.argsort(result)[0][0][-2]
lab3 = np.argsort(result)[0][0][-3]
lab4 = np.argsort(result)[0][0][-4]
print('预测结果标签为:%d,概率为:%f' % (lab, result[0][0][lab]))
print('预测结果标签为:%d,概率为:%f' % (lab2, result[0][0][lab2]))
print('预测结果标签为:%d,概率为:%f' % (lab3, result[0][0][lab3]))
print('预测结果标签为:%d,概率为:%f' % (lab4, result[0][0][lab4]))

我们来看看效果:

原文地址:https://www.cnblogs.com/Sakuraba/p/14910078.html