tensorRT onnx中属性名相同,但实际大小不同生成问题

onnx转TensorRT的问题

TensorRT7.0.1.1转换没出问题

TensorRT8.2.4.2一直报下面的错误

4: [shapeCompiler.cpp::nvinfer1::builder::DynamicSlotBuilder::evaluateShapeChecks::832] Error Code 4: Internal Error (kOPT values for profile 0 violate shape constraints: condition '==' violated. IAssertionLayer (Unnamed Layer* 5) [Assertion]: condition[0] is false: (EQUAL (# 2 (SHAPE input0)) (# 2 (SHAPE input1))). For input: 'input0' all named dimensions that share the same name must be equal. Note: Named dimensions were present on the following axes: 2 (name: 'height'), 2 (name: 'height'))

原因是:

input0 input1 input2 在实际使用的时候,width height大小是/2递减的,而在保存onnx的时候,命名的时候是相同的(上一辈留下的问题,心里苦)

 TensorRT8.2.4.2中要求,相同name的维度需要一致,input0中叫height,如果在input1中也有相同名字的height,那么这两个大小必须一致,不然就会报错。

解决方法,生成的onnx的时候,分别命名即可:

增加onnx直接修改名字的代码:

import onnx
import torch
import argparse
import os


def Test_Onnx_Change_Param_Name(onnx_model):
    for input in onnx_model.graph.input:
            dim1 = input.type.tensor_type.shape.dim[2]
            dim2 = input.type.tensor_type.shape.dim[3]
            dim1.dim_param = "height" + input.name[-1]
            dim2.dim_param = "width" + input.name[-1]

    for output in onnx_model.graph.output:
            dim1 = output.type.tensor_type.shape.dim[2]
            dim2 = output.type.tensor_type.shape.dim[3]
            dim1.dim_param = "height" + output.name[-1]
            dim2.dim_param = "width" + output.name[-1]


def apply(transform, infile, outfile):
    model = onnx.load(infile)
    transform(model)
    onnx.save(model, outfile)





parser = argparse.ArgumentParser(description='Configurations for Change Onnx Name')
parser.add_argument('--onnx_path', type=str, default=r'D:\networks\deblur\rst/model.onnx', help='src onnx path')
parser.add_argument('--save_new_path', type=str, default=r'D:\networks\deblur\rst/modified.onnx', help='new onnx path')
args = parser.parse_args()


if __name__ == "__main__":
    apply(Test_Onnx_Change_Param_Name, args.onnx_path, args.save_new_path)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ListenAlone

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值