Toybrick

转换时 fuse_ops 阶段报错:TypeError: 'str' object cannot be interpre...

shinima

新手上路

积分
29
楼主
发表于 3 天前    查看: 105|回复: 6 | [复制链接]    打印 | 只看该作者
错误信息:
系统:CentOS Linux
rknn-toolkit版本:2.3.2
pth->onnx转换时opset:16
E build: Traceback (most recent call last):  File "rknn/api/rknn_log.py", line 344, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper  File "rknn/api/rknn_base.py", line 2007, in rknn.api.rknn_base.RKNNBase.build  File "rknn/api/graph_optimizer.py", line 1931, in rknn.api.graph_optimizer.GraphOptimizer.fuse_ops  File "rknn/api/ir_graph.py", line 2055, in rknn.api.ir_graph.IRGraph.update_dynamic_shapes  File "rknn/api/base_utils.py", line 16, in rknn.api.base_utils.inf_shape_setTypeError: 'str' object cannot be interpreted as an integer

转换脚本:import osimport sysimport astimport tracebackimport onnxfrom rknn.api import RKNNimport numpy as npCONFIG = {    'ONNX_MODEL': 'model.onnx',    'RKNN_MODEL': 'model.rknn',    'target_platform': 'rk3588',    'dynamic_input':[                        [                            [1,3,800,1333], [3, 4], [3], [1, 3, 800, 1333], [3,3], [2]                        ]                    ] }def check_file_exists(file_path):    """Check if file exists"""    if not os.path.exists(file_path):        raise FileNotFoundError(f"File not found: {file_path}")def main():    try:        # Check ONNX model file        check_file_exists(CONFIG['ONNX_MODEL'])        # Create RKNN object        rknn = RKNN(verbose=True, verbose_file='./rknn_build.log')        # Configure model parameters        print('--> Config model')        input_shapes = CONFIG['dynamic_input'][0]  # 拿第一个组合        rknn.config(            target_platform=CONFIG['target_platform'],            mean_values=[[123.675, 116.28, 103.53],[0,0,0,0],[0],[123.675, 116.28, 103.53],[0,0,0],[0]],            std_values=[[58.395, 57.12, 57.375],[1,1,1,1],[1],[58.395, 57.12, 57.375],[1,1,1],[1]],            dynamic_input=CONFIG['dynamic_input']        )        print('Done')        # Load ONNX model        print('--> Load model')        ret = rknn.load_onnx(            model=CONFIG['ONNX_MODEL'],                   )        if ret != 0:            raise Exception('Load model failed!')        # Build model        print('--> Build model')        ret = rknn.build(do_quantization=False)        if ret != 0:            raise Exception('Build model failed!')        print('--> Init runtime')        ret = rknn.init_runtime()        if ret != 0:            raise Exception('Init runtime failed!')                # Export RKNN model        print('--> Export RKNN model')        os.makedirs(os.path.dirname(CONFIG['RKNN_MODEL']), exist_ok=True)        ret = rknn.export_rknn(CONFIG['RKNN_MODEL'])        if ret != 0:            raise Exception('Export RKNN model failed!')    except Exception as e:        print(f"Error: {str(e)}")        traceback.print_exc()        sys.exit(1)    finally:        if 'rknn' in locals():            rknn.release()if __name__ == '__main__':    main()

