MLBEDSW-4925: Fix resize bilinear attribute check
Previously we did not check if half_pixel_centers
was set. Since we do not support it, these cases
should not run on the NPU.
Signed-off-by: erik.andersson@arm.com <erik.andersson@arm.com>
Change-Id: I9d2675f760424d5cfb67e5d581dd1861ad165b85
diff --git a/ethosu/vela/test/test_tflite_supported_operators.py b/ethosu/vela/test/test_tflite_supported_operators.py
index af5dc17..e3db791 100644
--- a/ethosu/vela/test/test_tflite_supported_operators.py
+++ b/ethosu/vela/test/test_tflite_supported_operators.py
@@ -327,6 +327,13 @@
assert not support.is_operator_supported(op)
+def test_constraint_bilinear_resize_attrs():
+ op = testutil.create_op_with_quant_tensors(Op.ResizeBilinear, [1, 1, 1, 8], [1, 8, 8, 8])
+ assert support.is_operator_supported(op)
+ op.attrs["half_pixel_centers"] = True
+ assert not support.is_operator_supported(op)
+
+
def test_constraint_concat_pass():
# A working concat
op = testutil.create_op_with_quant_tensors(Op.Concat, [1, 1, 1, 4], [1, 1, 1, 8])
diff --git a/ethosu/vela/tflite_supported_operators.py b/ethosu/vela/tflite_supported_operators.py
index d590054..a3c0dd8 100644
--- a/ethosu/vela/tflite_supported_operators.py
+++ b/ethosu/vela/tflite_supported_operators.py
@@ -162,6 +162,7 @@
# Resizing specific checks:
for op_type in TFLiteSupportedOperators.resizing_ops:
self.specific_constraints[op_type].append(TFLiteSupportedOperators.constraint_resize)
+ self.specific_constraints[op_type].append(TFLiteSupportedOperators.constraint_bilinear_resize_attrs)
# Vector Product specific checks:
for op_type in TFLiteSupportedOperators.fc_vector_products:
@@ -530,6 +531,14 @@
return valid, f"Op has ifm_shape={ifm_shape}, ofm_shape={ofm_shape} and align_corners={align_corners}"
@staticmethod
+ def constraint_bilinear_resize_attrs(op):
+ "half_pixel_centers are not supported"
+ valid = True
+ if op.attrs.get("half_pixel_centers"):
+ valid = False
+ return valid, f"Op has half_pixel_centers set to {not valid}."
+
+ @staticmethod
def constraint_pad_shape(op):
"The padding tensor must have the shape [3,2] or [4,2]"
valid = op.inputs[1].shape in ([3, 2], [4, 2])