Windows使用Paddle训练好的模型进行OpenVino推理引擎下的部署

news/2024/11/29 1:50:47/

目录

  • 一. Openvino下载
  • 二. 准备模型
    • 2.1 导出Paddle Inference模型
    • 2.2 转换为ONNX模型
    • 2.3 转换为ONNX模型
      • 2.3.1 获取部署代码
      • 2.3.2 环境准备
      • 2.3.3 编译

一. Openvino下载

根据Paddle官方的描述,当前检测模型转换为openvino格式是有问题的,暂时只支持分割和分类模型,且openvino版本最好为2021.3(已经过测试,兼容性较好)。
Openvino 2021.3 下载地址
安装过程可以参照OpenVino官方安装步骤来一步步 安装 :
安装完毕后目录如下:
在这里插入图片描述
运行install.exe安装推理组件后的目录:
在这里插入图片描述

二. 准备模型

2.1 导出Paddle Inference模型

由于目前Openvino只支持比较老的模型,这里以PaddleX训练的mobilenetv3_large模型为例,导出为推理格式模型paddle inference:
在这里插入图片描述
安装PaddleX后,执行以下命令进行模型导出:

paddlex --export_inference --model_dir=./output/deeplabv3p_r50vd/best_model/ --save_dir=./inference_model

2.2 转换为ONNX模型

将paddle inference模型转为onnx模型:

# model_dir需要ResNet50解压后的路径
paddle2onnx --model_dir  E:/Fileresipority/cloth_check/mobilenetv3_large/inference_model/inference_model  --model_filename model.pdmodel     --params_filename model.pdiparams      --save_file model.onnx   --enable_dev_version True

在这里插入图片描述
转换后的目录:
在这里插入图片描述

2.3 转换为ONNX模型

2.3.1 获取部署代码

git clone https://github.com/PaddlePaddle/PaddleX.git

在这里插入图片描述

2.3.2 环境准备

1.在OpenCV官网下载适用于Windows平台的3.4.6版本下载链接
在这里插入图片描述
2.运行下载的可执行文件,将OpenCV解压至指定目录,例如D:\projects\opencv。
3.配置环境变量,如下流程所示:
我的电脑->属性->高级系统设置->环境变量
在这里插入图片描述

在系统变量中找到Path(如没有,自行创建),并双击编辑
新建,将opencv路径填入并保存,如E:\Fileresipority\cloth_check\OpenCV\opencv\build\x64\vc15\bin
在进行cmake构建时,会有相关提示,请注意vs2019的输出。
4.点击下载gflags依赖包,解压至deps目录

2.3.3 编译

1.打开Visual Studio 2019 Community,点击继续但无需代码
在这里插入图片描述
2. 点击: 文件->打开->CMake
选择C++预测代码所在路径(例如E:\Fileresipority\cloth_check\PaddleX-develop\deploy\cpp),并打开CMakeList.txt:
在这里插入图片描述

  1. 打开项目时,可能会自动构建。由于没有进行下面的依赖路径设置会报错,这个报错可以先忽略:
    在这里插入图片描述

在这里插入图片描述

  1. 点击浏览,分别设置编译选项指定gflag、OpenCV、OpenVINO的路径(也可以点击右上角的“编辑 JSON”,直接修改json文件,然后保存点 项目->生成缓存)。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
5. 保存并生成CMake缓存
在这里插入图片描述
设置完成后, 点击上图中保存并生成CMake缓存以加载变量。然后我们可以看到vs的输出会打印CMake生成的过程,出现CMake 生成完毕且无报错代表生成完毕。
发现报错:
在这里插入图片描述


http://www.ppmy.cn/news/18598.html

相关文章

宝贝代码部署笔记

记录前后端分离项目部署到云服务器;前端使用vue,element-ui,axios,router进行开发;后端使用springboot,mybatis,MySQL进行开发;完整记录前端项目npm打包静态文件,后端项目…

珍惜能在公司上班的每一天——2022年个人工作总结

本文由Markdown语法编辑器编辑完成。 1. 前言: 2022年不知不觉就过去了。在过去的一年里,虽然身在北京,哪里也没有去,但还是避免不了受到疫情的影响,被封控在家。 就在刚过去的一段时间,从11月18日周五下班&#xff…

详解Map和Set

目录 一、二叉搜索树 1、概述 2、模拟实现搜索二叉树 a、向搜索二叉树中插入数据 b、查找二叉搜索树的指定值的结点 c、删除二叉树的指定值的结点 3、对二叉搜索树进行性能分析 二、Map的使用 1、Map简介 2、Map常用方法 ​编辑三、Set的使用 1、Set简介 2、S…

初识C语言:IDE的选择与使用【C语言】

本文是本专栏【C语言】的第一篇文章,也是博主最近半年以来的更新第一篇文章,如果觉得有帮助,可以点赞支持一下!另外本专栏最后会做一篇类似于【python爬虫】专栏最后的那篇整合的文章,把C语言的所有基础知识用一篇文章…

shardingshere5.2.1 + seata1.5.2实现AT模式的分布式事务

文章目录 一、客户端引入shardingshere1.1 引入依赖1.2 修改配置文件,按照业务垂直分库二、集成seata的AT事务2.1 修改conf文件下application.yml配置文件,访问nacos的配置文件,并将服务端注册到nacos2.2 在nacos上创建配置文件 seataServer.properties2.3 创建数据库连接2.…

今宵除夕夜,天涯共此时

岁岁除夕,今又除夕,岁岁年年,此情此景,今又重来。 岁岁年年景相似,年年岁岁人不同。 多少年前的除夕,也一如今天这样的除夕。 多少年后的除夕,也一如多少年前的除夕。 岁月轻飘飘地从我身上跨过…

DPU网络开发SDK—DPDK(四)

rte_eal_init() 接上次内容继续对rte_eal_init()所做的工作进行分析。 12. 初始化配置 rte_config_init()中,会根据process_type进行不同的初始化任务。process_type是由eal的启动参数指定的,目前支持两种模式:primary和secondary。proces…

【Mongoose笔记】TCP 客户端与服务器

【Mongoose笔记】TCP 客户端与服务器 简介 Mongoose 笔记系列用于记录学习 Mongoose 的一些内容。 Mongoose 是一个 C/C 的网络库。它为 TCP、UDP、HTTP、WebSocket、MQTT 实现了事件驱动的、非阻塞的 API。 项目地址: https://github.com/cesanta/mongoose学习…