当前位置: 首页 > article >正文

从零到可运行:手把手在Ubuntu 20.04上为YOLOv5搭建TensorRT加速环境(含模型转换实战)

从零到可运行手把手在Ubuntu 20.04上为YOLOv5搭建TensorRT加速环境含模型转换实战在计算机视觉领域YOLOv5凭借其出色的实时检测性能成为工业界的热门选择。但当我们将训练好的模型部署到实际生产环境时往往会面临推理速度不足的瓶颈。这时NVIDIA的TensorRT引擎便成为解锁GPU加速潜力的关键钥匙。本文将带您从零开始在Ubuntu 20.04系统上构建完整的TensorRT加速环境并完成YOLOv5模型从PyTorch到TensorRT引擎的完整转换流程。1. 环境准备与依赖检查1.1 基础环境验证在开始TensorRT安装前需要确保系统已具备以下基础组件CUDA Toolkit 11.xTensorRT 8.x系列对CUDA 11.x有最佳支持cuDNN 8.2深度学习加速库版本需与CUDA匹配Python 3.7-3.9推荐使用conda管理虚拟环境通过以下命令验证基础环境# 检查CUDA版本 nvcc --version # 检查cuDNN版本 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 # 检查Python版本 python3 --version1.2 驱动兼容性处理当遇到NVIDIA驱动通信失败时可尝试以下解决方案# 安装DKMS管理工具 sudo apt install dkms # 重建驱动模块 sudo dkms install -m nvidia -v $(modinfo -F version nvidia) # 重启后验证 nvidia-smi注意若系统提示Secure Boot冲突需进入BIOS将其禁用2. TensorRT定制化安装2.1 版本选择策略根据CUDA 11.8环境我们选择TensorRT 8.5.2版本其组件对应关系如下组件版本要求检测命令CUDA11.8nvcc -VcuDNN8.6.0cat /usr/include/cudnn_version.hTensorRT8.5.2dpkg -l2.2 分步安装流程下载对应版本的TensorRT deb包按顺序安装主包和附加组件sudo dpkg -i nv-tensorrt-repo-ubuntu2004-cuda11.8-trt8.5.2.2-ga-20220805_1-1_amd64.deb sudo apt-key add /var/nv-tensorrt-repo-ubuntu2004-cuda11.8-trt8.5.2.2/7fa2af80.pub sudo apt update sudo apt install tensorrt验证安装成功import tensorrt as trt print(trt.__version__) # 应输出8.5.2.x3. YOLOv5模型转换实战3.1 权重文件预处理使用tensorrtx项目的转换工具生成中间权重# 克隆tensorrtx仓库 git clone https://github.com/wang-xinyu/tensorrtx.git # 转换PyTorch模型到.wts格式 python3 tensorrtx/yolov5/gen_wts.py -w yolov5s.pt -o yolov5s.wts关键参数说明-w输入的PyTorch模型路径-o输出的权重文件路径-t可选参数指定模型类型n/s/m/l/x3.2 模型参数适配修改yololayer.h中的关键配置static constexpr int CLASS_NUM 80; // 根据实际类别数修改 static constexpr int INPUT_H 640; // 输入图像高度 static constexpr int INPUT_W 640; // 输入图像宽度提示这些参数必须与原始训练配置完全一致否则会导致精度下降4. 引擎编译与优化4.1 CMake编译流程mkdir build cd build cmake .. -DCMAKE_CUDA_COMPILER/usr/local/cuda/bin/nvcc make -j$(nproc)编译过程中可能遇到的典型问题及解决方案错误类型解决方法找不到CUDA指定-DCUDA_TOOLKIT_ROOT_DIR/usr/local/cuda版本不匹配检查CMakeLists.txt中的CUDA_ARCH设置链接失败确认LD_LIBRARY_PATH包含TensorRT库路径4.2 引擎生成命令./yolov5 -s yolov5s.wts yolov5s.engine s # s对应yolov5s模型支持的模型类型参数n/s/m/l/x标准YOLOv5模型n6/s6/m6/l6/x6带P6输出的变体5. 性能对比与调优5.1 基准测试方法使用相同测试集对比PyTorch和TensorRT的推理速度# PyTorch推理示例 import torch model torch.load(yolov5s.pt) results model(test_images) # TensorRT推理命令 ./yolov5 -d yolov5s.engine ../test_images5.2 典型加速效果测试环境RTX 3080 Ubuntu 20.04指标PyTorchTensorRT提升幅度吞吐量(FPS)156342119%延迟(ms)6.42.954.7%显存占用(MB)124089028.2%5.3 高级优化技巧精度校准使用FP16或INT8量化./yolov5 -s yolov5s.wts yolov5s_fp16.engine s --fp16动态形状支持修改yolov5.cpp中的OPT_SHAPE参数多流处理通过-b参数指定batch size6. 生产环境部署建议在实际部署中我们还需要考虑以下关键因素服务化封装使用C封装为gRPC服务添加健康检查接口实现动态模型热加载资源监控# 实时监控GPU使用 nvidia-smi -l 1 # 查看进程资源占用 htop -p $(pgrep yolov5)故障恢复机制实现看门狗进程设置显存溢出保护日志分级管理7. 常见问题排错指南7.1 模型转换错误现象转换后检测结果异常检查gen_wts.py的输入输出路径确认模型版本匹配v6.0/v7.0验证类别数是否一致7.2 推理性能下降排查步骤检查引擎生成日志验证输入数据预处理对比原始模型精度7.3 内存泄漏处理在长期运行的推理服务中建议定期检查GPU内存使用使用valgrind检测内存问题实现资源自动回收机制通过这套完整的TensorRT加速方案我们在实际项目中实现了YOLOv5模型3倍以上的推理速度提升。特别是在边缘计算设备上这种优化带来的性能改善更为显著。

