Toybrick

标题: 转换时 fuse_ops 阶段报错:TypeError: 'str' object cannot be interpre... [打印本页]

作者: shinima    时间: 3 天前
标题: 转换时 fuse_ops 阶段报错:TypeError: 'str' object cannot be interpre...
错误信息:
系统: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



作者: shinima    时间: 3 天前
原帖子地址
https://github.com/airockchip/rknn-toolkit2/issues/409
作者: jefferyzhang    时间: 前天 09:30
opset改低一点试过吗
作者: shinima    时间: 前天 10:04
jefferyzhang 发表于 2025-8-7 09:30
opset改低一点试过吗

模型中有算子需要opset16支持
作者: shinima    时间: 前天 10:07
jefferyzhang 发表于 2025-8-7 09:30
opset改低一点试过吗

我再试试去
作者: shinima    时间: 前天 10:09
jefferyzhang 发表于 2025-8-7 09:30
opset改低一点试过吗

另外想请教一下您,模型推理中用到了unique算子对变量去重,但是rknn转换时显示unique算子输入只能是常量,请问有方法规避吗
作者: jefferyzhang    时间: 前天 17:01
shinima 发表于 2025-8-7 10:09
另外想请教一下您,模型推理中用到了unique算子对变量去重,但是rknn转换时显示unique算子输入只能是常量 ...

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




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3