diff --git a/x2paddle/op_mapper/paddle2onnx/opset11/opset.py b/x2paddle/op_mapper/paddle2onnx/opset11/opset.py index d1a48732152c998c50969201ad5b0cca42f9be4a..81b800203c5588a75b3414d5931200824147ac37 100644 --- a/x2paddle/op_mapper/paddle2onnx/opset11/opset.py +++ b/x2paddle/op_mapper/paddle2onnx/opset11/opset.py @@ -93,16 +93,13 @@ class OpSet11(OpSet10): else: coordinate_transformation_mode = 'half_pixel' + roi_name = self.get_name(op.type, 'roi') + roi_node = self.make_constant_node(roi_name, onnx_pb.TensorProto.FLOAT, + [1, 1, 1, 1, 1, 1, 1, 1]) if ('OutSize' in input_names and len(op.input('OutSize')) > 0) or ( 'SizeTensor' in input_names and len(op.input('SizeTensor')) > 0): node_list = list() - roi_node = self.make_constant_node( - self.get_name(op.type, 'roi'), onnx_pb.TensorProto.FLOAT, - [1, 1, 1, 1, 1, 1, 1, 1]) - roi_name = self.get_name(op.type, 'roi') - roi_node = self.make_constant_node( - roi_name, onnx_pb.TensorProto.FLOAT, [1, 1, 1, 1, 1, 1, 1, 1]) empty_name = self.get_name(op.type, 'empty') empty_tensor = helper.make_tensor( empty_name, @@ -168,7 +165,7 @@ class OpSet11(OpSet10): elif 'Scale' in input_names and len(op.input('Scale')) > 0: node = helper.make_node( 'Resize', - inputs=[op.input('X')[0], op.input('Scale')[0]], + inputs=[op.input('X')[0], roi_name, op.input('Scale')[0]], outputs=op.output('Out'), mode='linear', coordinate_transformation_mode=coordinate_transformation_mode) @@ -180,10 +177,6 @@ class OpSet11(OpSet10): scale_node = self.make_constant_node(scale_name, onnx_pb.TensorProto.FLOAT, [1, 1, scale, scale]) - roi_name = self.get_name(op.type, 'roi') - roi_node = self.make_constant_node(roi_name, - onnx_pb.TensorProto.FLOAT, - [1, 1, 1, 1, 1, 1, 1, 1]) node = helper.make_node( 'Resize', inputs=[op.input('X')[0], roi_name, scale_name], @@ -194,7 +187,7 @@ class OpSet11(OpSet10): return [scale_node, roi_node, node] else: raise Exception("Unexpected situation happend") - return node + return [roi_node, node] def nearest_interp(self, op, block): input_names = op.input_names @@ -204,17 +197,20 @@ class OpSet11(OpSet10): coordinate_transformation_mode = 'align_corners' else: coordinate_transformation_mode = 'asymmetric' + roi_name = self.get_name(op.type, 'roi') + roi_node = self.make_constant_node(roi_name, onnx_pb.TensorProto.FLOAT, + [1, 1, 1, 1, 1, 1, 1, 1]) if 'OutSize' in input_names and len(op.input('OutSize')) > 0: node = helper.make_node( 'Resize', - inputs=[op.input('X')[0], '', op.input('OutSize')[0]], + inputs=[op.input('X')[0], roi_name, op.input('OutSize')[0]], outputs=op.output('Out'), mode='nearest', coordinate_transformation_mode=coordinate_transformation_mode) elif 'Scale' in input_names and len(op.input('Scale')) > 0: node = helper.make_node( 'Resize', - inputs=[op.input('X')[0], op.input('Scale')[0]], + inputs=[op.input('X')[0], roi_name, op.input('Scale')[0]], outputs=op.output('Out'), mode='nearest', coordinate_transformation_mode=coordinate_transformation_mode) @@ -226,10 +222,6 @@ class OpSet11(OpSet10): scale_node = self.make_constant_node(scale_name, onnx_pb.TensorProto.FLOAT, [1, 1, scale, scale]) - roi_name = self.get_name(op.type, 'roi') - roi_node = self.make_constant_node(roi_name, - onnx_pb.TensorProto.FLOAT, - [1, 1, 1, 1, 1, 1, 1, 1]) node = helper.make_node( 'Resize', inputs=[op.input('X')[0], roi_name, scale_name], @@ -240,7 +232,7 @@ class OpSet11(OpSet10): return [scale_node, roi_node, node] else: raise Exception("Unexpected situation happend") - return node + return [roi_node, node] def hard_swish(self, op, block): min_name = self.get_name(op.type, 'min') diff --git a/x2paddle/op_mapper/paddle2onnx/opset9/opset.py b/x2paddle/op_mapper/paddle2onnx/opset9/opset.py index 15ddf93825d34c1d29f75311c2348ed97f096fae..30d2a8d80ecde4bb4b60aaa1960cf1ace2b1a14b 100644 --- a/x2paddle/op_mapper/paddle2onnx/opset9/opset.py +++ b/x2paddle/op_mapper/paddle2onnx/opset9/opset.py @@ -673,7 +673,7 @@ class OpSet9(object): input_names = op.input_names if op.attr('align_corners'): raise Exception( - "Resize in onnx(opset<=10) only support coordinate_transformation_mode: 'asymmetric', Try converting with --onnx_opest 11" + "Resize in onnx(opset<=10) only support coordinate_transformation_mode: 'asymmetric', Try converting with --onnx_opset 11" ) if 'OutSize' in input_names and len(op.input('OutSize')) > 0: node = helper.make_node(