日志:D correct_ops done.D D fuse_ops ...�[1;31mE�[0m �[1;31mbuild: Traceback (most recent call last):  File "rknn/api/rknn_log.py", line 344, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper  File "rknn/api/rknn_base.py", line 2007, in rknn.api.rknn_base.RKNNBase.build  File "rknn/api/graph_optimizer.py", line 1931, in rknn.api.graph_optimizer.GraphOptimizer.fuse_ops  File "rknn/api/ir_graph.py", line 2055, in rknn.api.ir_graph.IRGraph.update_dynamic_shapes  File "rknn/api/base_utils.py", line 16, in rknn.api.base_utils.inf_shape_setTypeError: 'str' object cannot be interpreted as an integer�[0m�[1;33mW�[0m �[1;33mbuild: ===================== WARN(13) =====================�[0m�[1;31mE�[0m �[1;31mrknn-toolkit2 version: 2.3.2�[0mTraceback (most recent call last):  File "rknn/api/rknn_log.py", line 344, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper  File "rknn/api/rknn_base.py", line 2007, in rknn.api.rknn_base.RKNNBase.build  File "rknn/api/graph_optimizer.py", line 1931, in rknn.api.graph_optimizer.GraphOptimizer.fuse_ops  File "rknn/api/ir_graph.py", line 2055, in rknn.api.ir_graph.IRGraph.update_dynamic_shapes  File "rknn/api/base_utils.py", line 16, in rknn.api.base_utils.inf_shape_setTypeError: 'str' object cannot be interpreted as an integerDuring handling of the above exception, another exception occurred:Traceback (most recent call last):  File "/youtu/fuxi_team3/persons/tianhaoshi/z-torchmodel/onnx2rknn/onnx2rknn.py", line 74, in main    ret = rknn.build(do_quantization=False)  File "/root/miniconda3/envs/py39/lib/python3.9/site-packages/rknn/api/rknn.py", line 198, in build    return self.rknn_base.build(do_quantization=do_quantization, dataset=dataset, expand_batch_size=rknn_batch_size, auto_hybrid=auto_hybrid)  File "rknn/api/rknn_log.py", line 349, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper  File "rknn/api/rknn_log.py", line 95, in rknn.api.rknn_log.RKNNLog.eValueError: Traceback (most recent call last):  File "rknn/api/rknn_log.py", line 344, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper  File "rknn/api/rknn_base.py", line 2007, in rknn.api.rknn_base.RKNNBase.build  File "rknn/api/graph_optimizer.py", line 1931, in rknn.api.graph_optimizer.GraphOptimizer.fuse_ops  File "rknn/api/ir_graph.py", line 2055, in rknn.api.ir_graph.IRGraph.update_dynamic_shapes  File "rknn/api/base_utils.py", line 16, in rknn.api.base_utils.inf_shape_setTypeError: 'str' object cannot be interpreted as an integerError: Traceback (most recent call last):  File "rknn/api/rknn_log.py", line 344, in rknn.api.rknn_log.error_catch_decorator.error_catch_wrapper  File "rknn/api/rknn_base.py", line 2007, in rknn.api.rknn_base.RKNNBase.build  File "rknn/api/graph_optimizer.py", line 1931, in rknn.api.graph_optimizer.GraphOptimizer.fuse_ops  File "rknn/api/ir_graph.py", line 2055, in rknn.api.ir_graph.IRGraph.update_dynamic_shapes  File "rknn/api/base_utils.py", line 16, in rknn.api.base_utils.inf_shape_setTypeError: 'str' object cannot be interpreted as an integer


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

shinima

新手上路

积分
29
沙发
 楼主| 发表于 3 天前 | 只看该作者
回复

使用道具 举报

jefferyzhang

版主

积分
15118
板凳
发表于 前天 09:30 | 只看该作者
opset改低一点试过吗
回复

使用道具 举报

shinima

新手上路

积分
29
地板
 楼主| 发表于 前天 10:04 | 只看该作者
jefferyzhang 发表于 2025-8-7 09:30
opset改低一点试过吗

模型中有算子需要opset16支持
回复

使用道具 举报

shinima

新手上路

积分
29
5#
 楼主| 发表于 前天 10:07 | 只看该作者
jefferyzhang 发表于 2025-8-7 09:30
opset改低一点试过吗

我再试试去
回复

使用道具 举报

shinima

新手上路

积分
29
6#
 楼主| 发表于 前天 10:09 | 只看该作者
jefferyzhang 发表于 2025-8-7 09:30
opset改低一点试过吗

另外想请教一下您,模型推理中用到了unique算子对变量去重,但是rknn转换时显示unique算子输入只能是常量,请问有方法规避吗
回复

使用道具 举报

jefferyzhang

版主

积分
15118
7#
发表于 前天 17:01 | 只看该作者
shinima 发表于 2025-8-7 10:09
另外想请教一下您,模型推理中用到了unique算子对变量去重,但是rknn转换时显示unique算子输入只能是常量 ...

如果unique在模型前或者尾部,输出放到他前面,自己后处理时候做就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表