pyTorch框架部署实践

相关代码链接见文末

1.所需基本环境配置

      首先,我们需要一个预先训练好的模型以及相应的配置。接下来,为了实际应用这个模型,我们必须搭建一个功能强大的服务器。这台服务器的核心任务是加载我们的模型,并能够接收用户上传的图片。一旦图片被接收,服务器将使用加载的模型进行预测,并迅速将预测结果返回给用户。这样,整个预测流程就能在服务器上高效、准确地完成。

2.模型加载与数据预处理

        在run_pytorch_server.py中定义了模型加载和数据集预处理模块,流程如下:

(1)首先,初始化Flask app

app = flask.Flask(__name__)
model = None
use_gpu = False

(2)加载标签信息,标签信息为字典信息,将预测结果对应到实际的类别

# 加载标签信息
with open('imagenet_class.txt', 'r') as f:idx2label = eval(f.read())

 (3)加载模型,这里加载的resnet50模型

# 加载模型进来
def load_model():"""Load the pre-trained model, you can use your model just as easily."""global modelmodel = resnet50(pretrained=True)model.eval()if use_gpu:model.cuda()

(4)数据预处理模块

数据预处理包括对图像进行resize,转化为tensor,对图像进行标准化。

# 数据预处理
def prepare_image(image, target_size):"""Do image preprocessing before prediction on any data.:param image:       original image:param target_size: target image size:return:preprocessed image"""# pytorch输入的是RGB格式if image.mode != 'RGB':image = image.convert("RGB")# 将图像resize特定大小并转化为tensor格式# Resize the input image nad preprocess it.image = T.Resize(target_size)(image)image = T.ToTensor()(image)# 标准化# Convert to Torch.Tensor and normalize. mean与stdimage = T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])(image)# Add batch_size axis.image = image[None]if use_gpu:image = image.cuda()return Variable(image, volatile=True) #不需要求导

 (5)开启服务

        然后是开启服务,实现数据输入、数据预处理、模型预测、返回整个标签的整个流程。

# 开启服务
@app.route("/predict", methods=["POST"])
def predict():# Initialize the data dictionary that will be returned from the view.data = {"success": False}# Ensure an image was properly uploaded to our endpoint.if flask.request.method == 'POST':if flask.request.files.get("image"):# Read the image in PIL formatimage = flask.request.files["image"].read()image = Image.open(io.BytesIO(image)) # 读取数据,二进制数据# Preprocess the image and prepare it for classification. 数据预处理image = prepare_image(image, target_size=(224, 224))# Classify the input image and then initialize the list of predictions to return to the client.preds = F.softmax(model(image), dim=1) # 预测概率results = torch.topk(preds.cpu().data, k=3, dim=1) # 返回概率最高的前k个results = (results[0].cpu().numpy(), results[1].cpu().numpy())data['predictions'] = list()# 返回最终的标签# Loop over the results and add them to the list of returned predictionsfor 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)# Indicate that the request was a success.data["success"] = True# Return the data dictionary as a JSON response.return flask.jsonify(data)

 3.预测效果展示

        首先,使用命令行,启动服务

simple_request.py定义了post请求及返回结果,执行simple_request.py时,需要指定文件路径。

返回结果

 访问记录

链接:https://pan.baidu.com/s/12nhoFcZWLD1_ticGprawUg?pwd=iujk 
提取码:iujk 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/2715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

保姆级,Linux中安装搭建Python环境

Linux中安装搭建Python环境 前手准备:在Linux中运行一下代码: yum install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel -y进入Python下载官网https://www.…

[综述笔记]Benchmarking Graph Neural Networks for FMRI analysis

论文网址:[2211.08927] Benchmarking Graph Neural Networks for FMRI analysis (arxiv.org) ⭐不是真正意义上的综述,应该是分析性质的文章 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错…

【电控实物-infantry】

云台电机参数 电机内部参数 相电阻:Rs1.8欧 相电感:Ls5.7810^-3H 转矩常数:Kt 0.741 NM/A 转动惯量:J KG-m^2 电机接收数据:-16384到16384(-3A到3A) 电机反馈:速度RPM rad/s (2πrpm)/60 C板陀螺仪&…

【深度学习实战(20)】使用torchsummary打印模型结构

一、安装torchsummary库 pip install torchsummary 二、代码 import torchvision.models as models from torchsummary import summarymodel models.AlexNet() model.to(cuda) summary(model,(3,224, 224))

Base64编码原理和代码实现

1、Base64编码实现原理 第一步: 原理是把每 3 个字节(每个字节为 8 位, 3 个字节为 24 位)重新划为 4 组(每组为 6位) 第二步: 重新划分的每组 6 位的字节中,高位补两个 0 为 8 位后作为一个新的 8 位字节…

脚手架搭建项目package.json配置中依赖的版本问题

