今天来编写预测程序,代码如下:
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]))
我们来看看效果: