我们使用Pytorch深度学习框架训练好模型通常保存为.pth文件,但这种网络文件结构通常只在实验验证或者网络学习时使用。如果你做好了一个网络,想要将其部署在终端,或者想要加速其推理速度,可能需要其他专门的框架来帮助其部署。

本文介绍英特尔公司开发的OpenVINO工具箱,用其来进行Pytorch生成模型的部署和加速。

OpenVINO介绍

OpenVINO是英特尔公司开发的基于卷积神经网络(CNN)的深度学习推理加速工具箱。它能使英特尔公司硬件,最大化提高深度学习计算性能。因此,当将深度学习模型部署到CPU端时,可以利用OpenVINO工具箱进行部署,提高深度学习模型推理速度。

OpenVINO的安装可以见官网,从里面就可以下载安装。下面这是指向链接。需要注意的是,如果你在Windows平台安装的话,需要同时安装Visual Studio2015或2017的c++环境,此外还需要安装Python和Cmake工具。关于Python和Cmake都可以在对应官网上下载安装。安装Python和Cmake的时候,需要注意应当将其添加到环境变量中,否则可能在安装OpenVINO是会出一些错误。

OpenVINO官网
OpenVINO安装指导教程

ONNX

OpenVINO无法直接识别Pytorch生成的pt文件,需要先将pt文件转成ONNX的格式。转换示例代码如下:

import torchdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")# torch.load('filename.pth').to(device)model = torch.load('ckpt_15.pth', map_location=device)
model.eval()
batch_size = 1  #批处理大小
input_shape = (3,320,320)   #输入数据input_data_shape = torch.randn(batch_size, *input_shape, device=device)torch.onnx.export(model, input_data_shape, "filename.onnx", verbose=True)

需要注意的是,最好添加model.eval()这行语句,如果你的网络在训练时有Dropout,使用这个语句就能将一些值固定下来。

有一点需要特别强调的是,训练时一定要保存模型本身文件而不是state_dict文件。加载state_dict文件的时候会报错:

‘collections.OrderedDict’ object has no attribute ‘eval’

不是真正的模型文件是没法进行调用.eval()方法的。

所以训练阶段对模型保存时要写成这样的语句:

torch.save(model, f"../output/ckpt_%d.pth" % epoch)

而不要写成

torch.save(model.state_dict(), f"../output/ckpt_%d.pth" % epoch)

转换成bin和xml

OpenVINO可以直接处理的网络格式时它自有的bin和xml格式。对于已经获得的ONNX文件,可以使用OpenVINO自带的工具完成模型转换。

首先:

Go to the<INSTALL_DIR>/deployment_tools/model_optimizerdirectory.

之后:

python3 mo.py --input_model <INPUT_MODEL>.onnx

即可完成模型转换,生成bin和xml文件。

这里,列出OpenVINO支持的网络层转换类型,如果你设计的网络层里面有OpenVINO不支持的网络层,很有可能会转换失败。

OpenVINO支持的网络层

参考资料

[1] collections.OrderedDict’ object has no attribute ‘eval’

如何将Pytorch生成的模型进行CPU部署相关推荐

  1. Stable Diffusion 图片生成AI模型 Windows Mac部署指南

    Stable Diffusion是2022年发布的深度学习文本到图像生成模型.它主要用于根据文本的描述产生详细图像,它也可以应用于其他任务,如内补绘制.外补绘制,以及在提示词​(英语)指导下产生图生图 ...

  2. 基于Pytorch Mobile在安卓手机端部署深度估计模型

    基于Pytorch Mobile在安卓手机端部署深度估计模型 1.选取torch版本的深度估计模型 2.修改模型实现代码 3.Pytorch生成ptl模型 4.安卓端部署代码 5.实验配置 6.手机端 ...

  3. linux caffe生成的模型,深度学习之pytorch转caffe转ncnn模型转换(三)

    搭建caffe平台: 先在Linux系统下搭建caffe环境,安装依赖包: sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy- ...

  4. pytorch生成对抗示例

    pytorch生成对抗示例 本文对ML(机器学习)模型的安全漏洞的认识,并将深入了解对抗性机器学习的热门话题.图像添加难以察觉的扰动会导致模型性能大不相同.通过图像分类器上的示例探讨该主题.使用第一种 ...

  5. 【pytorch速成】Pytorch图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [pytorch速成]Pytorch图像分类从模型自定义到测试 前面已跟大家介绍了Caffe和TensorFlow,链接如下. [caffe速成]ca ...

  6. 超简单的pyTorch训练-onnx模型-C++ OpenCV DNN推理(附源码地址)

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为1974字,预计阅读5分钟 前言 很早就想学习深度学习了,因为平时都是自学,业余时间也有限,看过几个pyTorch的入门,都是一 ...

  7. Pytorch版本YOLOv3模型转Darknet weights模型然后转caffemodel再转wk模型在nnie上面推理

    Pytorch版本YOLOv3模型转darknet weights模型然后转caffemodel再转wk模型在nnie上面推理 文章目录 Pytorch版本YOLOv3模型转darknet weigh ...

  8. 有趣的图像生成——使用DCGAN与pytorch生成动漫头像

    有趣的图像生成--使用DCGAN与pytorch生成动漫头像 文章目录 有趣的图像生成--使用DCGAN与pytorch生成动漫头像 一.源码下载 二.什么是DCGAN 三.DCGAN的实现 1.** ...

  9. PyTorch转Caffe模型

    PyTorch转Caffe模型 这里使用的工具来自:PytorchToCaffe,主体代码如下: PytorchToCaffe-master |--Caffe |           |--caffe ...

最新文章

  1. python图形缝隙填充_Python,如何缝合图像哪些重叠区域?
  2. springboot项目输入打印日志文件到本地
  3. 前端获取div里面的标签_web前端教程JavaScript学习笔记DOM
  4. ADO的几种数据库连接方式
  5. 在给定约束下可以使用a,b和c形成的字符串数
  6. [luoguP2801] 教主的魔法(二分 + 分块)
  7. 介绍一个对陌生程序快速进行性能瓶颈分析的技巧
  8. Java编程学习并不难,有坚持的动力与良好的心态尤为重要
  9. 【Jmeter篇】jmeter+Ant+Jenkins实现自动化测试集成(一)
  10. R语言︱H2o深度学习的一些R语言实践——H2o包
  11. ip首部可选字段_IP报文格式及各字段意义
  12. 关于C#中Remoting的使用
  13. 如何解决PDF图片字体未嵌入的问题
  14. Cortex-M的M0,M+,M3,M4,M7几种内核的简单区别
  15. AETA地震预测 AI 算法大赛——Helloworld队比赛方案(亚军)
  16. 实现一个多线程安全的单向有序链表,add单个结点、与其他链表合并
  17. 论文阅读:Gibberish, Assistant, or Master? Using Tweets Linking to News for Extractive Single-Document Su
  18. Android 快别用Toast了,来试试Snackbar
  19. 取得股票市值和所属行业
  20. 如何看懂Code128条形码

热门文章

  1. oracle导出脚本文件怎么打开,Windows下的Oracle导出脚本 -电脑资料
  2. mybatis_基础篇
  3. 出售带漏洞的设备违法吗?德国消协拟起诉一家地方零售商
  4. Logging with Log4net (二)
  5. Linux Shell脚本入门--wget 命令用法详解
  6. 细数英特尔收购McAfee可获得安全产品
  7. Overview-ISA-2004-SP3
  8. 分析mysql日志文件_MySQL日志文件与分析
  9. python下selenium模拟浏览器常见操作
  10. Hadoop平台作业参数设置关于mapreduce.job.split.metainfo.maxsize的说明