YOLOv8目标检测实战-(TensorRT原生API搭建网络和使用Parser搭建网络)

article/2025/7/19 21:07:08

文章目录

    • 一、原理篇
      • 1)Trt基础知识
      • 2)Trt plugin
      • 3)int8量化算法和原理
      • 4)cuda编程
      • 5)onnx基础知识
      • 6)yolov8网络架构
        • 6.1 yolov5网络架构图
        • 6.2 yolov8s网络架构
    • 二、TensorRT原生API搭建网络
      • 1)window实践
        • 1.1 安装基础环境、pytorch、yolov8、trt、opencv
        • 1.2 模型文件转换
        • 1.3 编译trt加速的yolov8
        • 1.4 执行trt加速后的命令(C++)
        • 1.5 执行trt加速后的命令(python)
      • 2)ubuntu实践
        • 2.1 安装基础环境、pytorch、yolov8、trt、opencv
        • 2.2 模型文件转换
        • 2.3 编译trt加速的yolov8
        • 2.4 执行trt加速后的命令(C++)
        • 2.5 执行trt加速后的命令(python)
      • 3)代码解析
        • 3.1 代码解析先序知识
        • 3.2 infer相关代码解析
        • 3.3 yolo相关代码解析-前处理
        • 3.3 yolo相关代码解析-后处理
        • 3.4 detect.cpp代码解析
        • 3.5 项目python代码解析
        • 3.6 ubuntu代码的不同之处
    • 三、使用Parser搭建网络
      • 1)windows
        • 1.1 安装基础环境、pytorch、yolov8、trt、opencv
        • 1.2 模型文件转换
        • 1.3 编译trt加速的yolov8
        • 1.4 执行trt加速后的命令(C++)
        • 1.5 执行trt加速后的命令(python)
        • 1.6 yolov8的trt int8量化(PTQ)
      • 2)ubuntu
        • 2.1 安装基础环境、pytorch、yolov8、trt、opencv
        • 2.2 模型文件转换
        • 2.3 编译trt加速的yolov8
        • 2.4 执行trt加速后的命令(C++)
        • 2.5 执行trt加速后的命令(python)
        • 2.6 yolov8的trt int8量化(PTQ)
      • 3)代码解析
        • 3.1 gen_wts.py代码解析
        • 3.2 yolov8的预处理相关代码解析
        • 3.3 yoloLayerPlugin代码解析
        • 3.4 yolo组件相关代码解析
        • 3.5 yolo模型构建相关代码解析
        • 3.6 int8量化校准器代码解析
        • 3.7 main.cpp代码解析
        • 3.8 yolo8_trt.py代码解析
        • 3.9 代码更新

一、原理篇

1)Trt基础知识

2)Trt plugin

3)int8量化算法和原理

4)cuda编程

5)onnx基础知识

6)yolov8网络架构

6.1 yolov5网络架构图

在这里插入图片描述
下面是主要架构展示:
①Conv = conv+BN+SiLU,stride=2表示下采样,在backbone中有5个stride=2的conv模块,2的5次方是32,640/32=20,所以就有了20x20的特征图
在这里插入图片描述
②Bottleneck有add为true和false两种,
在这里插入图片描述
③C3-n,n表示有n个Bottleneck
在这里插入图片描述
④SPFF:改进的空间计算
在这里插入图片描述
⑤因为有两种上采样的存在,所以输出有三种维度的特征图
上采样:上采样将深层特征图的分辨率提高(如从20×20上采样到40×40),与浅层特征拼接,保留细节信息的同时增强语义表达能力
在这里插入图片描述

6.2 yolov8s网络架构

在这里插入图片描述

  • 与yolo5的不同点
    ①第一个conv不再是6x6的,而是3x3的
    ②C3-n模块换成了C2f模块
    ③C2f-n模块:
    1)split是在channel维度上做split
    2)后面每个bottleneck都有抽头,合起来concat有n+2个抽头

二、TensorRT原生API搭建网络

1)window实践

1.1 安装基础环境、pytorch、yolov8、trt、opencv
1.2 模型文件转换
1.3 编译trt加速的yolov8
1.4 执行trt加速后的命令(C++)
1.5 执行trt加速后的命令(python)

2)ubuntu实践

2.1 安装基础环境、pytorch、yolov8、trt、opencv
2.2 模型文件转换
2.3 编译trt加速的yolov8
2.4 执行trt加速后的命令(C++)
2.5 执行trt加速后的命令(python)

