当前位置: 首页 > news >正文

佛山微网站建设哪家专业品牌词优化

佛山微网站建设哪家专业,品牌词优化,织梦做的网站前面有不安全,做陶瓷的公司网站八、模型移植 1. 认识ONNX ​ https://onnx.ai/ ​ Open Neural Network Exchange(ONNX,开放神经网络交换)格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移。 ​ ONNX的规范及代码主要由微软…

八、模型移植

1. 认识ONNX

​ https://onnx.ai/

​ Open Neural Network Exchange(ONNX,开放神经网络交换)格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移。

​ ONNX的规范及代码主要由微软,亚马逊 ,Face book 和 IBM等公司共同开发,以开放源代码的方式托管在Github上。目前官方支持加载ONNX模型并进行推理的深度学习框架有: Caffe2, PyTorch, PaddlePaddle, TensorFlow等。

2. 导出ONNX

2.1 安装依赖包

pip install onnx
pip install onnxruntime

2.2 导出ONNX模型

import os
import torch
import torch.nn as nn
from torchvision.models import resnet18if __name__ == "__main__":dir = os.path.dirname(__file__)weightpath = os.path.join(os.path.dirname(__file__), "pth", "resnet18_default_weight.pth")onnxpath = os.path.join(os.path.dirname(__file__), "pth", "resnet18_default_weight.onnx")device = torch.device("cuda" if torch.cuda.is_available() else "cpu")model = resnet18(pretrained=False)model.conv1 = nn.Conv2d(#in_channels=3,out_channels=64,kernel_size=3,stride=1,padding=0,bias=False,)# 删除池化层model.maxpool = nn.MaxPool2d(kernel_size=1, stride=1, padding=0)# 修改全连接层in_feature = model.fc.in_featuresmodel.fc = nn.Linear(in_feature, 10)model.load_state_dict(torch.load(weightpath, map_location=device))model.to(device)# 创建一个实例输入x = torch.randn(1, 3, 224, 224, device=device)# 导出onnxtorch.onnx.export(model,x,onnxpath,#verbose=True, # 输出转换过程input_names=["input"],output_names=["output"],)print("onnx导出成功")

2.3 ONNX结构可视化

可以直接在线查看:https://netron.app/

也可以下载桌面版:https://github.com/lutzroeder/netron

3. ONNX推理

ONNX在做推理时不再需要导入网络,且适用于Python、JAVA、PyQT等各种语言,不再依赖于PyTorch框架;

3.1 简单推理

import onnxruntime as ort
import torchvision.transforms as transforms
import cv2 as cv
import os
import numpy as npimg_size = 224
transformtest = transforms.Compose([transforms.ToPILImage(),  # 将numpy数组转换为PIL图像transforms.Resize((img_size, img_size)),transforms.ToTensor(),transforms.Normalize(# 均值和标准差mean=[0.4914, 0.4822, 0.4465],std=[0.2471, 0.2435, 0.2616],),]
)def softmax(x):e_x = np.exp(x - np.max(x))return e_x / e_x.sum(axis=1, keepdims=True)def cv_imread(file_path):cv_img = cv.imdecode(np.fromfile(file_path, dtype=np.uint8), cv.IMREAD_COLOR)return cv_imglablename = "飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车".split("、")if __name__ == "__main__":dir = os.path.dirname(__file__)weightpath = os.path.join(os.path.dirname(__file__), "pth", "resnet18_default_weight.pth")onnxpath = os.path.join(os.path.dirname(__file__), "pth", "resnet18_default_weight.onnx")# 读取图片img_path = os.path.join(dir, "test", "5.jpg")img = cv_imread(img_path)img = cv.cvtColor(img, cv.COLOR_BGR2RGB)img_tensor = transformtest(img)# 将图片转换为ONNX运行时所需的格式img_numpy = img_tensor.numpy()img_numpy = np.expand_dims(img_numpy, axis=0)  # 增加batch_size维度# 加载onnx模型sess = ort.InferenceSession(onnxpath)# 运行onnx模型outputs = sess.run(None, {"input": img_numpy})output = outputs[0]# 应用softmaxprobabilities = softmax(output)print(probabilities)# 获得预测结果pred_index = np.argmax(probabilities, axis=1)pred_value = probabilities[0][pred_index[0]]print(pred_index)print("预测目标:",lablename[pred_index[0]],"预测概率:",str(pred_value * 100)[:5] + "%",)

输出结果:

[[6.7321511e-05 9.7113671e-11 7.6417709e-05 2.8661249e-02 7.0206769e-043.9052707e-04 9.7010124e-01 6.8206714e-07 4.1351362e-07 5.7089373e-09]]
[6]
预测目标: 青蛙 预测概率: 97.01%

3.2 使用GPU推理

需要安装依赖包:

pip install onnxruntime-gpu

代码:

# 导入FileSystemStorage
import time
import random
import os# 人工智能推理用到的模块
import onnxruntime as ort
import torchvision.transforms as transforms
import numpy as np
import PIL.Image as Imageimg_size = 32
transformtest = transforms.Compose([transforms.Resize((img_size, img_size)),transforms.ToTensor(),transforms.Normalize(# 均值和标准差mean=[0.4914, 0.4822, 0.4465],std=[0.2471, 0.2435, 0.2616],),]
)def softmax(x):e_x = np.exp(x - np.max(x))return e_x / e_x.sum(axis=1, keepdims=True)def imgclass():# AI推理# 读取图片imgpath = os.path.join(os.path.dirname(__file__), "..", "static/ai", filename)# 加载并预处理图像image = Image.open(imgpath)input_tensor = transformtest(image)input_tensor = input_tensor.unsqueeze(0)  # 添加批量维度# 将图片转换为ONNX运行时所需的格式img_numpy = input_tensor.numpy()# 加载模型onnxPath = os.path.join(#os.path.dirname(__file__),"..","onnx","resnet18_default_weight_1.onnx",)# 设置 ONNX Runtime 使用 GPUproviders = ["CUDAExecutionProvider"]sess = ort.InferenceSession(onnxPath, providers=providers)# 使用模型对图片进行推理运算output = sess.run(None, {"input": img_numpy})output = softmax(output[0])print(output)ind = np.argmax(output, axis=1)print(ind)lablename = "飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船、卡车".split("、")res = {"code": 200, "msg": "处理成功", "url": img, "class": lablename[ind[0]]}
http://www.ds6.com.cn/news/49890.html

相关文章:

  • 如何自己做代理网站的想法网络营销的企业有哪些
  • 小程序开发代理杭州seo网站推广
  • 广州美容网站建设长沙建站seo公司
  • 台州手机网站建设seo研究中心vip教程
  • 网站竞价推广都有哪些教育培训机构排名
  • 做导购网站赚钱吗腾讯网qq网站
  • 网站css连线是怎么做的西安百度公司官网
  • 网营中国网站建设淘宝直通车推广怎么做
  • 有和wind一样做用网站seo 工具
  • 食品建设网站前的市场分析海南seo排名优化公司
  • wordpress wiki 整合广州四楚seo顾问
  • 绍兴做团购的网站西地那非能提高硬度吗
  • 云海建设工程有限公司网站英语培训机构前十名
  • 建设的比较好的网站百度学术官网登录入口
  • 太原做手机网站建设对网络营销的理解
  • 做一个在线交易网站需要多少钱seo专员是什么职位
  • 一个简单的网站怎么做的qq引流推广平台
  • 网站标题用空格 逗号影响seo怎么推广网站链接
  • 深圳一建公司seo算法
  • 杭州做网站比较好的公司网络营销推广方案论文
  • 如何规划一个外贸网站2022十大网络营销案例
  • 怎么做网站推广怀化个人网站建站教程
  • 即墨网站建设哪家好百度一下你就知道主页
  • 网站备案还是域名备案南宁百度seo排名优化
  • cms网站网络地址图片网络营销的现状
  • 微信上的网站怎么做的北京最新疫情
  • web前端只做网站么珠海百度关键字优化
  • 最火爆的网络游戏排行榜广州百度seo排名
  • 湖南长沙关键词推广电话seo查询系统
  • 小程序制作多少钱山西seo