前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Flask深度学习模型服务部署案例

Flask深度学习模型服务部署案例

作者头像
医学处理分析专家
发布2023-08-17 09:18:13
发布2023-08-17 09:18:13
9630
举报
文章被收录于专栏:最新医学影像技术

今天将分享基于Flask的深度学习模型服务端部署完整实现版本,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。

一、Flask简介

Flask是一个使用Python编写的轻量级Web应用框架,可扩展性很强,相较于Django框架,灵活度很高,开发成本低。它仅仅实现了Web应用的核心功能,Flask由两个主要依赖组成,提供路由、调试、Web服务器网关接口的Werkzeug 实现的和模板语言依赖的jinja2,其他的一切都可以由第三方库来完成。

二、Flask安装配置

1、在python环境下FLask安装非常简单:pip install flask

2、选择一台带GPU的电脑作为Flask深度学习模型服务部署的设备。

三、Flask深度学习模型服务部署用例

一个简单的深度学习分类的Flask深度学习模型服务例子。

代码语言:javascript
复制
from flask import Flask, request, send_file
from model import *
import os
import torch
import cv2

# Use CUDA
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
os.environ['CUDA_LAUNCH_BLOCKING'] = '1'
use_cuda = torch.cuda.is_available()

app = Flask(__name__)

# 载入模型
ResNet2d = MutilResNet2dModel(image_height=512, image_width=512, image_channel=1, numclass=2, batch_size=16,
                              loss_name='MutilCrossEntropyLoss', model_name='resnet101', accum_iter=1,
                              use_cuda=use_cuda, inference=True, model_path=r'log/resnet101/ce/MutilResNet2d.pth')

root_dir = r"D:/uploads"
if not os.path.exists(root_dir):
    os.makedirs(root_dir)


# 定义服务接口
@app.route('/predict', methods=['POST'])
def predict():
    file = request.files.get('file')  # 获取上传的文件
    if file:
        file.save(root_dir + '/' + file.filename)  # 将上传文件保存到本地
        image = cv2.imread(root_dir + '/' + file.filename, 0)  # 读取本地文件
        mask, mask_prob = ResNet2d.inference(image)  # 对本地文件进行推理计算
        # 返回预测结果
        return f'category,{str(mask)}'
    else:
        return 'No file uploaded'


# 定义服务接口
@app.route('/getresult', methods=['GET'])
def getresult():
    filename = request.args.get('file')  # 获取请求参数中的文件名
    if not filename:
        return "Missing parameter: file"  # 没有提供文件名
    filepath = root_dir + '/' + filename  # 生成完整的文件路径
    try:
        return send_file(filepath, as_attachment=True, attachment_filename=filename)
    except FileNotFoundError:
        return "The file does not exist"  # 文件不存在


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

然后运行上述程序。

四、Flask深度学习模型服务部署测试

在同一个网段下,通过在linux下使用curl指令来调用Flask深度学习模型服务。

A、首先获取服务部署的设备IP,使用ipconfig。

B、然后再获取访问服务的设备IP,使用ifconfig -a。

C、再在linux下ping一下服务端的ip,是可以ping通的。

D、使用curl指令来运行深度学习分类模型,通过将本地文件上传到服务器再经过分类器得到分类结果。指令格式如下:

代码语言:javascript
复制
curl -X POST -F "file=@E:/TRAIN000106.jpg" 192.168.10.96:8000/predict

在服务端可以看到访问的消息。

E、使用curl指令可以从服务器上下载指定文件到本地目录下,例如深度学习模型是分割模型的时候,当上传完数据到服务器后通过分割模型得到分割结果,但是此时结果还是在服务器端,需要将结果从服务器端下载到本地进行后续操作。指令如下:

代码语言:javascript
复制
curl 192.168.10.96:8000/getresult?file=TRAIN000106.jpg -o /home/yuri/Project/TRAIN000106.jpg

在服务端可以看到访问的消息。

从服务器上下载到本地的数据。

如果大家觉得这个项目还不错,希望大家给个Star并Fork,可以让更多的人学习。如果有任何问题,随时给我留言我会及时回复的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 最新医学影像技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档