tensorRT_Pro 项目实践

news2024/12/28 20:26:15

参考:https://github.com/shouxieai/tensorRT_Pro/blob/main/tutorial/README.zh-cn.md

前提:

https://www.cnblogs.com/odesey/p/17619218.html

https://www.cnblogs.com/odesey/p/17619240.html

  • ubuntu20.04
  • opencv4.2
  • cuda11.8
  • cuDNN v8.9.0 (July 11th, 2023), for CUDA 11.x
  • TensorRT-8.6.1
  • protobuf-3.19.4

配置 tensorRT_Pro

git clone https://github.com/shouxieai/tensorRT_Pro.git
cd tensorRT_Pro

# 适配Protobuf版本
#切换终端目录到onnx下
cd onnx

修改 make_pb.sh :

# 请修改protoc为你要使用的版本protoc
protoc=/home/h/programs/protobuf/bin/protoc

执行生成pb文件,并自动复制。使用make_pb.sh脚本

bash make_pb.sh

修改 CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)
project(pro)

option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/workspace)

# # 如果要支持python则设置python路径
# set(HAS_PYTHON OFF)
# set(PythonRoot "/home/h/programs/miniconda3")
# set(PythonName "python3.9")

# 如果你是不同显卡,请设置为显卡对应的号码参考这里:https://developer.nvidia.com/zh-cn/cuda-gpus#compute, 3060: 86
set(CUDA_GEN_CODE "-gencode=arch=compute_86,code=sm_86")

# 如果你的opencv找不到,可以自己指定目录
set(OpenCV_DIR   "/home/h/programs/cv/build")

set(CUDA_TOOLKIT_ROOT_DIR     "/home/h/programs/cuda-11.8")
set(CUDNN_DIR    "/home/h/programs/cudnn-linux-x86_64-8.9.0.131_cuda11-archive")
set(TENSORRT_DIR "/home/h/programs/TensorRT-8.6.1.6")

# set(CUDA_TOOLKIT_ROOT_DIR     "/data/sxai/lean/cuda-10.2")
# set(CUDNN_DIR    "/data/sxai/lean/cudnn7.6.5.32-cuda10.2")
# set(TENSORRT_DIR "/data/sxai/lean/TensorRT-7.0.0.11")

# set(CUDA_TOOLKIT_ROOT_DIR  "/data/sxai/lean/cuda-11.1")
# set(CUDNN_DIR    "/data/sxai/lean/cudnn8.2.2.26")
# set(TENSORRT_DIR "/data/sxai/lean/TensorRT-7.2.1.6")

# 因为protobuf,需要用特定版本,所以这里指定路径
set(PROTOBUF_DIR "/home/h/programs/protobuf")

修改 .vscode/c_cpp_properties.json

{
	"configurations": [
		{
			"name": "Linux",
			"includePath": [
				"${workspaceFolder}/src/**",
				"/home/h/programs/protobuf/include/**",
				"/home/h/programs/cv/build/**",
				"/home/h/programs/cuda-11.8/include/**",
				"/home/h/programs/TensorRT-8.6.1.6/include/**",
				"/home/h/programs/cudnn-linux-x86_64-8.9.0.131_cuda11-archive/include/**",
				"/home/h/programs/miniconda3/include/python3.9/**"
			],
			"defines": ["__CUDACC__", "HAS_PYTHON"],
			"compilerPath": "/usr/bin/gcc", 
			"cStandard": "gnu11",
			"cppStandard": "gnu++11",
			"intelliSenseMode": "linux-gcc-x64",
			"configurationProvider": "ms-vscode.makefile-tools",
			"browse": {
				"path": [
					"${workspaceFolder}/src/**",
					"/home/h/programs/protobuf/include/**",
					"/home/h/programs/cv/build/**",
					"/home/h/programs/cuda-11.8/include/**",
					"/home/h/programs/TensorRT-8.6.1.6/include/**",
					"/home/h/programs/cudnn-linux-x86_64-8.9.0.131_cuda11-archive/include/**",
					"/home/h/programs/miniconda3/include/python3.9/**"
				],
				"limitSymbolsToIncludedHeaders": false,
				"databaseFilename": ""
			}
		}
	],
	"version": 4
}

编译:

cd tensorRT_Pro
mkdir build && cd build
cmake ..
make yolo -j64

