『heqingchun-Ubuntu系统+x86架构+配置编译安装使用yolov5-6.0+带有TensorRT硬件加速+C++部署』
Ubuntu系统+x86架构+配置编译安装使用yolov5-6.0+带有TensorRT硬件加速+C++部署
一、准备文件
1.yolov5-6.0.zip
官网下载
网址:
https://github.com/ultralytics/yolov5/tree/v6.0
操作:
点击"Code"下的"Download ZIP"
下载得到yolov5-6.0.zip压缩文件
2.tensorrtx-yolov5-v6.0.zip
官网下载
网址:
https://github.com/wang-xinyu/tensorrtx/tree/yolov5-v6.0
操作:
点击"Code"下的"Download ZIP"
下载得到tensorrtx-yolov5-v6.0.zip压缩文件
3.tensorrt_learning-main.zip
官网下载
网址:
https://github.com/Rex-LK/tensorrt_learning
操作:
点击"Code"下的"Download ZIP"
下载得到tensorrt_learning-main.zip压缩文件
4.yolov5s.pt
官网下载
网址:
https://github.com/ultralytics/yolov5/tree/v6.0
向页面查找"YOLOv5s"
YOLOv5n 640 28.4 46.0 45 6.3 0.6 1.9 4.5
YOLOv5s 640 37.2 56.0 98 6.4 0.9 7.2 16.5
YOLOv5m 640 45.2 63.9 224 8.2 1.7 21.2 49.0
YOLOv5l 640 48.8 67.2 430 10.1 2.7 46.5 109.1
YOLOv5x 640 50.7 68.9 766 12.1 4.8 86.7 205.7
YOLOv5n6 1280 34.0 50.7 153 8.1 2.1 3.2 4.6
YOLOv5s6 1280 44.5 63.0 385 8.2 3.6 16.8 12.6
YOLOv5m6 1280 51.0 69.0 887 11.1 6.8 35.7 50.0
YOLOv5l6 1280 53.6 71.6 1784 15.8 10.5 76.8 111.4
操作:
点击"YOLOv5s"即可下载yolov5s.pt文件
5.将文件按以下顺序存放
新建"TensorRT"目录
mkdir TensorRT
"yolov5-6.0.zip"放入TensorRT目录
"tensorrtx-yolov5-v6.0.zip"放入TensorRT目录
"tensorrt_learning-main.zip"放入TensorRT目录
"yolov5s.pt"放入TensorRT目录
存放好后将压缩文件解压即可
二、更新、安装基础依赖
sudo apt update && \
sudo apt upgrade -y && \
sudo apt install -y build-essential cmake
三、安装依赖
1.nvidia驱动、cuda、cudnn、tensorRT
参考我的博客: 『heqingchun-ubuntu系统下安装nvidia显卡驱动3种方法』
参考我的博客: 『heqingchun-ubuntu系统下安装cuda与cudnn』
参考我的博客: 『heqingchun-ubuntu使用TensorRT配置』
2.pytorch
参考我的博客: ubuntu开发环境配置(cuda、cudnn、ffmpeg、opencv、darknet-master、TensorRT、python、pytorch、MySql、qt(armv8交叉编译))
第"九"项
3.requirements.txt
解压下载的“yolov5-6.0.zip”压缩文件,进入目录
unzip yolov5-6.0.zip
cd yolov5-6.0
执行:
pip3 install -r requirements.txt
如果遇到问题:ERROR: pandas 2.0.3 has requirement python-dateutil>=2.8.2, but you’ll have python-dateutil 2.7.3 which is incompatible.则执行:
pip3 install --upgrade python-dateutil
四、开始模型转换
1.yolov5.pt转换为yolov5.wts
将yolov5.pt文件与tensorrtx-yolov5-v6.0/yolov5目录下的gen_wts.py文件放置到yolov5-6.0目录下
cd TensorRT
cp yolov5s.pt tensorrtx-yolov5-v6.0/yolov5/gen_wts.py yolov5-6.0
转换
python3 yolov5-6.0/gen_wts.py --w yolov5-6.0/yolov5s.pt --o yolov5s.wts
在TensorRT目录生成yolov5s.wts文件
2.yolov5s.wts转换为yolov5s.engine
修改cmake文件
cd TensorRT
gedit tensorrtx-yolov5-v6.0/yolov5/CMakeLists.txt
修改tensorrt头文件与库文件目录为当前正确目录
原:
# tensorrt
include_directories(/usr/include/x86_64-linux-gnu/)
link_directories(/usr/lib/x86_64-linux-gnu/)
新:
# tensorrt
include_directories(/home/heqingchun/soft/TensorRT/TensorRT-8.4.3.1/include)
link_directories(/home/heqingchun/soft/TensorRT/TensorRT-8.4.3.1/lib)
新建build目录
mkdir -p tensorrtx-yolov5-v6.0/yolov5/build
进入build目录
cd tensorrtx-yolov5-v6.0/yolov5/build
编译
cmake ..
make -j $(nproc)
在build目录会生成可执行文件,可用于转换模型与推理检测。注:当前使用模型文件为官方模型,故检测类型数量为80,如需更改,请在cmake前修改yololayer.h中的num_classes 的数量。
转换
./yolov5 -s ../../../yolov5s.wts yolov5s.engine s
等待一会就会发现已经成功转换出yolov5s.engine文件了。
五、推理测试
cd TensorRT/tensorrtx-yolov5-v6.0/yolov5/build/
./yolov5 -d yolov5s.engine ../samples
控制台打印信息:
[11/27/2023-09:37:24] [W] [TRT] CUDA lazy loading is not enabled. Enabling it can significantly reduce device memory usage. See `CUDA_MODULE_LOADING` in https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#env-vars
inference time: 3ms
inference time: 3ms
在samples目录中存放有2张图片
可见推理成功,并生成两张图片"_bus.jpg"与"_zidane.jpg"已画框,时间为3ms。
六、封装后在C++调用
后续更新…
Ubuntu系统+x86架构+配置编译安装使用yolov5-6.0+带有TensorRT硬件加速+C++部署-完毕
相关文章:
『heqingchun-Ubuntu系统+x86架构+配置编译安装使用yolov5-6.0+带有TensorRT硬件加速+C++部署』
Ubuntu系统x86架构配置编译安装使用yolov5-6.0带有TensorRT硬件加速C部署 一、准备文件 1.yolov5-6.0.zip 官网下载 网址: https://github.com/ultralytics/yolov5/tree/v6.0操作: 点击"Code"下的"Download ZIP" 下载得到yolov5…...
优秀的员工成为公司的管理者之后,为何表现平庸?因为他们缺乏这些思维
在企业的实践中,我们发现平时能力最强的员工,在被提拔到管理层之后就慢慢变得平庸了,再也不是以前那个无所不能的“企业能人”了,甚至在一些事情的处理上还会有些笨拙。面对这种情况,我们一定会感觉很疑惑,…...
MySQL简单介绍
简单了解MySQL MySQL语句分类 SQL语句分类 DDL:数据定义语句 create表,库.….] DML:数据操作语句 [增加insert,修改 update,删除delete] DQL:数据查询语句 [select] DCL:数据控制语句 …...
【开源】基于JAVA的天然气工程业务管理系统
项目编号: S 021 ,文末获取源码。 \color{red}{项目编号:S021,文末获取源码。} 项目编号:S021,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四…...
虚幻学习笔记—点击场景3D物体的两种处理方式
一、前言 本文使用的虚幻引擎为5.3.2,两种方式分别为:点击根物体和精准点击目标物体。 二、实现 2.1、玩家控制器中勾选鼠标点击事件:这一步很重要,如图2.1.1所示:在自定义玩家控制器中勾 图2.1.1 选该项,…...
AIGC|LangChain新手入门指南,5分钟速读版!
如果你用大语言模型来构建AI应用,那你一定不可能绕过LangChain,LangChain是现在最热门的AI应用框架之一,去年年底才刚刚发布,它在github上已经有了4.6万颗星的点赞了,在github社区上,每天都有众多大佬,用它…...
探索 Linux vim/vi 编辑器:介绍、模式以及基本操作演示
💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点…...
Centos 7 在线安装(RPM) PostgreSQL 14 15 16
目录 一、官网下载地址二、检查系统是否安装其他版本PostgreSQL数据库三、安装数据库四、配置数据库(默认方式一)4.1初始化用户密码4.2修改postgresql.conf文件4.3修改pg_hba.conf文件五、修改默认存储路径六、配置防火墙七、生产环境优化(待完善)八、启用SSL加密(待验证)九…...
如何在gitlab上使用hooks
参考链接:gitlab git hooks 1. Git Hook 介绍 与许多其他版本控制系统一样,Git 有一种方法可以在发生某些重要操作时,触发自定义脚本,即 Git Hook(Git 钩子)。 当我们初始化一个项目之后,.git…...
【点云surface】 凹包重构
1 处理过程可视化 原始数据 直通滤波过滤后 pcl::ProjectInliers结果 pcl::ExtractIndices结果 凹包结果 凸包结果 2 处理过程分析: 原始点云 ---> 直通滤波 --> pcl::SACSegmentation分割出平面 -->pcl::ProjectInliers投影 --> pcl::ConcaveHull凹包…...
Linux sed命令
目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符,整合数据为一行 一. 去除单个指定文本的换行符 👉 info.txt …...
Nginx反向代理实现负载均衡+Keepalive实现高可用
目录 实现负载均衡 实现高可用 实现负载均衡 Nginx的几种负载均衡算法: 1.轮询(默认) 每个请求按照时间顺序逐一分配到下游的服务节点,如果其中某一节点故障,nginx 会自动剔除故障系统使用户使用不受影响。 2.权重…...
实用高效 无人机光伏巡检系统助力电站可持续发展
近年来,我国光伏发电行业规模日益壮大,全球领先地位愈发巩固。为解决光伏电站运维中的难题,浙江某光伏电站与复亚智能达成战略合作,共同推出全自动无人机光伏巡检系统,旨在提高发电效率、降低运维成本,最大…...
Django框架之csrf跨站请求
目录 一、csrf跨站请求伪造详解 二、csrf跨域请求伪造 【1】正常服务端 【2】钓鱼服务端 三、csrf校验 【介绍】 form表单中进行csrf校验: 【1】form表单如何校验 【2】ajax如何校验 四、csrf相关装饰器 【1】csrf_protect装饰器: 【…...
[系统移植] 移植主线Buildroot(2023.02-rc3)到RK3399
文章目录 一、编译环境二、Git环境三、克隆源代码四、编译源代码五、烧录固件六、系统启动一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev \ exube…...
自动语音识别 支持86种语言 Dragon Professional 16 Crack
从个体从业者到全球组织,文档密集型行业的专业人士长期以来一直依靠 Dragon 语音识别来更快、更高效地创建高质量文档,减少管理开销,以便他们能够专注于客户。了解 Dragon Professional v16 如何通过单一解决方案提高标准,为各个业…...
i社为什么不出游戏了?
I社,即国际知名的游戏公司,近来为何鲜有新游问世?曾经风靡一时的游戏开发者,如今为何陷入了沉寂?这其中的种种原因,值得我们深入剖析。 首先,I社近期的沉寂可能与其内部管理层的调整和战略规划…...
Harmony开发 eTs公共样式抽取
Harmony系统开发使用eTs开发过程中对于样式相同且重复使用的样式可以抽取成公共样式循环利用,类似于android的style样式。 import router from ohos.router import cryptoFramework from ohos.security.cryptoFramework; import prompt from system.prompt class L…...
Java中的方法
在Java中,方法是一个重要的概念,它用于组织和执行可重复使用的代码块。本文将详细介绍Java中方法的概念、定义和使用方法,以及一些常见的编程技巧和注意事项。 一、方法的概念 在Java中,方法是用来执行特定任务的代码块。它封装了…...
存算一体还是存算分离?谈谈数据库基础设施的架构选择
从一则用户案例说起 某金融用户问,数据库用服务器本地盘性能好还是外置存储好?直觉上,本地盘路径短性能应该更好。然而测试结果却出乎意料:同等中等并发压力,混合随机读写模型,服务器本地SSD盘合计4万 IOPS…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