3)代码解析

3.1 代码解析先序知识
3.2 infer相关代码解析
3.3 yolo相关代码解析-前处理
3.3 yolo相关代码解析-后处理
3.4 detect.cpp代码解析
3.5 项目python代码解析
3.6 ubuntu代码的不同之处

三、使用Parser搭建网络

1)windows

1.1 安装基础环境、pytorch、yolov8、trt、opencv
1.2 模型文件转换
1.3 编译trt加速的yolov8
1.4 执行trt加速后的命令(C++)
1.5 执行trt加速后的命令(python)
1.6 yolov8的trt int8量化(PTQ)

2)ubuntu

2.1 安装基础环境、pytorch、yolov8、trt、opencv
2.2 模型文件转换
2.3 编译trt加速的yolov8
2.4 执行trt加速后的命令(C++)
2.5 执行trt加速后的命令(python)
2.6 yolov8的trt int8量化(PTQ)

3)代码解析

3.1 gen_wts.py代码解析
3.2 yolov8的预处理相关代码解析
3.3 yoloLayerPlugin代码解析
3.4 yolo组件相关代码解析
3.5 yolo模型构建相关代码解析
3.6 int8量化校准器代码解析
3.7 main.cpp代码解析
3.8 yolo8_trt.py代码解析
3.9 代码更新

http://www.hkcw.cn/article/KyxvOuwZMt.shtml

相关文章

【IC】ASIC 设计流程:什么是 ASIC 设计?

什么是 ASIC? ASIC(专用集成电路)是一种经过精心设计的专用集成电路,用于在电子系统中执行特定功能或功能集。与微波炉或电视盒等日常电子设备中的通用微处理器不同,ASIC 是为特定应用量身定制的,可提供无…

TKdownloader V5.5 抖音批量下载工具

目前能找到的仅存的免费抖音批量下载软件,有win版和mac版。 但是软件的运行需要一点点电脑知识,不太复杂,按着说明一步一步走,也能正常安装使用。 项目功能 下载抖音无水印视频/图集 下载抖音无水印实况/动图 下载最高画质视频文件…

Rust 编程实现猜数字游戏

文章目录 编程实现猜数字游戏游戏规则创建新项目默认代码处理用户输入代码解析 生成随机数添加依赖生成逻辑 比较猜测值与目标值类型转换 循环与错误处理优化添加循环优雅处理非法输入​ 最终完整代码核心概念总结 编程实现猜数字游戏 我们使用cargo和rust实现一个经典编程练习…

苏州SAP代理公司排名:工业园区企业推荐的服务商

目录 一、SAP实施商选择标准体系 1、行业经验维度 2、实施方法论维度 3、资质认证维度 4、团队实力维度 二、SAP苏州实施商工博科技 1、SAP双重认证,高等院校支持 2、以SAP ERP为核心,助力企业数字化转型 三、苏州使用SAP的企业 苏州是中国工业…

2505软考高项第一、二批真题终极汇总

第一批2025.05综合题(75道选择题) 1、2025 年中央一号文件对进一步深化农村改革的各项任务作出全面部署。“推进农业科技力量协同攻关”的相关措施不包括()。 A.强化农业科研资源力量统筹,培育农业科技领军企业 B.发挥农业科研平台作用&…

微深节能 堆取料机动作综合检测系统 格雷母线

精准定位,高效运行——微深节能格雷母线堆取料机动作综合检测系统 在现代工业自动化领域,精准的位置检测是保障设备高效运行的关键。武汉市微深节能科技有限公司推出的格雷母线高精度位移测量系统,凭借其卓越的性能和可靠性,成为…

Android Native 之 adbd进程分析

目录 1、adbd守护进程 2、adbd权限降级 3、adbd命令解析 1)adb shell 2)adb root 3)adb reboot 4、案例 1)案例之实现不需要执行adb root命令自动具有root权限 2)案例之实现不需要RSA认证直接能够使用adb she…

wireshark分析国标rtp ps流

1.将抓到的tcp或者udp视频流使用decode as 转为rtp包 2.电话->RTP->RTP播放器 选择Export 里面的Payload 就可以导出原始PS流

next.js 如何做中英文切换(详解)

