基于Flask的模型部署

这篇具有很好参考价值的文章主要介绍了基于Flask的模型部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于Flask的模型部署

一、背景

Flask:一个使用Python编写的轻量级Web应用程序框架;

首先需要明确模型部署的两种方式:在线和离线;

在线:就是将模型部署到类似于服务器上,调用需要通过网络传输数据,再将结果返回;

离线:就是将模型直接部署在终端设备上,不需要联网,数据传输上比较快;

二、Flask简单部署分类模型

通过一个实际的分类案例,来说明整个实现的流程;

首先Flask分为服务端和设备端,服务端就是接受数据并处理,应用端只负责发送数据和展示结果;

实现步骤:

------服务端-------

1、初始化Flask app

可以理解为初始化一个服务器对象;

app = flask.Flask(__name__)

2、加载模型

def load_model():
    global model
    model = resnet50(pretrained=True)	# 这里模型可以替换成自己的模型
    model.eval()
    if use_gpu:
        model.cuda()

这里是所有模型通用的,如果是一些模型需要将模型结构的代码和模型文件都准备好;

3、数据预处理

推理部分的数据处理应该与模型训练前的处理保持一致,否则可能导致结果出现较大偏差;

def prepare_image(image, target_size):
    if image.mode != 'RGB':
    image = image.convert("RGB")	# 转换图像为RGB类型
	
	# 缩放图像
    image = T.Resize(target_size)(image)
    image = T.ToTensor()(image)

    # 归一化
    image = T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])(image)

    # 这里表示可以配置多个图像作为一个batch
    image = image[None]
    if use_gpu:
        image = image.cuda()	# 使用GPU
    return Variable(image, volatile=True) 	#不需要求导

上述的数据处理是最基本并且简单的数据处理,在很多任务中的数据预处理会复杂很多;

4、开启服务

# 注意这里的predict可以自行修改,但需要和后面的端口后缀保持一致
@app.route("/predict", methods=["POST"])	# 这里是python的装饰器
def predict():
    # 初始化一个返回列表,并且用一个变量表示是否调用成功
    data = {"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)) #二进制数据

            # 数据预处理
            image = prepare_image(image, target_size=(224, 224))

            # 得到模型输出的结果,取出前K个结果
            preds = F.softmax(model(image), dim=1)
            results = torch.topk(preds.cpu().data, k=3, dim=1)
            results = (results[0].cpu().numpy(), results[1].cpu().numpy())
		   
		   # 结果保存到要传回的列表中
            data['predictions'] = list()

            # 根据标签值找到对应对象的实际类别
            for prob, label in zip(results[0][0], results[1][0]):
                label_name = idx2label[label]
                r = {"label": label_name, "probability": float(prob)}
                data['predictions'].append(r)

            # 设置返回列表调用成功
            data["success"] = True

    # 将数据转为json并返回
    return flask.jsonify(data)

这里是服务的具体执行程序,也就是接收数据和处理数据,并将结果返回;

这里可以做UI的可视化界面,本次只是演示效果就不进行设计;

执行该程序后,出现一个访问地址和端口号,如下图所示:

基于Flask的模型部署,算法部署,flask,python,后端

这里是部署到本地的服务器上,在实际工程中,一般是部署到一台公共服务器上,将服务开放为接口供但部分应用使用;

------应用端-------

1、初始化服务接口

PyTorch_REST_API_URL = 'http://127.0.0.1:5000/predict'

2、请求服务并展示结果

def predict_result(image_path):
    # 读取图像数据,保存到数组中
    image = open(image_path, 'rb').read()
    payload = {'image': image}

    # 请求服务
    r = requests.post(PyTorch_REST_API_URL, files=payload).json()

    # 确保服务返回成功
    if r['success']:
        # 遍历结果,并打印出来
        for (i, result) in enumerate(r['predictions']):
            print('{}. {}: {:.4f}'.format(i + 1, result['label'],
                                          result['probability']))
    # 如果服务请求失败,返回失败
    else:
        print('Request failed')

基于Flask的模型部署,算法部署,flask,python,后端

上面就是传入一张狗狗图像后打印的结果,可以看出服务能够正常运行;

总结:

虽然是一个简单的分类项目,但整体部署的流程以及一些代码的模板是不变的,换成别的任务可能会复杂一些,主要还是前后处理相对复杂一些,并且做UI界面的话也会相对复杂一些;文章来源地址https://www.toymoban.com/news/detail-635277.html

到了这里,关于基于Flask的模型部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于nodejs+vue基于协同过滤算法的私人诊python-flask-django-php

     实现后的私人诊所管理系统基于用户需求分析搭建的,并且会有个人中心,患者管理,医生管理,科室管理,出诊医生管理,预约挂号管理,预约取消管理,病历信息管理,药品信息管理,处方开具管理,留言板管理,系统管理等基本功能。不仅能满足人们对于私人诊所的

    2024年03月27日
    浏览(36)
  • 模型部署flask学习篇(二)---- flask用户登录&用户管理

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在学习机器学习或者深度学习后,我们常常会将自己训练好的模型来进行部署或者可视化出来,供自己或者别人来使用,那么python的flask框架就可以作为选择之一。 1、 flask路由:可以接收get请求和post请求

    2024年01月25日
    浏览(32)
  • 模型部署flask学习篇(一)---- flask初始及创建登录页面

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在学习机器学习或者深度学习后,我们常常会将自己训练好的模型来进行部署或者可视化出来,供自己或者别人来使用,那么python的flask框架就可以作为选择之一。 安装 如何使用flask打印 hello world 总结

    2024年01月24日
    浏览(35)
  • flask模型部署教程

    具体参考https://blog.csdn.net/weixin_42126327/article/details/127642279 1、安装conda环境和相关包 1、训练模型并保存模型 model.py 2、启动flask服务 app_demo.py 3、调用flask服务的客户端代码 request_demo.py python客服端代码 FlaskClient.scala scala客户端代码 http客户端代码 templates/index.html 1、调试环境

    2024年02月12日
    浏览(34)
  • pytorch模型网页部署——Flask

    Flask是python的轻量级web框架,可用来做简单的模型部署。Flask的基本用法如下: step1:定义Flask类的对象,即创建一个基于Flask的服务器 step2:定义公开的路由及路由对应的调用函数 step3:运行服务器 运行结果: 在基于flask的网页上部署模型,其实只需在上述例子中定义的函数

    2023年04月23日
    浏览(36)
  • 使用Flask简单部署深度学习模型

    当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。 此时,Web服务器会把来自客户端的所有请求都交给Flask程序实例。 程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。 根据每个URL请求,找到具体的视图函数并进行调用。在Flask程序中,路由的

    2023年04月25日
    浏览(29)
  • Python Flask 后端向前端推送信息——轮询、SSE、WebSocket

    后端向前端推送信息,通知任务完成 轮询 SSE WebSocket 请求方式 HTTP HTTP TCP长连接 触发方式 轮询 事件 事件 优点 实现简单易兼容 实现简单开发成本低 全双工通信,开销小,安全,可扩展 缺点 消耗较大 不兼容IE 传输数据需二次解析,开发成本大 适用场景 服务端向客户端单向

    2023年04月19日
    浏览(73)
  • 计算机毕业设计:基于python招聘数据分析可视化系统+预测算法+爬虫+Flask框架(建议收藏)

    [毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 2023年 - 2024年 最新计算机毕业设计 本科 选题大全 汇总 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。 本项目旨在通过使用Python的requests库

    2024年01月23日
    浏览(43)
  • 基于Flask的高并发部署方案

    在AI部署方案中,Flask是最常用的方案!本文列举几种最常用基于Flask的部署方案。 Flask 是一个轻量级的 Python Web 框架,它非常适合构建小型到中型的应用程序。下面是对 Flask 的详细解释和简单示例: Flask 的特点: 轻量级 :相比于 Django,Flask 更轻量级,更适合小型项目或微

    2024年01月16日
    浏览(57)
  • 微信小程序的人工智能模型部署(flask)

    目录 写在前面: 具体做法: 后端: 前端: 其他: 我使用的微信小程序开发工具是:“微信开发者工具”,当然你用其他的开发工具应该也差别不大; 人工智能模型用的是pytorch; 具体不介绍人工智能模型的保存,主要介绍一下flask的写法; 首先你要把人工智能模型先保存

    2024年02月15日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包