一、在tensorflow中新建及保存模型
启动Jupyter Notebook
新建Notebook
代码
from flask import Flask, request, jsonify # type: ignore
import numpy as np # type: ignore
import tensorflow as tf # type: ignore
import json
from PIL import Image # type: ignoreapp = Flask(__name__) # 加载模型(确保模型文件与此脚本在同一目录下,或者提供正确的路径)
model = tf.keras.models.load_model('mnist_model.h5') def get_image_metadata(image_path): img = Image.open(image_path) metadata = { 'filename': image_path.split('/')[-1], 'width': img.width, 'height': img.height, 'format': img.format, 'mode': img.mode } return metadata def image_to_json(image_path, output_path): metadata = get_image_metadata(image_path) with open(output_path, 'w') as f: json.dump(metadata, f, ensure_ascii=False, indent=4) def preprocess_image(img): # 将 PIL 图像转换为 numpy 数组 img_array = np.array(img) # 归一化 img_array = img_array / 255.0 # 如果模型需要特定的维度(例如,扩展维度和颜色通道),则进行调整 img_array = np.expand_dims(img_array, axis=0) # 如果模型接受的是灰度图像,但是 PIL 加载的是 RGB 图像,需要转换为灰度 if img_array.shape[3] == 3: img_array = np.mean(img_array, axis=3, keepdims=True) return img_array@app.route('/predictlast', methods=['GET'])
def predictlast(): # if 'file' not in request.files: # return jsonify({'error': 'No file part in the request'}), 400 # file = request.files['file'] # file = Image.open('path_to_your_image.jpg')# 如果用户未选择文件,浏览器也会提交一个空文件部分,没有文件名 # if file.filename == '': # return jsonify({'error': 'No selected file'}), 400 # 读取图片文件 img = Image.open('path_to_your_image.jpg') # 转换为模型需要的格式 img_array = preprocess_image(img) # 使用模型进行预测 prediction = model.predict(img_array)# print(prediction)# 假设你的模型输出的是 one-hot 编码,你需要找到概率最高的类别 # predicted_class = np.argmax(prediction, axis=1)[0] # 返回预测结果 # return jsonify({'predicted_class': predicted_class}) return "dfd" @app.route('/test', methods=['GET'])
def test(): print(233)# data = request.get_json() # 假设客户端发送JSON格式的数据 # data =get_image_metadata('path_to_your_image.jpg')image_to_json('path_to_your_image.jpg', 'image_metadata.json')# input_data = np.array(data).reshape(1, -1) # 转换输入数据格式以适应模型 # print(input_data)# prediction = model.predict(input_data) # 使用模型进行预测 # return jsonify({'prediction': prediction.tolist()}) # 返回预测结果作为JSON响应 return "dfdf"if __name__ == '__main__': app.run(debug=True) # 启动Flask应用(开发模式)
二、VScode 启动Flask命令
pip install tensorflow
pip install Pillow
python -- mnist_hello.py
启动效果
三、访问地址
http://127.0.0.1:5000/predictlast