Yolov8将.pt文件转换为tensorRt的.trt文件(模型部署)

2024-03-11 16:04

本文主要是介绍Yolov8将.pt文件转换为tensorRt的.trt文件(模型部署),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我的环境

确保自己已经有cuda和cudnn的环境基础上进行。

  • cuda:11.7
  • cudnn:适合cuda的版本
  • Anaconda3 [python 3.10]
  • TensorRt-8.6.1

安装TensorRt环境

查看自己的cuda环境,去官网下载适合的win版本。

官网地址

下载后解压,将解压后lib目录添加到环境变量。

找到自己的cuda安装文件目录,将解压后lib文件夹下的lib文件,拷贝到cuda安装目录的x64文件(我这里路径是/cuda/lib/x64)中。

找到自己的cuda安装文件目录,将解压后lib文件夹下的dll文件,拷贝到cuda安装目录下bin的文件中(我这里路径是/cuda/bin)中。

查看python版本并安装对应的tensorrt。tensorrt文件在解压后的python目录。

选择适合的版本。

我的安装命令

pip install "D:\Programming software\TensorRt\TensorRT-8.6.1.6.Windows10.x86_64.cuda-11.8\TensorRT-8.6.1.6\python\tensorrt-8.6.1-cp310-none-win_amd64.whl"

测试

 # 测试import tensorrt as trttrt.__version__

转换

将Yolov8中.pt文件转换为onnx格式

from ultralytics import YOLOmodel = YOLO("best.pt")success = model.export(format="onnx", half=False, dynamic=True, opset=17)print("demo")

将onnx格式转换为tensorRt中的.trt格式。注意,我这里版本为tensorrt-8.6.1,其他版本可能Api 不同。

import tensorrt as trtdef build_engine(onnx_file_path, engine_file_path):# 创建TensorRT logger对象TRT_LOGGER = trt.Logger(trt.Logger.WARNING)# 创建builder和networkbuilder = trt.Builder(TRT_LOGGER)config = builder.create_builder_config()profile = builder.create_optimization_profile()flag = 1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)network = builder.create_network(flag)# 创建ONNX解析器parser = trt.OnnxParser(network, TRT_LOGGER)# 解析ONNX模型with open(onnx_file_path, 'rb') as onnx_file:if not parser.parse(onnx_file.read()):print('ERROR: Failed to parse the ONNX file.')for error in range(parser.num_errors):print(parser.get_error(error))return None# 设置最大工作空间config.max_workspace_size = 1 << 30  # 1GB# 选择模型的输入和输出格式,以及相关优化# 如果你知道模型运行的最大批量大小,你可以在这里设置# 例如: 如果你的模型输入尺寸是 CHW 的 (3, 224, 224) 并且最大批量大小是 8input_name = network.get_input(0).nameprofile.set_shape(input_name, min=(1, 3, 224, 224), opt=(4, 3, 224, 224), max=(8, 3, 224, 224))config.add_optimization_profile(profile)# 根据配置构建引擎engine = builder.build_engine(network, config)# 序列化引擎并保存到文件with open(engine_file_path, 'wb') as engine_file:engine_file.write(engine.serialize())return engine# ONNX模型和TensorRT引擎文件的路径
onnx_model_path = 'best.onnx'
tensorrt_engine_path = 'model.trt'# 构建并保存TensorRT引擎
engine = build_engine(onnx_model_path, tensorrt_engine_path)
if engine:print("ONNX model has been successfully converted to TensorRT engine and saved to", tensorrt_engine_path)

参考:文章

这篇关于Yolov8将.pt文件转换为tensorRt的.trt文件(模型部署)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/798314

相关文章

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Java如何将文件内容转换为MD5哈希值

《Java如何将文件内容转换为MD5哈希值》:本文主要介绍Java如何将文件内容转换为MD5哈希值的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java文件内容转换为MD5哈希值一个完整的Java示例代码代码解释注意事项总结Java文件内容转换为MD5

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

Java实现视频格式转换的完整指南

《Java实现视频格式转换的完整指南》在Java中实现视频格式的转换,通常需要借助第三方工具或库,因为视频的编解码操作复杂且性能需求较高,以下是实现视频格式转换的常用方法和步骤,需要的朋友可以参考下... 目录核心思路方法一:通过调用 FFmpeg 命令步骤示例代码说明优点方法二:使用 Jaffree(FF

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx