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

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

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

with build(network, config) as engine, open(f, "wb") as t:# Metadatameta = json.dumps(self.metadata)t.write(len(meta).to_bytes(4, byteorder="little", signed=True))t.write(meta.encode())# Modelt.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())# Modelt.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.mrgr.cn/news/92569.html

相关文章:

  • 【缓存】缓存雪崩与缓存穿透:高并发系统的隐形杀手
  • STM32学习【4】ARM汇编(够用)
  • javaweb文件上传:@MultipartConfig注解与Apache Commons FileUpload对比
  • Visual Studio Code 远程开发方法
  • Metal学习笔记八:纹理
  • 【前端基础】Day 4 CSS盒子模型
  • springboot、deepseek4j、bge-m3和milvus
  • shell脚本的相关练习--->分支结构---->循环结构
  • Asp.Net Web API| React.js| EF框架 | SQLite|
  • 为AI聊天工具添加一个知识系统 之125 详细设计之66 智能语义网络
  • Axure PR 9 中继器 03 翻页控制
  • 51c嵌入式~电路~合集13
  • Mac本地部署Deep Seek R1
  • 如何正确理解mAP、精度、召回率等概念
  • Java类中的this操作
  • 【STM32F103ZET6——库函数】6.PWM
  • 【2025力扣打卡系列】子集型回溯
  • Ubuntu20.04下各类常用软件及库安装汇总
  • 什么是Ollama?什么是GGUF?二者之间有什么关系?
  • Hadoop最新版本hadoop-3.4.1搭建伪分布式集群以及相关报错解决