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

Ultralytics导出的Engine模型直接加载报错

方法1: 注销掉exporter.py文件夹对应的部分

with build(network, config) as engine, open(f, "wb") as t:
    # Metadata
    meta = json.dumps(self.metadata)
    t.write(len(meta).to_bytes(4, byteorder="little", signed=True))
    t.write(meta.encode())
    # Model
    t.write(engine if is_trt10 else engine.serialize())

替换为

with build(network, config) as engine, open(f, "wb") as t:
    # Metadata
    # meta = json.dumps(self.metadata)
    # t.write(len(meta).to_bytes(4, byteorder="little", signed=True))
    # t.write(meta.encode())
    # Model
    t.write(engine if is_trt10 else engine.serialize())

方法2:加载模型时去掉元数据
python环境下

with open(engine_path, 'rb') as f, trt.Runtime(TRT_LOGGER) as runtime:
    engine = runtime.deserialize_cuda_engine(f.read())

替换为

with open(engine_path, 'rb') as f:
    metadata_length_bytes = f.read(4)
    metadata_length = int.from_bytes(metadata_length_bytes, byteorder='little', signed=True)
    f.seek(metadata_length, 1)
    engine_data = f.read()
with open(engine_path, 'rb') as f, trt.Runtime(TRT_LOGGER) as runtime:
    engine = runtime.deserialize_cuda_engine(engine_data)

cpp环境下

std::ifstream file_ptr(model_path_engine, std::ios::binary);
size_t size = 0;
file_ptr.seekg(0, file_ptr.end);
size = file_ptr.tellg();
file_ptr.seekg(0, file_ptr.beg);
char* model_stream = new char[size];
file_ptr.read(model_stream, size);
file_ptr.close();
nvinfer1::IRuntime* runtime = nvinfer1::createInferRuntime(logger);
nvinfer1::ICudaEngine* engine = runtime->deserializeCudaEngine(model_stream, size);
delete[] model_stream;

替换为

std::ifstream engineFile(model_path_engine, std::ios::binary);
int32_t metadataLength = 0;
engineFile.read(reinterpret_cast<char*>(&metadataLength), sizeof(metadataLength));
engineFile.seekg(metadataLength, std::ios::cur);
std::vector<char> engineData((std::istreambuf_iterator<char>(engineFile)),
	std::istreambuf_iterator<char>());
engineFile.close();
nvinfer1::IRuntime* runtime = nvinfer1::createInferRuntime(logger);
nvinfer1::ICudaEngine* engine = runtime->deserializeCudaEngine(engineData.data(), engineData.size(), nullptr);
http://www.dtcms.com/a/40997.html

相关文章:

  • DeepSeek 损失函数、奖励函数、训练过程
  • Docker01 - docker快速入门
  • MFC获取所有硬件厂商和序列号
  • JSX 实现列表渲染
  • 为AI聊天工具添加一个知识系统 之125 详细设计之66 智能语义网络
  • DeepSeek赋能智慧港口:点亮全球航运的智慧灯塔,开启智能航运新纪元
  • Vue框架的使用 搭建打包 Vue的安全问题(Xss,源码泄露)
  • Vue3状态管理新选择:Pinia使用完全指南
  • 和鲸科技携手四川气象,以 AI 的力量赋能四川气象一体化平台建设
  • 课程2. 用PyTorch训练神经网络与梯度下降
  • NAT 技术:网络中的 “地址魔术师”
  • a_init: Unable to get log name. Retval:[-4]是什么故障
  • javaweb将上传的图片保存在项目文件webapp下的upload文件夹下
  • PyCharm 的使用 + PyCharm快捷键 + 切换中文界面
  • 管理后台环境配置
  • C++ 中 cin 和 cout 教程
  • Exoplayer(MediaX)实现音频变调和变速播放
  • git -学习笔记
  • vscode下载安装教程(附安装包)vscode图文安装教程最新版
  • leetcode707----设计链表【链表增删改打印等操作】
  • 深入理解Java反射机制:从基础到高级应用
  • vue3表单验证的时候访问接口如果有值就通过否则不通过.主动去触发校验
  • MySQL分库分表之带来查询相关问题
  • 【洛谷贪心算法题】P2240部分背包问题
  • JavaScript遍历方式总结
  • 【AI+智造】用DeepSeek支持设备温度、振动、速度、加速度量化数据的应用方案——以常州新能源动力电池制造企业为例
  • 实践教程:使用DeepSeek实现PDF转Word的高效方案
  • DeepSeek 开源狂欢周(二)DeepEP深度技术解析 | 解锁 MoE 模型并行加速
  • IXI MEGA M1和M2 Plus DAW和跳线盘设置
  • 验证环境中为什么要用virtual interface