相关文章:

从零到可运行:手把手在Ubuntu 20.04上为YOLOv5搭建TensorRT加速环境(含模型转换实战)

从零到可运行:手把手在Ubuntu 20.04上为YOLOv5搭建TensorRT加速环境(含模型转换实战) 在计算机视觉领域,YOLOv5凭借其出色的实时检测性能成为工业界的热门选择。但当我们将训练好的模型部署到实际生产环境时,往往会面临…...

告别手动点点点:用Python脚本一键启动CANoe测试(附TestModule/vTESTstudio配置避坑指南)

告别手动点点点:Python全自动CANoe测试框架实战指南 每天重复点击相同的按钮,等待漫长的界面响应,然后在不同的配置文件中来回切换——这可能是车载测试工程师最熟悉的噩梦。当项目周期压缩到以小时计算时,那些隐藏在CANoe界面背后…...

PDH锁频原理看不懂?别怕,这篇用‘开车找车位’的比喻给你讲明白(附Moku实测)

PDH锁频原理看不懂?别怕,这篇用‘开车找车位’的比喻给你讲明白(附Moku实测) 光学实验室里最让人头疼的场景之一,就是看着文献里那些PDH锁频技术的公式和框图发愣。误差信号、相位调制、解调……每个词都认识&#xff…...

智能编程搭档:如何用快马平台的AI模型优化你的蓝桥杯嵌入式代码

最近在准备蓝桥杯嵌入式比赛时,遇到了一个棘手的问题:我的传感器数据采集和LCD显示系统总是卡顿,刷新速度慢得像老牛拉车。经过一番折腾,终于找到了解决方案,今天就来分享一下如何用AI辅助优化嵌入式代码的实战经验。 …...

APP加固防Hook效果哪家强?实测RASP与代码虚拟化技术差距

“我们的支付SDK被Hook了,用户下单金额被篡改,一晚上损失了几十万。”这是某电商平台安全负责人亲口告诉我的惨痛经历。在外挂与黑产眼里,Hook技术是攻击移动应用的“万能钥匙”,通过篡改函数返回值、修改内存数据,可以…...

BilibiliDown:你的专属B站视频离线收藏库

BilibiliDown:你的专属B站视频离线收藏库 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliDo…...

003-JSON-Output-Control

JSON 格式输出控制:如何让 AI 每次都返回完美的结构化数据?💡 摘要:大模型天生不擅长输出严格的 JSON 格式。本文教你如何通过 Schema 验证、自动修复和提示工程,确保 AI 每次都返回合法、可用的结构化数据。引言 你让…...

别再只抓802.11了!Wireshark解密WPA/WEP实战:从抓包到看清网页访问的完整流程

无线网络数据包解密实战:从802.11到应用层的完整解析 当你第一次打开Wireshark捕获无线网络数据包时,满屏的802.11协议帧可能会让你感到困惑——那些期待的HTTP请求、TCP连接和DNS查询都去哪了?这不是你的操作有问题,而是无线加密…...

