深度学习模型部署——Flask框架轻量级部署+阿里云服务器

这篇具有很好参考价值的文章主要介绍了深度学习模型部署——Flask框架轻量级部署+阿里云服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

​因为参加一个比赛,需要把训练好的深度学习模型部署到web端,第一次做,在网上也搜索了很多教程,基本上没有适合自己的,只有一个b站up主讲的还不错https://www.bilibili.com/video/BV1Qv41117SR/?spm_id_from=333.999.0.0&vd_source=6ca6a313467efae52a28428a64104c10https://www.bilibili.com/video/BV1Qv41117SR/?spm_id_from=333.999.0.0&vd_source=6ca6a313467efae52a28428a64104c10在前端的一部分html语言借鉴了这个up主,有兴趣的可以去看看。在部署的时候遇到了很多坑,就想记录一下,仅代表个人看法

项目场景:角膜疾病图片识别算法(pytorch环境),用Flask轻量级框架部署到web端并部署到阿里云服务器进行测试。


流程:

1.写预测函数

1.1将训练好的模型参数加载到模型中去

checkpoint_path = "/model_best.pth.tar"   #训练好的模型参数(要注意保存模型的时候是保存了模型还是模型参数,这里是模型参数)
model = res50Encoder(attention_map_num, class_num)   #加载模型
model.load_state_dict(torch.load(checkpoint_path,map_location='cpu')['state_dict'])#(将参数加载到模型中去)
model.eval() #pytorch框架会自动把BN和Dropout固定住,直接用训练好的值

1.2 数据预处理模块

data_transform = transforms.Compose([
        transforms.Resize((n, m)),
        transforms.CenterCrop(num),
        transforms.ToTensor(),
        transforms.Normalize(a,b),
    ])        #根据自己的模型,写出数据预处理模块,n,m,num,a,b按照自己的模型填写

1.3 加载数据(我是图片的二进制格式)

img = Image.open(io.BytesIO(image_bytes)) #将图片的二进制文件转化

img = data_transform(img) #数据变换

img = img.float().unsqueeze(0) #数据调整维度

 1.4 数据标签,根据自己的模型数据集的标签定义

class_labels=['','','']  #自己往''填label

1.5 开始预测

 with torch.no_grad():
        attention_maps, _, output1, coarse_logits= model(img.cpu())
        refined_input = mask2bbox(attention_maps, img.cpu())
        _, _, output2, _= model(refined_input)
        output = (output1 + output2) / 2
        output = torch.softmax(output, dim=-1)

#根据output输出标签值
 _, pred = torch.max(output, 1)
    pred_label = class_labels[pred.item()]

2. 利用Flask框架部署

直接看代码吧,这是app.py 

#app.py


from flask import Flask, jsonify, request
from yuce import pred
from flask_cors import CORS
import flask
app = Flask(__name__)

CORS(app)  #跨域问题

@app.route('/predict', methods=['POST'])
def predict():
    if request.method == 'POST':
        file = request.files['file']
        print(file)
        img_bytes = file.read()
        class_name = pred(img_bytes)        #预测函数pred()(第一个步骤写的)
        if(class_name ):
            print("结果:"+class_name)
        else:
            print("error")
        return jsonify({ 'class_name': class_name})
    return jsonify({"your call is GET"})   #将化成标签json格式

@app.route("/",methods = ['POST','GET'])
def root():
    return flask.render_template("upload.html")   #前端交互界面

if __name__ == '__main__':
    app.run(host="0.0.0.0",port=80,debug=True)    

3.写前端交互界面upload.html(借鉴b站up主,前面有提到) 

可自行去up主的GitHub下载https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/deploying_service/deploying_pytorchhttps://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/deploying_service/deploying_pytorch

4.在本地成功跑起来后,可以得到这样一个界面 

深度学习模型部署——Flask框架轻量级部署+阿里云服务器

 然后就可以自行上传图片进行预测

5.阿里云服务器部署

5.1首先要准备一个阿里云服务器,新人有一个月的优惠,但是只能租用cpu,所以如果你的模型是gpu请自行购买gpu服务器,当然你也可以改变你的模型,用cpu跑(因为穷,所以我就把模型改成cpu跑,从第一步的代码可以看出,当然要小心输入要一致,也要用.cpu)。然后我选择的是ubuntu系统

5.2准备好xshell7和xftp7两个软件,xshelll7是可以登录你的ssh,然后用来跑代码。xftp7是上传文件,可以从本地把文件传到服务器上去。

xshell7登录:

深度学习模型部署——Flask框架轻量级部署+阿里云服务器

 将自己的ssh填上去,然后用户身份验证进行登录。

 xftp7登录:和上图差不多

深度学习模型部署——Flask框架轻量级部署+阿里云服务器深度学习模型部署——Flask框架轻量级部署+阿里云服务器

 然后就可以在服务器上跑代码,但是要注意安装相对应的库,需要小心代码中的路径问题,当服务器上面成功跑起来,就可以用公网IP访。(再将公网IP部署到你的域名,就可以访问网址,注意备案!!,不然会被封号)

问题描述+解决问题