最近开发的项目涉及到了 react, 因为之前没用过 next.js, 发现文档比较乱,所以也是花了点时间,这里做个记录。 前提依赖:App 文件夹路由 {"next": "14.2.22","react-i18next": "^15.5.1","i1…

SpringAI系列4: Tool Calling 工具调用 【感觉这版本有bug】

前言:在最近发布的 Spring AI 1.0.0.M6 版本中,其中一个重大变化是 Function Calling 被废弃,被 Tool Calling 取代。Tool Calling工具调用(也称为函数调用)是AI应用中的常见模式,允许模型通过一组API或工具…

SAR ADC 比较器噪声分析(二)

SAR ADC的比较器是非常重要的模块,需要仔细设计。主要考虑比较器的以下指标: 1)失调电压 2)输入共模范围 3)比较器精度 4)传输延时 5)噪声 6)功耗 这里主要讲一下动态比较器的noise。 动态比较器一般用于高速SAR ADC中,且精度不会超过12bit…

Haproxy搭建Web集群

目录 Haproxy概述 Haproxy调度算法 静态调度算法 动态调度算法 其他调度算法 案例环境 配置网站 配置Haproxy Haproxy日志 MySQL负载均衡调度模式 Nginx负载均衡算法 Haproxy概述 Haproxy是一款开源、高性能的负载均衡和代理服务器,支持TCP和HTTP协议&a…

中联教育 - 嵌入式BI助力财经数据分析服务

“借助Wyn商业智能软件嵌入式BI工具强大的嵌入式能力,我们实现了与已有的财经教育教学实训平台的深度融合,大幅提升了平台的数据分析服务能力。同时,产品简单易用的特性,也让我们的学员能够快速上手,进行财务报表的设计…

Qt实现csv文件按行读取的方式

Qt实现csv文件按行读取的方式 场景:我有一个保存数据的csv文件,文件内保存的是按照行保存的数据,每行数据是以逗号为分隔符分割的文本数据。如下图所示: 现在,我需要按行把这些数据读取出来。 一、使用QTextStream文本流的方式读取 #include <QFile>void readfil…

VMware Workstation虚拟系统设置双网口

一.设置windows11系统VMware Network Adapter VMnet1。 1.进入到网络和Internet -> 高级网络设置 2.找到VMware Network Adapter VMnet1&#xff0c;进入到“更多配置选项”并“编辑”。 3.进入到属性&#xff0c;双击“Interenet协议版本4&#xff08;TCP/IPv4&#xff…

CppCon 2014 学习:Lock-Free Programming

你这段文字讲的是“为什么要使用无锁&#xff08;Lock-Free&#xff09;代码”&#xff0c;我帮你总结并解释一下&#xff1a; 为什么选择无锁代码&#xff1f; 并发性和可扩展性&#xff08;Concurrency and scalability&#xff09; 无锁算法允许多个线程同时操作共享数据&a…

MFA多因素认证与TOTP算法核心解析(含Java案例)

目录 一、多因素认证(MFA)概述MFA基本概念MFA与2FA的区别MFA的重要性 二、TOTP算法原理TOTP基本概念时间变量T的计算TOTP生成过程TOTP验证过程 三、TOTP在MFA中的应用绑定流程认证流程TOTP的优势 四、TOTP的安全考虑哈希算法选择密钥管理防暴力破解时间同步通信安全 五、TOTP的…

openssl-aes-ctr使用openmp加速

openssl-aes-ctr使用openmp加速 openssl-aes-ctropenmp omp for openssl-aes-ctr 本文采用openssl-1.1.1w进行开发验证开发&#xff1b;因为aes-ctr加解密模式中&#xff0c;不依赖与上一个模块的加/解密的内容&#xff0c;所以对于aes-ctr加解密模式是比较适合进行并行加速的…

git查看commit属于那个tag

1. 快速确认commit原始分支及合入tag # git describe 213b4b3bbef2771f7a1b8166f6e6989442ca67c8 查看commit合入tag # git describe 213b4b3bbef2771f7a1b8166f6e6989442ca67c8 --all 查看commit原始分支 2.查看分支与master关系 # git show --all 0.5.67_0006 --stat 以缩…

怎么在window上打开ubuntu虚拟机?

怎么在window上打开ubuntu虚拟机&#xff1f; 1.先下载ubuntu镜像包并解压&#xff08;VM-ubuntu18-202304.7z&#xff09;,下载地址在本文档中有链接&#xff0c;自行查找。&#xff08;解压路径不要有中文&#xff09; 2.打开VMware软件&#xff0c;&#xff08;软件下载地址…