【Debug】YOLOv8模型TensorRT INT8 量化踩坑 2

背景&问题:

使用ultralytics官方项目导出engine格式的yolov8模型,用tensorrt框架去推理。这里用的是椒盐大佬开源的TensorRT-CSharp-API项目。
加载模型的时候,会出现如下报错:

Error Code 1: Serialization (Serialization assertion plan->header.magicTag == rt::kPLAN_MAGIC_TAG failed.)

解决方案:

搜索之后,看到ultralytics里某个issues #4597里提到了这个问题。
file: ultralytics/engine/exporter.py, line: 598-600
原因是在文件:ultralytics/engine/exporter.py
大概在def export_engine(self, prefix=colorstr("TensorRT:")):这个函数的最后关于# Write file部分

# Write file
 build = builder.build_serialized_network if is_trt10 else builder.build_engine
 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())

ultralytics的项目会写入一些metadata,导致直接用tensorrt的接口加载engine模型会出现上述的Serialization 相关报错。
# Metadata部分的代码注释掉即可。

tips:metadata注释掉后,导出的engine格式的模型,无法使用ultralytics项目里原来的代码加载模

TensorRT-CSharp-API:https://github.com/guojin-yan/TensorRT-CSharp-API
issues #4597:https://github.com/ultralytics/ultralytics/issues/4597

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值