code: def convert_filters_format(self):
      arg_format = ConverterUtil.get_arg(
          self.net_def, MaceKeyword.mace_filter_format_str
      )
      if arg_format.i == DataFormat.OHWI.value:
          return
  
      mace_check(arg_format.i == DataFormat.OIHW.value, "Invalid model")
      arg_format.i = DataFormat.OHWI.value
  
      transposed_filter = set()
      for op in self.net_def.op:
          # OIHW => OHWI
          if (
              op.type == MaceOp.Conv2D.name
              or op.type == MaceOp.DepthwiseConv2d.name
              or op.type == MaceOp.FullyConnected.name
          ) and op.input[1] not in transposed_filter:
              print("transform filter: %s" % op.type)
              filter = self._consts[op.input[1]]
              tensor_data = np.frombuffer(
                  self.weight_bytes,
                  self.data_type,
                  filter.data_size,
                  filter.offset,
              )
              filter_data = (
                  np.array(tensor_data)
                  .reshape(filter.dims)
                  .transpose(0, 2, 3, 1)
              )
              filter_bytes = np.array(filter_data).tobytes()
              slice_end = filter.offset + len(filter_bytes)
              self.model_weights[
                  filter.offset : slice_end
              ] = filter_bytes
              filter.dims[:] = filter_data.shape
              transposed_filter.add(op.input[1])
  
file_path: mace/tools/python/micro/micro_op_converter.py
imports: from transform.base_converter import ConverterUtil
  from transform.base_converter import DataFormat
  from transform.base_converter import MaceKeyword
  from transform.base_converter import MaceOp
  from utils.util import mace_check
  import numpy
label_desc: Use image node_id 2 for calling the MicroOpConverter obj's underlying member method code with example usage: obj.convert_filters_format() without return types