2026年新高中高考英语大纲词汇表3500个电子版PDF(含正序版、乱序版和默写版)

小为整理了2026年高中英语大纲词汇表3500个完整版,PDF电子版,可下载打印,包含内容:高中英语大纲词汇正序版高中英语大纲词汇乱序版高中英语大纲词汇默写版(包含汉译英和英译汉)正序版乱序版高中英语大纲词下…...

MCP 2026日志分析智能告警配置实战手册(含YAML模板库+动态阈值算法白皮书)

更多请点击: https://intelliparadigm.com 第一章:MCP 2026日志分析智能告警配置概览 MCP 2026 是新一代云原生可观测性平台的核心组件,其日志分析模块支持基于语义理解与动态阈值的智能告警机制。该能力依托内置的轻量级规则引擎&#xff0…...

前后端跨域彻底弄懂:前端代理、Nginx线上部署、后端到底要不要配CORS?

文章目录一、前言二、先搞懂核心:什么是跨域?为什么后端才能根治?1. 跨域的本质:不是后端不让访问,是浏览器不让过2. 什么是CORS?三、本地开发环境:前端配Proxy代理,后端要不要管跨域…...

中级OpenGL教程 004:为几何体注入法线灵魂

✨3D 渲染进阶|为 Geometry 几何体注入法线灵魂:从数据到渲染全流程指南Bilibili 同步视频🎯 核心目标:为几何体补齐法线属性🔍 核心认知:顶点重合≠数据复用📝 Step 1:手写立方体法…...

面向智能客服的对话状态跟踪与策略优化,智能客服的核心突破:从“听不懂人话”到精准理解用户意图——对话状态跟踪与策略优化完全指南

目录 第一部分:什么是对话状态跟踪?——智能客服的“工作记忆” 1.1 一个典型案例让你秒懂DST 1.2 状态跟踪的三个核心挑战 第二部分:从规则到预训练模型——DST的技术演进 2.1 基于规则和词典的早期方法 2.2 基于神经网络的方法——TRADE和SGD等经典模型 2.3 预训练…...

手把手教你用Vivado 2019.1在Kintex-7上搭建10G UDP协议栈(附12套源码)

Kintex-7 FPGA实战:从零构建10G UDP通信系统的完整指南 当我在实验室第一次看到Kintex-7开发板通过10G光纤传输数据时,那种流畅的数据流简直令人着迷。不同于传统的千兆以太网,10G网络带来的性能飞跃让实时高清视频传输、高速数据采集等应用成…...

资源紧巴巴的MCU,如何让PID控制又快又准?聊聊内存与执行时间的平衡术

资源紧巴巴的MCU,如何让PID控制又快又准?聊聊内存与执行时间的平衡术 在无人机电调、精密仪器等嵌入式控制领域,低成本MCU(如STM32F0、GD32)凭借其性价比优势占据重要地位。但这类芯片往往只有十几KB RAM和几十MHz主频…...

从手机到IoT:eMMC的RPMB安全分区,如何守护你的设备密钥与计数器

从手机到IoT:eMMC的RPMB安全分区如何守护设备密钥与计数器 在移动设备和物联网终端的安全架构中,密钥管理和防重放攻击始终是核心挑战。当Bootloader需要验证固件完整性时,当智能门锁需要保护开锁凭证时,当医疗设备需要确保处方数…...

ESP32S3新手避坑:用IDF5.0驱动GT911触摸屏,我踩过的三个雷都给你填平了

ESP32S3实战:GT911触摸屏驱动开发中的三大陷阱与深度解决方案 第一次把GT911触摸屏接到ESP32S3开发板上时,我以为这不过是个简单的I2C设备驱动问题——毕竟网上能找到不少现成的代码。但真正开始调试后才发现,从芯片版本差异到寄存器操作时序…...

LVGL模拟器实战:不用开发板,在VS Code里搞定UI原型和代码生成

LVGL模拟器实战:不用开发板,在VS Code里搞定UI原型和代码生成 在嵌入式GUI开发领域,LVGL以其轻量级和高度可定制的特性赢得了广泛青睐。但传统开发流程中,设计师和工程师往往需要反复烧录硬件才能验证UI效果,这种"…...

深入DDR3物理层:从MT41J128M16手册的CK#、ODT、ZQ校准,到FPGA硬件设计要点

