Tensorrt下的Yolox部署

2023-11-10

一.Ubuntu系统的安装与显卡驱动安装

详见我这篇博客,如果要用Nvidia的显卡,一定要裸机装显卡驱动哦。

https://blog.csdn.net/qq_43515934/article/details/123470400?spm=1001.2014.3001.5502

二.Tensorrt的安装

详见我这篇博客,注意要把pycuda顺便装上哦

https://blog.csdn.net/qq_43515934/article/details/123897435?spm=1001.2014.3001.5502

如果你是30系显卡,请参考我这篇博客,上面博客是个通用的,不如这个快。

https://blog.csdn.net/qq_43515934/article/details/123951927?spm=1001.2014.3001.5501

三.YOLOX的安装

详见我这篇博客

https://blog.csdn.net/qq_43515934/article/details/123610689?spm=1001.2014.3001.5502

四. torch2trt的安装

位置:/home/zhangqi/Documents/Library

git clone https://github.com/NVIDIA-AI-IOT/torch2trt
cd torch2trt
python setup.py install

五.engine文件的准备

位置:/home/zhangqi/Documents/Library/YOLOX

根据设备修改源文件

trt.py

    parser.add_argument(
        "-w", '--workspace', type=int, default=32, help='max workspace size in detect'

32是运行时候要用4GB显存,根据你具体的这个显存数量改就行

引擎生成

python3 tools/trt.py -f exps/default/yolox_x.py -c pre_model/yolox_x.pth

更大的显存会由模型生成更优化的引擎,所以trt内部的32应改成其他参数来使得模型优化
yolox只能workspace32,max3但是yoloxnano可以workspace64,max64。所以不同的型号在你的电脑上是不同的参数

六.运行demo

位置/home/zhangqi/Documents/Library/YOLOX/demo/TensorRT/cpp

先改一下CMakeList哦

# cuda
include_directories(/data/cuda/cuda-10.2/cuda/include)
link_directories(/data/cuda/cuda-10.2/cuda/lib64)
# cudnn
include_directories(/data/cuda/cuda-10.2/cudnn/v8.0.4/include)
link_directories(/data/cuda/cuda-10.2/cudnn/v8.0.4/lib64)
# tensorrt
include_directories(/data/cuda/cuda-10.2/TensorRT/v7.2.1.6/include)
link_directories(/data/cuda/cuda-10.2/TensorRT/v7.2.1.6/lib)

将这些路径全改为你自己电脑中安装cuda和tensorrt的路径。

# include and link dirs of cuda and tensorrt, you need adapt them if yours are different
# cuda
include_directories(/usr/local/cuda/cuda-10.2/cuda/include)
link_directories(/usr/local/cuda/cuda-10.2/cuda/lib64)
# cudnn
include_directories(/usr/cuda/cuda-10.2/cudnn/v8.0.4/include)
link_directories(/usr/cuda/cuda-10.2/cudnn/v8.0.4/lib64)
# tensorrt
include_directories(/usr/cuda/cuda-10.2/TensorRT/v7.2.1.6/include)
link_directories(/usr/cuda/cuda-10.2/TensorRT/v7.2.1.6/lib)

你如果说,你找不到路径,也不想去找。你只要将这几行注释掉,系统会根据默认安装路径去找的。

# cuda
# include_directories(/data/cuda/cuda-10.2/cuda/include)
# link_directories(/data/cuda/cuda-10.2/cuda/lib64)
# cudnn
# include_directories(/data/cuda/cuda-10.2/cudnn/v8.0.4/include)
# link_directories(/data/cuda/cuda-10.2/cudnn/v8.0.4/lib64)
# tensorrt
# include_directories(/data/cuda/cuda-10.2/TensorRT/v7.2.1.6/include)
# link_directories(/data/cuda/cuda-10.2/TensorRT/v7.2.1.6/lib)

构建包

mkdir build
cd build
cmake ..
make

常见错误及解决方法

错误一
fatal error: crt/host_defines.h: No such file or directory
  147 | #include "crt/host_defines.h"
      |          ^~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/yolox.dir/build.make:63: CMakeFiles/yolox.dir/yolox.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/yolox.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

这个是你在CMakelists里面的cuda默认路径闹错啦

首先输入下列命令搜索这个没有找到的文件

updatedb
locate host_defines.h

结果

/home/zhangqi/anaconda3/lib/python3.9/site-packages/nvidia/cuda_runtime/include/host_defines.h
/usr/local/cuda-11.1/targets/x86_64-linux/include/host_defines.h
/usr/local/cuda-11.1/targets/x86_64-linux/include/crt/host_defines.h
/usr/local/cuda-11.6/targets/x86_64-linux/include/host_defines.h

看见结果中只有一个在crt文件夹下,则位置/usr/local/cuda-11.1/targets/x86_64-linux/include/就是cuda库了
将CMakeList对应的改成这样即可

# cuda
 include_directories(/usr/local/cuda-11.1/targets/x86_64-linux/include)
 link_directories(/usr/local/cuda-11.1/targets/x86_64-linux/lib)
错误二
error: looser throw specifier for ‘virtual void Logger::log(nvinfer1::ILogger::Severity, const char*)239 |     void log(Severity severity, const char* msg) override
      |          ^~~

这个是原文件的版本问题,只要将将logging.h中第239行的void log(Severity severity, const char* msg) override

改为void log(Severity severity, nvinfer1::AsciiChar const* msg) noexcept

即可

运行

位置home/Documents/Library/YOLOX/demo/TensorRT/cpp/build

./yolox ../model_trt.engine -i ../../../../assets/dog.jpg
blob image

常见错误

[04/05/2022-10:18:56] [E] [TRT] 3: [runtime.cpp::deserializeCudaEngine::37] Error Code 3: API Usage Error (Parameter check failed at: runtime/api/runtime.cpp::deserializeCudaEngine::37, condition: (blob) != nullptr
)
yolox: /home/zhangqi/Documents/Library/YOLOX/demo/TensorRT/cpp/yolox.cpp:493: int main(int, char**): Assertion `engine != nullptr' failed.
Aborted (core dumped)

engine的路径../model_trt.engine输错了,没找到model_trt.engine这个文件,改一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorrt下的Yolox部署 的相关文章

随机推荐

  • 决策树,信息熵,信息增益计算----机器学习

    决策树 decision tree 决策树简单介绍 信息量 信息熵 信息增益 决策树简单介绍 决策树是一种基于树状结构来做决策的 是一种常见的机器学习方法 主要做分类 也可以做回归 一棵决策树含有一个根结点 样本全集 若干个内部结点和若干个
  • MYSQL HTTP头部注入

    HTTP头部基础 Accept 浏览器能够处理的内容类型 Accept Charset 浏览器能够显示的字符集 Accept Encoding 浏览器能处理的压缩编码 Accept Language 浏览器当前设置的语言 Connectio
  • Hyper-V 的用途与安装

    什么是 Hyper V Hyper V是微软提出的一种系统管理程序虚拟化技术 能够实现桌面虚拟化 WSL2 和 WSA 与 Hyper V 的关系 Hyper V其实分两个部分 底层的虚拟机平台 上层的虚拟机管理软件 以前的Windows版
  • 2023华为OD机试真题Python实现【动态规划/找出重复代码】

    题目描述 小明负责维护项目下的代码 需要查找出重复代码 用以支撑后续的代码优化 请你帮助小明找出重复的代码 重复代码查找方法 以字符串形式给出两行代码 字符审长度1 lt length lt 100 由英文字母 数字和空格组成 找出两行代码
  • 两个日期选择器的联动

    让两个独立的日期选择器产生联动 我这里用的是elmentUI的 DatePicker日期选择器 效果展示 方案1
  • Linux下的dd命令

    简介 dd命令是Linux下的一个重要的磁盘操作命令 它的主要作用是备份和复制磁盘 dd的语法是 dd if 输入文件的名称 of 输出文件的名称 参数 值 if 输入文件的名称 指定输入文件的名称 可以是文件 设备 目录等 of 输出文件
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】流水线

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 流水线 知识点数组队列编程基础 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 一个工厂有m条流水线 来并行完成n个独立的作业 该工厂设置了一个调度系统 在安排作业时
  • aso优化师是什么_aso是什么意思 aso优化师是啥

    aso是什么意思 aso优化师是啥 年已过完 要收心工作学习了 今天李鑫自媒体就从头过滤一下aso方面的知识 用文字总结表述出来 加深自己理解的同时也帮助一些新手小伙伴了解aso aso是什么意思 ASO是App store Optimiz
  • element 的 this.$message( ) 消息提示实现

    在vue项目中 直接通过js代码 this message 就可以调出消息提示组件 这是如何实现的呢 主要分为以下几步 1 用 Vue extend 创建组件的模板 构造函数 2 创建一个函数 在函数内部 实例化组件并进行挂载到相应元素上
  • 【开发记录01】开发环境副本/页的导入&带用户权限管理系统

    在蒋老师的指导下大概了解了 1 开发环境的数据导入 导出 共享组件的同步 因为应用程序277是应用程序100的子程序 所以共享组件必须和100保持一致 但是会出现一个小问题 在APEX开发过程中同时打开两个不同的应用程序 但是编辑过程中经常
  • CVE-2017-12149

    春秋云镜 CVE 2017 12149 JBoss反序列化漏洞 靶标介绍 2017年8月30日 厂商Redhat发布了一个JBOSSAS 5 x 的反序列化远程代码执行漏洞通告 该漏洞位于JBoss的HttpInvoker组件中的 Read
  • 【教程】Github快速学习

    教程 Github快速学习 备注 一 Git基础 1 安装 2 git原理 3 基本配置 4 Gitignore 二 Git分支 1 基础命令 三 学习Github Github Docs官方文档 gt Github漫游指南 gt 开源指北
  • 毕业设计-基于大数据技术的旅游推荐系统-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • 大数据常用采集工具

    1 Flume Flume作为Hadoop的组件 是由Cloudera专门研发的分布式日志收集系统 尤其近几年随着Flume的不断完善 用户在开发过程中使用的便利性得到很大的改善 Flume现已成为Apache Top项目之一 Flume提
  • [转]一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)

    一文读懂PID控制算法 抛弃公式 从原理上真正理解PID控制 PID控制应该算是应用非常广泛的控制算法了 小到控制一个元件的温度 大到控制无人机的飞行姿态和飞行速度等等 都可以使用PID控制 这里我们从原理上来理解PID控制 PID pro
  • AcWing 1603. 整数集合划分

    给定一个包含 N 个正整数的集合 请你将它们划分为两个不相交的集合 A1 和 A2 其中 A1 包含 n1 个元素 A2 包含 n2 个元素 用 S1 表示集合 A1 内所有元素之和 S2 表示集合 A2 内所有元素之和 请你妥善划分 使得
  • 前端技术栈

    https juejin cn post 7036581158670303240 做了一份前端面试复习计划 保熟 掘金 1 Vue和React的区别 Vue和React的比较 布里渊区 CSDN博客 2 CI CD 做了哪些实践 什么是 C
  • LASlib 读写点云

    一 参考链接 1 LASlib LAStools 2 LASlib库将PCL库点云类型数据转换为las格式保存 3 las数据转 pcd并显示 las格式详解 1 孙爱怡 王健 LAS格式的解析与转换 J 全球定位系统 2016 41 02
  • 分布式搜索elasticsearch高级配置之(二)------线程池设置

    原文 http blog csdn net laigood article details 7943630 一个Elasticsearch节点会有多个线程池 但重要的是下面四个 索引 index 主要是索引数据和删除数据操作 默认是cach
  • Tensorrt下的Yolox部署

    这里写目录标题 一 Ubuntu系统的安装与显卡驱动安装 二 Tensorrt的安装 三 YOLOX的安装 四 torch2trt的安装 五 engine文件的准备 根据设备修改源文件 引擎生成 六 运行demo 先改一下CMakeList