yolov5模型pt转engine

目录

  • 1. 环境准备
    • 1.1 安装tensorrt
      • 1.1.1 pip安装
      • 1.1.2 压缩包安装
  • 2. pt转engine
  • 3. 转换过程中遇到的问题

1. 环境准备

1.1 安装tensorrt

1.1.1 pip安装

pip install tensorrt 

1.1.2 压缩包安装

很可能会失败,最保险的方法是下载tensorRT的压缩包,比如:下载TensorRT-8.4.3.1
文件结构:
在这里插入图片描述
在这里插入图片描述
安装

pip install tensorrt-8.4.3.1-cp37-none-win_amd64.whl

配置环境变量
在这里插入图片描述

2. pt转engine

进入yolov5-7.0目录下(注意:必须是6.1以上,6.0的export.py不支持

python export.py --weights E:\code\other\tph-yolov5-main\runs\train\exp\weights\last.pt --include engine --imgsz 1536 --device 0 --half

3. 转换过程中遇到的问题

使用yolov5-6.1的export.py转换模型时,有时候执行2中的脚本,转出来的engine竟然识别不出任何目标,于是尝试先转onnx,再转engine,同时注释export.py中的export_engine函数中转onnx的代码,结果竟然成功了。
如下:
在这里插入图片描述

代码:

def export_engine(model, im, file, train, half, simplify, workspace=4, verbose=False, prefix=colorstr('TensorRT:')):# YOLOv5 TensorRT export https://developer.nvidia.com/tensorrttry:check_requirements(('tensorrt',))if trt.__version__[0] == '7':  # TensorRT 7 handling https://github.com/ultralytics/yolov5/issues/6012grid = model.model[-1].anchor_gridmodel.model[-1].anchor_grid = [a[..., :1, :1, :] for a in grid]export_onnx(model, im, file, 12, train, False, simplify)  # opset 12model.model[-1].anchor_grid = gridelse:  # TensorRT >= 8check_version(trt.__version__, '8.0.0', hard=True)  # require tensorrt>=8.0.0#export_onnx(model, im, file, 13, train, False, simplify)  # opset 13onnx = file.with_suffix('.onnx')LOGGER.info(f'\n{prefix} starting export with TensorRT {trt.__version__}...')assert im.device.type != 'cpu', 'export running on CPU but must be on GPU, i.e. `python export.py --device 0`'assert onnx.exists(), f'failed to export ONNX file: {onnx}'f = file.with_suffix('.engine')  # TensorRT engine filelogger = trt.Logger(trt.Logger.INFO)if verbose:logger.min_severity = trt.Logger.Severity.VERBOSEbuilder = trt.Builder(logger)config = builder.create_builder_config()config.max_workspace_size = workspace * 1 << 30flag = (1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))network = builder.create_network(flag)parser = trt.OnnxParser(network, logger)if not parser.parse_from_file(str(onnx)):raise RuntimeError(f'failed to load ONNX file: {onnx}')inputs = [network.get_input(i) for i in range(network.num_inputs)]outputs = [network.get_output(i) for i in range(network.num_outputs)]LOGGER.info(f'{prefix} Network Description:')for inp in inputs:LOGGER.info(f'{prefix}\tinput "{inp.name}" with shape {inp.shape} and dtype {inp.dtype}')for out in outputs:LOGGER.info(f'{prefix}\toutput "{out.name}" with shape {out.shape} and dtype {out.dtype}')half &= builder.platform_has_fast_fp16LOGGER.info(f'{prefix} building FP{16 if half else 32} engine in {f}')if half:config.set_flag(trt.BuilderFlag.FP16)with builder.build_engine(network, config) as engine, open(f, 'wb') as t:t.write(engine.serialize())LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')return fexcept Exception as e:LOGGER.info(f'\n{prefix} export failure: {e}')

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

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

相关文章

Pyecharts入门

数据可视化 Pyecharts简介 Apache ECharts 是一个由百度开源的数据可视化&#xff0c;凭借着良好的交互性&#xff0c;精巧的图表设计&#xff0c;得到了众多开发者的认可。而 Python 是一门富有表达力的语言&#xff0c;很适合用于数据处理。当数据分析遇上数据可视化时&#…

冶金工业5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

冶金工业5G智能工厂工业物联数字孪生平台&#xff0c;推进制造业数字化转型。传统生产方式难以满足现代冶金工业的发展需求&#xff0c;数字化转型成为必然趋势。通过引入5G、工业物联网和数字孪生等先进技术&#xff0c;冶金工业可以实现生产过程智能化、高效化和绿色化&#…

车辆网络安全开发

随着智能汽车的快速发展&#xff0c;车载软件的数量和复杂性不断增加&#xff0c;同时也带来了网络安全风险。智能汽车软件开发是实现车辆智能化、信息化的重要手段。在智能汽车软件的开发过程中&#xff0c;开发人员需要遵循一定的规范和标准&#xff0c;以确保软件的质量和安…

el-dialog使用::v-deep()穿透设置样式不生效,解决办法亲测有效!

场景&#xff1a; <el-dialogv-model"dialogVisible"width"800px":before-close"beforeClose"append-to-body:close-on-click-modal"false"title"增加文档"><template #footer><div style"text-align:c…

【MDK5问题】:MDK中的jlink正常下载,但是板子却没有任何反应

1、问题现象&#xff1a; 1、在MDK5中&#xff0c;jlink配置项如下图&#xff0c;没有看到异常情况和配置&#xff1a; 2、点击load下载到板子上&#xff0c;出现的现象是&#xff0c;下载提示下载完成&#xff0c;但是&#xff0c;板子却没有任何反应&#xff08;程序实现应该…

C++ | Leetcode C++题解之第190题颠倒二进制位

题目&#xff1a; 题解&#xff1a; class Solution { private:const uint32_t M1 0x55555555; // 01010101010101010101010101010101const uint32_t M2 0x33333333; // 00110011001100110011001100110011const uint32_t M4 0x0f0f0f0f; // 000011110000111100001111000011…

高考填报志愿策略 做好这几个步骤很重要

怎么填报合适的院校&#xff0c;怎么填报合适的专业&#xff0c;有时候比考试的分数还要重要&#xff0c;所谓“7分考&#xff0c;3分报”&#xff0c;要避免高分第就&#xff0c;那就得理清头绪&#xff0c;一起来了解一下高考填报志愿策略吧。 第1步从了解分数的基础上来了解…

如何使 git pull origin master 不出现 Merge branch ‘master‘ 提交信息?

文章目录 0. 引言1.使用 git pull --rebase2. 配置 Git 默认使用 rebase3. rebase 的冲突解决5. 举例说明 0. 引言 当你执行 git pull origin master 时&#xff0c;Git 默认会执行 git fetch 紧接着 git merge&#xff0c;这可能会导致产生 “Merge branch ‘master’ of…”…

19、删除链表的倒数第n个节点

1、题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 …

总结一些LLM算法岗遇到的八股

总结一些我被问到的题和常见的题目&#xff0c;答案有不对的欢迎指出。 Batch Norm和Layer Norm的定义及区别&#xff1f; BN 批量归一化&#xff1a;以进行学习时的mini-batch为单位&#xff0c;按mini-batch进行正规化。具体而言&#xff0c;就是进行使数据分布的均值为0、…

PHP常见安全漏洞和防御措施

本文由 ChatMoney团队出品 sql注入 漏洞描述 当应用程序将用户输入直接拼接到sql语句中时&#xff0c;攻击者可以插入恶意sql代码来篡改原始查询&#xff0c;获取或破坏数据库信息。 防御措施 预处理语句 使用预处理语句可以有效防止sql注入&#xff0c;因为参数值不会被视…

AI 编程探索- iOS动态标签控件

需求分析&#xff1a; 标签根据文字长度&#xff0c;自适应标签居中显示扩展 超过内容显示范围&#xff0c;需要换行显示&#xff0c;且保持居中显示 AI实现过程 提问&#xff1a; 回答&#xff1a; import UIKit import SnapKitclass DynamicLabelsContainerView: UIView…

命令行中关于windows hash md5 , mac hash md5 , linux hash md5 文件校验方式

md5&#xff0c; sha-1 &#xff0c;sha256. windows certutil -hashfile filename md5certutil -hashfile filename sha1certutil -hashfile filename sha256macos 平台 md5 filenameshasum -a 1 filenameshasum -a 256 filenamelinux 平台 md5sum filenameshasum -a 1 fil…

Docker Compose:多容器应用的管理利器

在现代应用开发中&#xff0c;微服务架构已成为主流。管理和编排多个容器应用变得至关重要。Docker Compose 是一个强大的工具&#xff0c;通过一个简单的 YAML 文件定义和运行多容器应用。本文将详细介绍 Docker Compose 的基本概念、安装、用法以及一个实际的示例&#xff0c…

CEWEY C9自动猫砂盆测评:千元级安全实用稳定输出,解放铲屎官双手!

最近邻居姐姐成为新晋铲屎官&#xff0c;猫咪的吃喝还好&#xff0c;因为是打工人每天要早出晚归&#xff0c;铲屎这项不能等待的任务就让她很苦恼&#xff0c;猫砂盆太脏猫咪要么憋着不上要么乱拉乱尿&#xff0c;搞得小姐姐身心俱疲。看着她日渐憔悴的脸色&#xff0c;我这个…

Linux 动态监控系统

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处&#xff0c;在于top在执行一段时间可以更新正在运行的的进程。 一、基本指令 top top -d&#xff1a; 秒数 :每隔设定值秒数更新&#xff0c;未设置下默认为3秒 top -i:使top不显示任何闲置或者僵死进…

C++ 20新特性之语法糖

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 概述 C 20中引入了一些简化编程工作的语法上的新特性&#xff0c;我们暂且美其名曰&#xff1a;“语法糖”。下面&#xff0c;我们将对这些“语…

chkstk.asm未经处理的异常

【1】异常图片 【2】异常原因 运行程序时&#xff0c;程序尝试分配的内存超出了当前线程的堆栈边界 【3】定位&#xff1a;如下图&#xff0c;数组分配过大

什么悬挂指针,如何避免(C/C++)

悬挂指针&#xff08;Dangling Pointer&#xff09; 悬挂指针是指向已经被释放或者不再存在的内存区域的指针。当程序尝试使用这样的指针访问或修改已释放的内存时&#xff0c;会导致未定义行为&#xff0c;通常是程序崩溃或数据损坏。 示例代码&#xff08;C&#xff09; #…

定时触发-uniapp + uniCloud 订阅消息实战教程(三)

上一节已经对云函数有了一定的了解&#xff0c;但是&#xff0c;为了发送订阅消息&#xff0c;只会云函数还是差了那么一点意思&#xff0c;所以接下来的这一节&#xff0c;将带领大家熟悉一下定时触发。 熟悉定时触发 如果云函数需要定时/定期执行&#xff0c;即定时触发&…