房产网站源码wordpress,扎染毕业设计代做网站,网站建设技术合伙人的技术股份,wordpress电商教程前言 模型部署是指将大模型运行在专属的计算资源上#xff0c;使模型在独立的运行环境中高效、可靠地运行#xff0c;并为业务应用提供推理服务。其目标是将机器学习模型应用于实际业务中#xff0c;使最终用户或系统能够利用模型的输出#xff0c;从而发挥其作用。 一、设…前言 模型部署是指将大模型运行在专属的计算资源上使模型在独立的运行环境中高效、可靠地运行并为业务应用提供推理服务。其目标是将机器学习模型应用于实际业务中使最终用户或系统能够利用模型的输出从而发挥其作用。 一、设置客户端
运行之前要先运行服务端url里写入本机ip和端口后面跟上端口名以二进制形式读取图片创建payload字典向上面的url服务器发送post请求传入字典文件将返回的json文件解析成字典
import requests# url和端口写成自己的端口
flask_url http://192.168.24.39:5012/predictdef predict_result(image_path):image open(image_path, rb).read()payload {image: image}r requests.post(flask_url, filespayload).json()# 向flask_url服务发送一个POST请求并尝试将返回的JSON响应解析为一个字典。# print(r)if r[success]:# 输出结果for (i, result) in enumerate(r[predictions]):print(f{i 1}.预测类别为{result[label]}:{result[probability]})else:print(Request failed)if __name__ __main__:predict_result(./35/image_06975.jpg)输出 二、设置服务端
服务端初始化一个Flask对象命名appapp.route(/predict, methods[POST]) 定义了一个路由 以POST方式发送到/predict的请求都会进入下方的函数下方函数处理完之后返回flask.jsonify(data)json文件
import io
import flask
import torch
import torch.nn.functional as F
from PIL import Image
from torch import nn
from torchvision import transforms, models, datasets# 初始化Flask app
app flask.Flask(__name__) # 创建一个新的Flask应用程序实例
# __name__参数通常被传递给FasK应用程序来定位应用程序的根路径,这样Flask就可以知道在哪里找到模板、静态文件等。
# 总体来说app flask.Flask(__name__)是FLaSK应用程序的起点。它初始化了一个新的Flask应用程序实例。为后续添加路由、配置等奠定了基础model None
use_gpu False# 加载模块进来
def load_model():global model# 加载resnet18网络model models.resnet18()num_ftrs model.fc.in_featuresmodel.fc nn.Sequential(nn.Linear(num_ftrs, 102)) # 输出神经元为类别数checkpoint torch.load(best.pth)model.load_state_dict(checkpoint[state_dict])model.eval()if use_gpu:model.cuda()# 数据预处理
def prepare_image(image, target_size):# 针对不同模型 image的格式不同 但需要统一到RGB格式if image.mode ! RGB:image image.convert(RGB)# (按照所使用的模型将输入图片的尺寸修改,并转为tensor)image transforms.Resize(target_size)(image)image transforms.ToTensor()(image)image transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])(image)# 增加一个维度 用于batch测试image image[None] # torch 的写法if use_gpu:image image.cuda()return torch.tensor(image)app.route(/predict, methods[POST])
# app.route(/predict)
# 这部分定义了一个路由表示当客户端发送请求到 /predict URL 时Flask 应用会执行下方的处理函数。也就是说任何访问 /predict 的请求都会被这个函数处理。
# methods[POST]
# 这部分指定了允许的 HTTP 请求方法。methods[POST] 表示这个路由只接受 POST 请求。
def predict():# 做一个标志 刚开始无图像传入时为false 传入图像时为truedata {success: False}if flask.request.method POST: # 如果收到请求if flask.request.files.get(image): # 判断是否为图像image flask.request.files[image].read() # 将收到的图像进行读取,内容为二进制image Image.open(io.BytesIO(image)) # 将接收到的二进制图片转换成16进制 # 将二进制数据转换为图像对象# 利用上面的预处理函数将读入的图像进行预处理image prepare_image(image, target_size(224, 224))preds F.softmax(model(image), dim1) # 得到各个类别的概率results torch.topk(preds.cpu().data, k3, dim1) # 概率最大的前3个结果# torch.topk用于返回输入张量中每行最大的k个元素及其对应的索引results (results[0].cpu().numpy(), results[1].cpu().numpy())# 将data字典增加一个key,value,其中value为ist格式data[predictions] list()for prob, label in zip(results[0][0], results[1][0]):r {label: str(label), probability: float(prob)}# 将预测结果添加至data字典data[predictions].append(r)data[success] Truereturn flask.jsonify(data) # 将最后结果以json格式文件传出if __name__ __main__:load_model() # 先加载模型app.run(host192.168.24.41, port5012) # 开启服务 服务器进入监听状态 等待用户发送信息# host 参数指定 IP 地址:# host 127.0.0.1: 仅能从本机访问。# host 0.0.0.0: 允许来自任何设备网络访问。# host 192.168.24.41: 仅允许来自该特定IP地址的请求通常是局域网内的某台设备。# host 127.0.0.1: 这表示Flask应用仅能在本机上访问。例如,只有在同一台计算机上打开浏览器,才能通过http: // 127.0.0.1: 5012 / 访问Flask应用。其他计算机无法通过这个IP访问。# host 0.0.0.0: 这表示Flask应用会监听来自任何网络接口的请求,适用于让其他设备比如局域网内的其他设备也能访问该应用。通过局域网访问时,其他设备可以使用http: // 你的局域网IP : 5012 / 访问。# host 192.168.24.41: 这意味着Flask仅监听来自该特定IP地址通常是局域网IP的请求。如果你在局域网中,其他设备可以使用http: // 192.168.24.41: 5012 / 访问。输出
如果最后的状态码是200证明请求成功