yolov7导出可被trt解析的onnx

本文介绍了如何从Yolov7的u5分支导出ONNX模型,并强调了在master分支下导出时的注意事项,包括需要传递--grid参数。还提到onnxsim简化模型时遇到的scatternd算子问题,以及通过修改导出代码避免该问题的方法。提供了C++和Python API的TensorRT部署代码示例和相关资源链接。
摘要由CSDN通过智能技术生成

(1)注意要使用分支u5版(不需要任何修改直接导出即可)的进行onnx导出(导出后再进行simpify可以进一步消除导出onnx中存在的unsqueeze、gather、shape算子)

(2)如果使用master中的导出onnx,要获得cat三个检测层的结果,要传入--grid

而且发现onnxsim会报错。大老师已经可以成功简化,但是依然存在scatternd算子,这个算子存在就意味着要使用这个插件(虽然高版本的trt已经有了,但是依然要加载官方插件,还是很烦的!)

所以为了避免这个scatternd算子,可以修改导出代码,具体修改后面再搞。

c++部署代码如下:

GitHub - hewen0901/yolov7_trt: yolov7目标检测算法的c++ tensorrt部署代码

还有yolou、杜老的都可以、GitHub - Linaom1214/TensorRT-For-YOLO-Series: tensorrt for yolo series, nms plugin support

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
要将YOLOv8模型转换为TensorRT(TRT)格式,您可以按照以下步骤进行操作: 1. 安装TensorRT:确保您已经正确安装了NVIDIA TensorRT,并且已经配置了相应的CUDA和CUDNN版本。 2. 导出YOLOv8模型:使用ultralytics/yolov5库或其他工具,将YOLOv8模型导出ONNX格式。确保您已经将模型保存为`.onnx`文件。 3. 使用TensorRT进行转换:使用TensorRT Python API加载导出ONNX模型,并将其转换为TensorRT格式。您可以使用以下代码作为参考: ```python import tensorrt as trt TRT_LOGGER = trt.Logger(trt.Logger.WARNING) precision = 'fp16' # 可以选择 'fp32' 或 'fp16' def build_engine(onnx_file_path): explicit_batch = 1 << (int)(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH) with trt.Builder(TRT_LOGGER) as builder, builder.create_network(explicit_batch) as network, trt.OnnxParser(network, TRT_LOGGER) as parser: builder.max_workspace_size = 1 << 28 # 设置最大的workspace大小 builder.fp16_mode = True if precision == 'fp16' else False # 根据指定精度设置builder的模式 with open(onnx_file_path, 'rb') as model: if not parser.parse(model.read()): print('解析ONNX模型失败') for error in range(parser.num_errors): print(parser.get_error(error)) return None return builder.build_cuda_engine(network) onnx_file_path = '/path/to/yolov8.onnx' engine = build_engine(onnx_file_path) if engine is not None: trt.save_engine(engine, '/path/to/yolov8.trt') ``` 在此代码中,您需要将`onnx_file_path`替换为YOLOv8模型ONNX文件路径,并将`'/path/to/yolov8.trt'`替换为您希望保存TensorRT模型的路径。 4. 运行TensorRT模型:一旦转换完成并保存了TensorRT模型,您就可以使用TensorRT执行推理。您可以使用TensorRT Python API或使用C++进行推理。 这是一个基本的转换YOLOv8模型为TensorRT的步骤。请注意,具体的实施细节可能因YOLOv8的特定版本、TensorRT版本和使用的库而有所不同。因此,建议参考相关文档和示例代码以获取更准确的步骤和细节。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曙光_deeplove

你的鼓励是我努力的最大源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值