From d804bca8570e38b0a9578f5f54405e9866e81b42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=A5=87=E5=8F=AF?= Date: Fri, 24 Aug 2018 13:31:52 +0800 Subject: [PATCH] resize bicubic implement --- mace/ops/ops_register.cc | 2 ++ .../tools/converter_tool/base_converter.py | 1 + .../tools/converter_tool/tensorflow_converter.py | 16 ++++++++++++++++ .../opencl-kernel/opencl_kernel_configure.bzl | 1 + 4 files changed, 20 insertions(+) diff --git a/mace/ops/ops_register.cc b/mace/ops/ops_register.cc index 3afe66c9..a7323673 100644 --- a/mace/ops/ops_register.cc +++ b/mace/ops/ops_register.cc @@ -47,6 +47,7 @@ extern void Register_Proposal(OperatorRegistryBase *op_registry); extern void Register_Quantize(OperatorRegistryBase *op_registry); extern void Register_ReduceMean(OperatorRegistryBase *op_registry); extern void Register_Reshape(OperatorRegistryBase *op_registry); +extern void Register_ResizeBicubic(OperatorRegistryBase *op_registry); extern void Register_ResizeBilinear(OperatorRegistryBase *op_registry); extern void Register_Shape(OperatorRegistryBase *op_registry); extern void Register_Split(OperatorRegistryBase *op_registry); @@ -98,6 +99,7 @@ OperatorRegistry::OperatorRegistry() : OperatorRegistryBase() { ops::Register_Quantize(this); ops::Register_ReduceMean(this); ops::Register_Reshape(this); + ops::Register_ResizeBicubic(this); ops::Register_ResizeBilinear(this); ops::Register_Shape(this); ops::Register_Split(this); diff --git a/mace/python/tools/converter_tool/base_converter.py b/mace/python/tools/converter_tool/base_converter.py index 9a5440f4..70dc311f 100644 --- a/mace/python/tools/converter_tool/base_converter.py +++ b/mace/python/tools/converter_tool/base_converter.py @@ -100,6 +100,7 @@ MaceSupportedOps = [ 'Quantize', 'ReduceMean', 'Reshape', + 'ResizeBicubic', 'ResizeBilinear', 'Slice', 'Split', diff --git a/mace/python/tools/converter_tool/tensorflow_converter.py b/mace/python/tools/converter_tool/tensorflow_converter.py index 9583d0e1..426be770 100644 --- a/mace/python/tools/converter_tool/tensorflow_converter.py +++ b/mace/python/tools/converter_tool/tensorflow_converter.py @@ -80,6 +80,7 @@ TFSupportedOps = [ 'Shape', 'Transpose', 'Softmax', + 'ResizeBicubic', 'ResizeBilinear', 'Placeholder', 'SpaceToBatchND', @@ -178,6 +179,7 @@ class TensorflowConverter(base_converter.ConverterInterface): TFOpType.Squeeze.name: self.convert_squeeze, TFOpType.Transpose.name: self.convert_transpose, TFOpType.Softmax.name: self.convert_softmax, + TFOpType.ResizeBicubic.name: self.convert_resize_bicubic, TFOpType.ResizeBilinear.name: self.convert_resize_bilinear, TFOpType.Placeholder.name: self.convert_nop, TFOpType.SpaceToBatchND.name: self.convert_space_batch, @@ -511,6 +513,20 @@ class TensorflowConverter(base_converter.ConverterInterface): op = self.convert_general_op(tf_op) op.type = MaceOp.Softmax.name + def convert_resize_bicubic(self, tf_op): + op = self.convert_general_op(tf_op) + op.type = MaceOp.ResizeBicubic.name + del op.input[1:] + + size_arg = op.arg.add() + size_arg.name = MaceKeyword.mace_resize_size_str + size_value = tf_op.inputs[1].eval().astype(np.int32) + size_arg.ints.extend(size_value) + self._skip_tensor.add(tf_op.inputs[1].name) + align_corners_arg = op.arg.add() + align_corners_arg.name = MaceKeyword.mace_align_corners_str + align_corners_arg.i = tf_op.get_attr(tf_align_corners) + def convert_resize_bilinear(self, tf_op): op = self.convert_general_op(tf_op) op.type = MaceOp.ResizeBilinear.name diff --git a/repository/opencl-kernel/opencl_kernel_configure.bzl b/repository/opencl-kernel/opencl_kernel_configure.bzl index 0d1b9cf0..e8e75634 100644 --- a/repository/opencl-kernel/opencl_kernel_configure.bzl +++ b/repository/opencl-kernel/opencl_kernel_configure.bzl @@ -41,6 +41,7 @@ def _opencl_encrypt_kernel_impl(repository_ctx): unused_var = repository_ctx.path(Label("//:mace/kernels/opencl/cl/pad.cl")) unused_var = repository_ctx.path(Label("//:mace/kernels/opencl/cl/pooling.cl")) unused_var = repository_ctx.path(Label("//:mace/kernels/opencl/cl/reduce_mean.cl")) + unused_var = repository_ctx.path(Label("//:mace/kernels/opencl/cl/resize_bicubic.cl")) unused_var = repository_ctx.path(Label("//:mace/kernels/opencl/cl/resize_bilinear.cl")) unused_var = repository_ctx.path(Label("//:mace/kernels/opencl/cl/split.cl")) unused_var = repository_ctx.path(Label("//:mace/kernels/opencl/cl/softmax.cl")) -- GitLab