【模型部署】利用opencv Python API 加载与运行Pytorch模型

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

OpenCV可以调用PyTorch模型。通过将PyTorch模型转换为ONNX格式,然后使用OpenCV中的dnn模块加载和运行模型。

以下是一个使用OpenCV加载和运行PyTorch模型的示例代码:

import cv2
import numpy as np
import torch
import torchvision.transforms as transforms

# 加载模型
model = torch.load('model.pth')
model.eval()

# 转换模型为ONNX格式
dummy_input = torch.randn(1, 3, 224, 224)
input_names = ['input']
output_names = ['output']
torch.onnx.export(model, dummy_input, 'model.onnx', verbose=True, input_names=input_names, output_names=output_names)

# 加载ONNX模型
net = cv2.dnn.readNetFromONNX('model.onnx')

# 加载图像
image = cv2.imread('image.jpg')

# 图像预处理
transform = transforms.Compose([
    transforms.ToPILImage(),
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
image = transform(image).unsqueeze(0)

# 进行推理
blob = cv2.dnn.blobFromTensor(image.numpy(), size=(224, 224))
net.setInput(blob)
output = net.forward()

# 处理输出结果
output = torch.from_numpy(output)
_, preds = torch.max(output, 1)

# 显示结果
print(preds.item())

说明:

  1. 首先,使用torch.load函数加载PyTorch模型。
  2. 将模型转换为ONNX格式,使用torch.onnx.export函数将模型转换为ONNX格式,并指定输入和输出的名称。
  3. 使用cv2.dnn.readNetFromONNX函数加载ONNX模型。
  4. 加载图像,使用cv2.imread函数加载图像。
  5. 对图像进行预处理,使用torchvision.transforms模块中的transforms.Compose函数将图像转换为模型需要的格式。
  6. 进行推理,使用cv2.dnn.blobFromTensor函数将图像转换为模型需要的格式,并将其输入到模型中进行推理。
  7. 处理输出结果,使用torch.from_numpy函数将模型的输出转换为PyTorch Tensor,并使用torch.max函数获取最终的预测结果。
  8. 显示结果,使用print函数输出预测结果。

注意:在使用OpenCV加载和运行PyTorch模型时,需要将模型转换为ONNX格式。此外,由于PyTorch和OpenCV使用的数据类型和颜色通道顺序不同,因此需要进行数据格式和颜色通道的转换。文章来源地址https://www.toymoban.com/news/detail-643982.html

到了这里,关于【模型部署】利用opencv Python API 加载与运行Pytorch模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • pytorch加载模型和模型推理常见操作

    .pth文件可以保存模型的拓扑结构和参数,也可以只保存模型的参数,取决于model.save()中的参数。 使用方式1得到的.pth重构模型代码如下: 使用方式2得到的.pth重构模型代码如下: 以只保存模型参数的pth为例 loaded_dict_enc 的类型是:class ‘odict_items’(有序字典),本质还是

    2024年02月13日
    浏览(30)
  • PyTorch模型的保存与加载

    载入muti-GPU模型: 载入muti-GPU权重: 载入CPU权重: 模型保存的格式: pytorch中最常见的模型保存使用 .pt 或者是 .pth 作为模型文件扩展名,其他方式还有.t7/.pkl格式,t7文件是沿用torch7中读取模型权重的方式,而在keras中则是使用.h5文件 .pth 文件基本信息 四个键值: model(Ord

    2023年04月21日
    浏览(24)
  • pytorch保存、加载和解析模型权重

    1、模型保存和加载          主要有两种情况:一是仅保存参数,二是保存参数及模型结构。 保存参数:          torch.save(net.state_dict()) 加载参数(加载参数前需要先实例化模型):          param = torch.load(\\\'param.pth\\\')          net.load_state_dict(param) 保存模型结构

    2024年02月16日
    浏览(28)
  • 人工智能(pytorch)搭建模型17-pytorch搭建ReitnNet模型,加载数据进行模型训练与预测

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型17-pytorch搭建ReitnNet模型,加载数据进行模型训练与预测,RetinaNet 是一种用于目标检测任务的深度学习模型,旨在解决目标检测中存在的困难样本和不平衡类别问题。它是基于单阶段检测器的一种改进方法,通

    2024年02月15日
    浏览(49)
  • 利用resnet50模型实现车牌识别(Python代码,.ipynb和.py两种文件保存都有,可以使用jupyter或pycharm运行)

    1.代码的主要流程如下: 导入所需的库和模块。 对数据集进行可视化,随机选择一些图像进行展示。 加载图像数据集,并将图像和标签存储在数组中。 对标签进行独热编码。 划分训练集和测试集。 使用图像数据增强技术增加训练数据的多样性。 定义一些评估指标的函数。

    2024年02月05日
    浏览(49)
  • 现有模型的保存与加载(PyTorch版)

    我们以VGG16网络为例,来说明现有模型的保存与加载操作。 保存与加载方式均有两种,接下来我们分别来学习这两种方式。 注意:保存与加载不在同一个py文件中,我们设定保存操作在save.py文件中,而加载操作在load.py文件中。 保存模型的两种方式如下代码所示,第一种为既

    2024年02月09日
    浏览(27)
  • pytorch11:模型加载与保存、finetune迁移训练

    往期回顾 pytorch01:概念、张量操作、线性回归与逻辑回归 pytorch02:数据读取DataLoader与Dataset、数据预处理transform pytorch03:transforms常见数据增强操作 pytorch04:网络模型创建 pytorch05:卷积、池化、激活 pytorch06:权重初始化 pytorch07:损失函数与优化器 pytorch08:学习率调整策略

    2024年02月01日
    浏览(30)
  • 使用Pytorch加载预训练模型及修改网络结构

    可以看到, AlexNet 有三个层,分别是 features、avgpool、classifier 。用 model.features 查看 features层 (也就是卷积层)的网络结构。

    2024年02月13日
    浏览(26)
  • 人工智能(pytorch)搭建模型12-pytorch搭建BiGRU模型,利用正态分布数据训练该模型

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型12-pytorch搭建BiGRU模型,利用正态分布数据训练该模型。本文将介绍一种基于PyTorch的BiGRU模型应用项目。我们将首先解释BiGRU模型的原理,然后使用PyTorch搭建模型,并提供模型代码和数据样例。接下来,我们将

    2024年02月09日
    浏览(37)
  • 利用speckle引擎里的speckleviewer加载渲染3d模型

    Speckle是一个开源的数据平台,专为建筑、工程和建造行业设计。它旨在通过提供一个共享和协作的环境来解决数据互操作性问题。Speckle允许用户在不同的软件应用程序之间实时共享、管理和流式传输3D模型和设计数据。 这个平台支持多种流行的设计软件,如Autodesk Revit、Rh

    2024年04月24日
    浏览(24)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包