脚手架搭建项目package.json配置中依赖的版本问题 问题描述:项目刚搭建好,运行没有问题,为什么过一段时间,删除node_modules,或者重新安装包依赖,然后项目某些地方出现莫名的错误(依赖库的地方…

Redis篇:缓存击穿及解决方案

1.何为缓存击穿 缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了(有可能是正好过期了),无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种: 互斥锁 逻…

逐行分析Transformer的程序代码,最后免费附上该代码!!

1. 代码详细解释 1. 第一段代码 这段代码首先定义了一些参数,包括编码器个数、输入维度、句子长度、词嵌入维度等。然后它保存了这些超参数到指定路径。接着,它加载训练和验证数据集,并创建了对应的数据加载器。之后,它定义了一个…

PHP 爬虫如何配置代理 IP(CURL 函数)

在 PHP中 配置代理IP&#xff0c;可以通过设置 CURL 库的选项来实现&#xff0c;代码如下&#xff1a; 当然你要有代理ip来源&#xff0c;比如我用的这个 代理商 &#xff0c;如果想服务稳定不建议找开源代理池&#xff0c;避免被劫持。 <?php // 初始化cURL会话 $ch cu…

xgp会员一年多少钱?xgp一个月多少钱?微软商店xgp会员价格指南

xgp是xbox游戏平台。xgp是类似于steam、epic等&#xff0c;拥有丰富游戏资源的平台。该平 台的全称为“XBox Game Pass”&#xff0c;俗称为“西瓜皮”。xgp是会员订阅模式&#xff0c;开启会员后&#xff0c;所有游戏资源都为你开放。pc版的&#xff0c;第一个月10港币&#x…

基于springboot+vue+Mysql的漫画网站

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

L1-099 帮助色盲 - java

L1-099 帮助色盲 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB 题目描述&#xff1a; 在古老的红绿灯面前&#xff0c;红绿色盲患者无法分辨当前亮起的灯是红色还是绿色&#xff0c;有些聪明人通过路口的策略是这样的&#xff1a;当红灯或绿灯亮起时&am…

WebServer项目介绍文章【四叶专属】

Linux项目实战C轻量级Web服务器源码分析TinyWebServer 书接上文&#xff0c;学习开源项目的笔记没想到居然有不少阅读量&#xff0c;后面结合另一个前端开源项目简单做了点修改&#xff0c;没想到居然有需要的同学&#xff0c;那么我就专门为四叶开一篇文章吧&#xff0c;【源码…

【c++】探究C++中的list:精彩的接口与仿真实现解密

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章来到list有关部分&#xff0c;这一部分函数与前面的类似&#xff0c;我们简单讲解&#xff0c;重难点在模拟实现时的迭代器有关实现 目录 1.List介绍2.接…

【网络安全】跨站脚本攻击(XSS)

专栏文章索引&#xff1a;网络安全 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、XSS简介 二、XSS漏洞危害 三、XSS漏洞类型 1.反射型XSS 2.存储型XSS 3.DOM型XSS 四、XSS漏洞防御 一、XSS简介 XSS&#xff08;Cross-Site Scripting&#xff09; XSS 被…

Git merge的版本冲突实验

实验目的 发现 两个分支的 相同文件 怎样被修改 才会发生冲突&#xff1f; 实验过程 1.初始状态 现在目前有1.py、2.py两个文件&#xff0c;已经被git管理。现在我想制造冲突&#xff0c;看怎样的修改会发生冲突&#xff0c;先看怎么不会发生冲突。 目前仓库里的版本是这样…

C语言实现简单CRC校验

目录 一、实现题目 二、send模块 三、receive模块 四、运行截图 一、实现题目 二、send模块 #include <stdio.h> #include <string.h>// 执行模2除法&#xff0c;并计算出余数&#xff08;CRC校验码&#xff09; //dividend被除, divisor除数 void divide…

免费SSL证书和付费SSL证书区别在哪

免费SSL证书与付费SSL证书在多个方面存在差异&#xff0c;这些差异主要体现在认证级别、保障金额以及服务范围上。在以下几个方面存在显著区别&#xff1a; 1、验证类型和信任级别&#xff1a; 免费SSL证书&#xff1a;通常只提供域名验证&#xff08;DV&#xff09;级别的证…

实验:使用apache + yum实现自制yum仓库

实验准备 Web服务器端&#xff1a;cenos-1&#xff08;IP&#xff1a;10.9.25.33&#xff09; 客户端&#xff1a;centos-2 保证两台机器网络畅通&#xff0c;原yum仓库可用&#xff0c;关闭防火墙和selinux Web服务器端 ①安装httpd并运行&#xff0c;设置开机自启动 安装…

多模态模型

转换器成功作为构建语言模型的一种方法&#xff0c;促使 AI 研究人员考虑同样的方法是否对图像数据也有效。 研究结果是开发多模态模型&#xff0c;其中模型使用大量带有描述文字的图像进行训练&#xff0c;没有固定的标签。 图像编码器基于像素值从图像中提取特征&#xff0c;…