部署过程中遇到很多困难

1.注意安装jQuery库,可以去up主的github上直接下载,注意安装到static库下面

深度学习模型部署——Flask框架轻量级部署+阿里云服务器

2.注意你买的服务器类型,如果是cpu要修改输入!!!

#(将参数加载到模型中去)
model.load_state_dict(torch.load(checkpoint_path,map_location='cpu')['state_dict'])


#注意img.cpu()
attention_maps, _, output1, coarse_logits= model(img.cpu())
refined_input = mask2bbox(attention_maps, img.cpu())

 3.部署到服务器上去可能会遇到无法响应的情况,可能是端口没有开启,可以去阿里云的网络安全组开启端口,我的端口是80,可以在下图中自己手动修改!!开启后,打开要用公网ip!!!

深度学习模型部署——Flask框架轻量级部署+阿里云服务器 

 如果还是无法访问可以自行查看阿里云的帮助ECS实例的安全组规则未生效_云服务器 ECS-阿里云帮助中心

 小结:

第一次自己部署深度模型,经验不足,仅供参考。文章来源地址https://www.toymoban.com/news/detail-467747.html

到了这里,关于深度学习模型部署——Flask框架轻量级部署+阿里云服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python光速入门 - Flask轻量级框架

            FlASK是一个轻量级的WSGI Web应用程序框架,Flask的核心包括Werkzeug工具箱和Jinja2模板引擎,它没有默认使用的数据库或窗体验证工具,这意味着用户可以根据自己的需求选择不同的数据库和验证工具。Flask的设计理念是保持核心简单,同时提供强大的扩展性,用户

    2024年03月14日
    浏览(37)
  • 初识Flask:Python轻量级Web框架入门教程

    Flask是一个用Python编写的轻量级Web应用框架。由于其“微”性质,Flask在提供核心服务的同时,仍然提供了许多扩展的可能性。在这篇文章中,我们将从最基础开始,学习如何使用Flask构建一个Web应用。 首先,你需要安装Flask库。使用pip进行安装是最简单的方式: 接着,我们来

    2024年02月14日
    浏览(38)
  • 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】ShuffleNet_V1模型算法详解

    ShuffleNet_V1是由旷视科技的Zhang, Xiangyu等人在《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices【CVPR-2018】》【论文地址】一文中提出的模型,是一种采用了逐点组卷积和通道混洗的轻量级CNN网络,在保持精度的同时大大降低了计算成本。 一般的卷积是全通道卷

    2024年01月20日
    浏览(36)
  • 图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解

    EfficientNet_V2是由谷歌公司的Tan, Mingxing等人《EfficientNetV2: Smaller Models and Faster Training【 ICML-2021】》【论文地址】一文中提出的改进模型,在EfficientNet_V1的基础上,引入渐进式学习策略、自适应正则强度调整机制使得训练更快,进一步关注模型的推理速度与训练速度。 随着模型

    2024年01月25日
    浏览(37)
  • python轻量级web框架flask初探,搭建网站原来这么简单

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年03月19日
    浏览(45)
  • python Web开发 flask轻量级Web框架实战项目--学生管理系统

     上次发的一篇文章,有很多朋友私信我要后面的部分,那咱们就今天来一起学习一下吧,因为我的数据库这门课选中的课题是学生管理系统,所以今天就以这个课题为例子,从0到1去实现一个管理系统。数据库设计部分我会专门出一个博客的,敬请期待吧~~~ 介如很多朋友问

    2024年02月16日
    浏览(38)
  • 机器学习-搭建轻量级机器人模型

    在自己的机器上部署一个机器人简直太酷啦,因为模型数据缘故,可能有时候回复会有一点点怪,不过不影响我们探索机器模型的学习,搭建安装完毕,大家就可自行学习源码啦。 这是启动后台的图片。  需要安装环境:python3.7 、Transformers==4.2.0、pytorch==1.7.0、nginx(映射网页

    2024年02月11日
    浏览(31)
  •    深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署

           加我微信hezkz17进数字音频系统研究开发交流答疑群(课题组)   深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署        深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署        深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署   项目一 科大

    2024年02月08日
    浏览(31)
  • DeepFace【部署 03】轻量级人脸识别和面部属性分析框架deepface在Linux环境下服务部署(conda虚拟环境+docker)

    Anaconda的安装步骤这里不再介绍,直接开始使用。 以下操作在虚拟环境 deepface 下执行: 使用 yum install mesa-libGL.x86_64 命令会在Linux系统中安装mesa-libGL包。这个包包含了Mesa 3D图形库的运行时库和DRI驱动。安装mesa-libGL包后,系统将能够支持OpenGL,这是一种用于渲染2D和3D矢量图形

    2024年02月08日
    浏览(32)
  • C++轻量级单元测试框架

    单元测试是构建稳定、高质量的程序、服务或系统的必不可少的一环。通过单元测试,我们可以在开发过程中及时发现和修复代码中的问题,提高代码的质量和可维护性。同时,单元测试也可以帮助我们更好地理解代码的功能和实现细节,从而更好地进行代码重构和优化。

    2023年04月25日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包