paddle+qt部署方案

Paddle+TensorRT+qt部署方案

基于windows的高性能部署方案,使用paddle框架训练得到推理模型,结合paddle inference库修改封装编译dll的代码并添加 TesorRT 加速方案,最后在qt中调用编译好的dll。

本篇编译paddlex库的dll,想要编译其余单独库(如PaddleDetection)的dll可以参考其它编译教程或者重写deploy的代码自己封装编译dll(博主已经完成啦,也会记录在博客上)。

虽然是paddlex库,但是我主要做的是det在qt中的模型部署,其它如seg或者clas在qt demo需要自行研究。

1 准备

研究了一下paddle的工业级部署方案示例:

https://www.bilibili.com/video/BV1vS4y1R7wT?p=2&vd_source=b52b09cc38385a4b2bf919c7baf053c6

详细的编译步骤参考上面的链接,这里我再阐述一下准备。

环境准备

  • 下载好PaddleX代码和PaddleInference预测库(带trt的预测库)
  • 下载TensorRT(需要和cuda进行匹配)
  • 为了便于项目管理,将所有的文件汇总到一个文件夹中

在这里插入图片描述

编译环境

  • CUDA11.2 Cudnn 8.2 TensorRT 8.0
  • opencv版本4.5.0
  • PaddleInference 2.3 预编译库
  • Cmake 3.17
  • VS2017 社区版

设置环境变量

将下载好的opencv、安装的cuda(配置好TesnsorRT)添加到环境变量,如下:

在这里插入图片描述

编译的部分按照教程来走基本没什么问题,需要注意camke中的库所在的路径的设置,编译出错没关系,准备好编译项目所需要的包再次点击configure直到编译完成再点击Generate即可。(没有configure好建议不要点击Generate,它负责生成sln工程文件)

2 修改封装代码

打开项目如下:本项目关键生成的是 model_infer.dll 所以重点在于model_infer项目,我这里把TensorRt的加速方案也集成在了这里,方便使用。

在这里插入图片描述

打开项目中的 model_infer.cpp ,接下来开始修改代码:

首先我考虑使用返回值的方式将model送出去,这样无论在是qt还是其他工程中执行模型加载和推理都更具有易用性也更好销毁和管理,所以舍弃代码中的全局 PaddleDeploy::Model *model。并且在编译好dll后,官方给出的demo中GPU下可以正常跑,但是官方并未给出tensorrt的方案,使用trt只需要将开启trt以及设置动态shape的参数给定,其它与原先的代码保持一致即可。

在修改.cpp文件后再修改一下.h文件中的函数声明。

如下图,添加InitModel_TRT,它返回一个能够推理的对象,在函数中开启GPU和TensorRT即可。

在这里插入图片描述

注意在设置动态shape的时候,把这部分代码放在下面的if语句中才会被执行,否则可能会提示未设置dynamic shape的错误信息。

在这里插入图片描述

3 编译dll

若是跟着视频编译的话,在修改好代码之后直接生成项目即可,如果想在自己的工程中编译dll,除了在函数前加上dllexport的关键字以外在修改一下项目属性即可

在这里插入图片描述

编译好的dll如下:model_infer.lib和model_infer.dll在release下。

在这里插入图片描述

4 在qt中调用dll

首先把头文件配置好,为防丢失一些头文件,目录设置在cpp,然后添加lib文件(我将lib文件放在了pro的同目录),之后编译好的把dll添加到build目录中去即可

在这里插入图片描述

然后用qt creator设计了一个小demo,选择推理引擎,找到模型路径加载图片即可开始推理。

在这里插入图片描述

我使用paddlex的昆虫目标检测模型来做测试,结果如下,连续推理的时间在60ms左右,如果不进行模型预热或者单张处理耗时会比较长,约在200ms以上。

在这里插入图片描述

刚开始接触paddle inference,特此记录,欢迎交流。

欢迎加入交流群一起讨论学习!
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值