深入DDR3物理层:从MT41J128M16手册的CK#、ODT、ZQ校准,到FPGA硬件设计要点 1. DDR3物理层设计的核心挑战 对于硬件工程师而言,DDR3接口设计堪称高速电路设计的"试金石"。MT41J128M16这类DDR3 SDRAM芯片虽然逻辑时序由控制器管理&am…...

如何免费修复损坏二维码:终极可视化像素级恢复工具完整指南

如何免费修复损坏二维码:终极可视化像素级恢复工具完整指南 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾经遇到过那些无法扫描的二维码?想象一下&#xff0…...

保姆级教程:用Linux Mint打造高效开发环境,从系统设置到顺手工具

从零构建Linux Mint高效开发环境:系统调优与生产力工具全指南 刚接触Linux Mint的开发者常会陷入两难——这个以优雅著称的发行版虽然开箱即用,但默认配置往往无法满足高强度开发需求。我曾见证一位同事在项目deadline前夜,因包管理器卡在海外…...

告别安卓模拟器!Windows系统直接安装APK的终极指南

告别安卓模拟器!Windows系统直接安装APK的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为电脑上无法直接运行安卓应用而烦恼吗?…...

GPT-5.5 Codex国内配置全攻略,三平台详细指南

作者:小卢 | 从事软件开发8年,专注AI编程工具评测 引言 作为一名有8年开发经验的技术老兵,我一直在关注AI编程工具的发展。最近GPT-5.5 Codex在国内环境下的使用需求激增,但很多开发者反映配置过程遇到各种问题。经过深度实测&am…...

农业IoT数据“看不见、看不懂、来不及”?用这3个PHP类库+2个CSS技巧,3小时上线可交互作物生长看板

更多请点击: https://intelliparadigm.com 第一章:农业IoT数据“看不见、看不懂、来不及”的本质困境 在广袤农田部署的土壤湿度传感器、气象站、无人机遥感节点与边缘网关,每天产生数TB级时序数据。然而,这些数据常陷入三重断裂…...

如何快速掌握大疆无人机固件自由:DankDroneDownloader终极指南

如何快速掌握大疆无人机固件自由:DankDroneDownloader终极指南 【免费下载链接】DankDroneDownloader A Custom Firmware Download Tool for DJI Drones Written in C# 项目地址: https://gitcode.com/gh_mirrors/da/DankDroneDownloader 你是否对大疆无人机…...

Go语言看门狗守护进程:实现进程监控与自动重启的高可用方案

1. 项目概述:一个守护进程的诞生与使命最近在折腾一个需要长时间稳定运行的后台服务,最头疼的问题就是进程意外退出。手动重启?太原始。写个脚本定时检查?不够优雅,也容易有延迟。直到我在GitHub上看到了hrygo/opencla…...

RISC-V CLIC中断机制实战:用中断咬尾优化你的嵌入式实时系统性能

RISC-V CLIC中断机制实战:用中断咬尾优化你的嵌入式实时系统性能 在嵌入式系统开发中,中断处理效率直接影响着实时性和系统吞吐量。传统的中断处理方式往往伴随着频繁的上下文保存与恢复,这不仅消耗宝贵的CPU周期,还增加了栈空间的…...

开关电源调制器原理与电流模式控制技术

1. 开关电源调制器基础解析在电力电子系统中,调制器如同交响乐团的指挥,精准协调着功率开关的启闭节奏。作为电源转换的核心控制单元,调制器通过调节脉冲宽度来实现能量的精确分配。这种看似简单的开关动作背后,隐藏着复杂的数学建…...

深度解析Cursor AI编辑器:重塑人机协作编程工作流

1. 从零到一:深度解析Cursor AI编辑器的核心价值与上手心法 如果你是一名开发者,最近一定在技术社区里频繁听到“Cursor”这个名字。它不仅仅是一个披着AI外衣的代码编辑器,更是一个试图重新定义“人机协作编程”工作流的革命性工具。我使用C…...

【紧急预警】2024年Q3起,主流农业IoT平台将停用HTTP轮询接口!立即升级你的PHP数据采集层(含MQTTv5迁移checklist与兼容性测试包)

更多请点击: https://intelliparadigm.com 第一章:农业IoT数据采集架构演进与HTTP轮询退役背景 传统农业IoT系统长期依赖基于HTTP的定时轮询(Polling)机制获取传感器数据,例如土壤温湿度、光照强度及CO₂浓度等。该模…...