[2023-08-12 15:46:00][info][app_yolo.cpp:132]:===================== test YoloV7 FP32 yolov7 ==================================
[2023-08-12 15:46:00][warn][trt_builder.cpp:33]:NVInfer: The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
[2023-08-12 15:46:00][info][trt_infer.cpp:177]:Infer 0x7f54ec000c80 detail
[2023-08-12 15:46:00][info][trt_infer.cpp:178]: Base device: [ID 0]<NVIDIA GeForce RTX 3060>[arch 8.6][GMEM 9.71 GB/11.76 GB]
[2023-08-12 15:46:00][warn][trt_builder.cpp:33]:NVInfer: The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
[2023-08-12 15:46:00][info][trt_infer.cpp:179]: Max Batch Size: 1
[2023-08-12 15:46:00][info][trt_infer.cpp:180]: Inputs: 1
[2023-08-12 15:46:00][info][trt_infer.cpp:184]: 0.images : shape {1 x 3 x 640 x 640}, Float32
[2023-08-12 15:46:00][info][trt_infer.cpp:187]: Outputs: 1
[2023-08-12 15:46:00][info][trt_infer.cpp:191]: 0.output : shape {1 x 25200 x 85}, Float32
[2023-08-12 15:46:00][warn][trt_builder.cpp:33]:NVInfer: The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
[2023-08-12 15:46:10][info][app_yolo.cpp:83]:yolov7.FP32.trtmodel[YoloV7] average: 14.00 ms / image, FPS: 71.42
[2023-08-12 15:46:10][info][app_yolo.cpp:109]:Save to yolov7_YoloV7_FP32_result/car.jpg, 7 object, average time 14.00 ms
[2023-08-12 15:46:10][info][app_yolo.cpp:109]:Save to yolov7_YoloV7_FP32_result/zgjr.jpg, 4 object, average time 14.00 ms
[2023-08-12 15:46:10][info][app_yolo.cpp:109]:Save to yolov7_YoloV7_FP32_result/gril.jpg, 2 object, average time 14.00 ms
[2023-08-12 15:46:10][info][app_yolo.cpp:109]:Save to yolov7_YoloV7_FP32_result/group.jpg, 18 object, average time 14.00 ms
[2023-08-12 15:46:10][info][app_yolo.cpp:109]:Save to yolov7_YoloV7_FP32_result/yq.jpg, 2 object, average time 14.00 ms
[2023-08-12 15:46:10][info][app_yolo.cpp:109]:Save to yolov7_YoloV7_FP32_result/zand.jpg, 4 object, average time 14.00 ms
[2023-08-12 15:46:10][info][yolo.cpp:289]:Engine destroy.
[100%] Built target yolo

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/868399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】背景及环境搭建

文章目录 了解计算机一、Python背景知识一、Python环境搭建 努力经营当下 直至未来明朗 了解计算机 示例&#xff1a;使用电脑访问B站 1&#xff09; 本地的计算机会给B站服务器发送一个网络请求&#xff08;如&#xff1a;谁&#xff0c;想看哪个视频&#xff09; 2&#xf…

WPS Office 代码执行漏洞(QVD-2023-17241)

目录 本地利用弹计算器&#xff08;自娱自乐&#xff09; 原理分析 msf的利用 1.修改win11中的hosts文件 2.MSF生成一个C#后门 3.shellcode替换 4.在创建html的目录&#xff0c;用python打开http服务来捕获请求 5.开启监听 6.在win11中点击poc文档&#xff0c;可以看到k…

0001nginx简介、相关模型与原理

文章目录 一. 什么是Nginx二. ngnix的一些模型1、nginx的进程模型2、worker的抢占&#xff08;锁&#xff09;机制模型3. nginx事件处理模型 三. nginx加载静态资源的过程 一. 什么是Nginx Nginx是一个高性能HTTP反向代理服务器&#xff0c;以下是nginx的相关能力 反向代理&am…

通过matlab对比music,mvdr以及tdoa三种定位算法的性能

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 MUSIC&#xff08;Multiple Signal Classification&#xff09; 4.2 MVDR&#xff08;Minimum Variance Distortionless Response&#xff09; 4.3 TDOA&#xff08;Time Difference o…

使用宝塔面板轻松部署云服务器

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; 宝塔面版 &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f449…

LeetCode[164]最大间距

难度&#xff1a;Hard 题目&#xff1a; 给定一个无序的数组 nums&#xff0c;返回 数组在排序之后&#xff0c;相邻元素之间最大的差值 。如果数组元素个数小于 2&#xff0c;则返回 0 。 您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。 示例 1: 输入: …

docsify gitee 搭建个人博客

docsify & gitee 搭建个人博客 文章目录 docsify & gitee 搭建个人博客1.npm 安装1.1 在Windows上安装npm&#xff1a;1.2 在macOS上安装npm&#xff1a;1.3 linux 安装npm 2. docsify2.1 安装docsify2.2 自定义配置2.2.1 通过修改index.html&#xff0c;定制化开发页面…

如何创造千亿项目?合法合规的绿色消费增值积分,或许能冲出赛道

电商行业的竞争越来越激烈&#xff0c;大部分的电商平台都面临着这三大难题&#xff1a;如何吸引用户、如何留存用户以及如何让用户为平台带来更多的效益。为了解决这三大问题&#xff0c;我们提出了创造千亿项目的商业模式——绿色消费增值积分系统&#xff0c;帮助企业冲出赛…

git 给仓库添加新分支并上传代码,git 克隆指定分支

git 克隆指定分支 git clone -b 分支名 仓库地址 例如&#xff1a; git clone -b dev https://gitee.com/UserGuan/spring-boot-demo.git git 给仓库添加新分支并上传代码 1、初始化仓库 git init 2、创建分支并命名 git checkout -b 分支名 例如&#xff1a; git che…

分布式应用:Zabbix监控Nginx

目录 一、理论 1.Zabbix监控Nginx 二、实验 1.Zabbix监控Nginx部署 三、问题 1.重启zabbix客户端失败 2.zabbix服务端测试客户端nginx状态失败 3.nginx启动失败 4.权限不够 一、理论 1.Zabbix监控Nginx &#xff08;1&#xff09;环境 zabbix服务端&#xff1a;192.1…

从零构建深度学习推理框架-7 计算图的表达式

什么是表达式 表达式就是一个计算过程,类似于如下&#xff1a; output_mid input1 input2 output output_mid * input3用图形来表达就是这样的。 但是在PNNX的表达式&#xff08;Experssion Layer&#xff09;中不是这个样子&#xff0c;而是以一种抽象得方式&#xff0c;…

1.阿里云对象存储OSS

1.对象存储概述 文件上传&#xff0c;是指将本地图片、视频、音频等文件上传到服务器上&#xff0c;可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛&#xff0c;我们经常发抖音、发朋友圈都用到了文件上传功能。 实现文件上传服务&#xff0c;需要有存储的支持…

山西电力市场日前价格预测【2023-08-13】

日前价格预测 预测明日&#xff08;2023-08-13&#xff09;山西电力市场全天平均日前电价为351.64元/MWh。其中&#xff0c;最高日前电价为404.00元/MWh&#xff0c;预计出现在19: 30。最低日前电价为306.39元/MWh&#xff0c;预计出现在13: 15。 价差方向预测 1&#xff1a; 实…

【vue3】vue3中父子组件传参:

文章目录 一、父传子&#xff1a;二、父调用子方法&#xff1a;三、子组件发送emit方法给父组件&#xff1a; 一、父传子&#xff1a; 【1】父组件传值&#xff1a; 【2】子组件接收&#xff1a; 二、父调用子方法&#xff1a; 【1】父组件调用&#xff1a; 【2】子组件暴…

C++ 学习系列 二 -- RAII 机制

一 什么是 RAII &#xff1f; RAII &#xff08;Resource Acquisition Is Initialization&#xff09;是由c之父Bjarne Stroustrup提出的&#xff0c;中文翻译为资源获取即初始化&#xff0c; 其含义是&#xff1a;用局部对象来管理资源的技术&#xff0c;这里所说的资源指的是…

【杨辉三角的两种解法——(超级详细)】

杨辉三角 1.杨辉三角简介&#x1f575;️ 杨辉三角&#xff0c;是二项式系数在三角形中的一种几何排列。在欧洲&#xff0c;这个表叫做帕斯卡三角形。帕斯卡&#xff08;1623----1662&#xff09;是在1654年发现这一规律的&#xff0c;比杨辉要迟393年&#xff0c;比贾宪迟600…

Python 11道字典练习题

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 有字典 dic {“k1”: “v1”, “k2”: “v2”, “k3”: “v3”}&#xff0c;实现以下功能&#xff1a; 1、遍历字典 dic 中所有的key 参考答案&#xff1a; dic {k1: v1,k2:v2,k3:v3}for k in dic.keys():print(k)2、遍历…

【高阶数据结构】AVL树详解(图解+代码)

文章目录 前言1. AVL树的概念2. AVL树结构的定义3. 插入&#xff08;仅仅是插入过程&#xff09;4. 平衡因子的更新4.1 为什么要更新平衡因子&#xff1f;4.2 如何更新平衡因子&#xff1f;4.3 parent更新后&#xff0c;是否需要继续往上更新&#xff1f;4.4 平衡因子更新代码实…

【最全Kubernetes容器编排安装教程】

文章目录 环境准备主机间做信任使用ssh-copy-id命令实现免密登录的安装与配置1. 安装Git Bash软件2. 生成公钥3. SSH登录Linux服务器4. 公钥复制到Linux服务器5. SSH免密登录测试 安装ansible工具 升级内核版本使用elrepo源升级内核查看最新版内核安装最新的内核版本设置系统默…

C语言的链表的相关操作

本变博客源于自己想复习一下C语言&#xff0c;所以便自己动手复习了一下链表的相关操作。做个人记录使用。 main.c #include <stdio.h> #include "list.h"int main() {student *a;printf("hello world\n") ;printf("----初始化列表----------\…