<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>eIQ Machine Learning SoftwareのトピックeIQ Toolkit tflite-model format</title>
    <link>https://community.nxp.com/t5/eIQ-Machine-Learning-Software/eIQ-Toolkit-tflite-model-format/m-p/1814732#M665</link>
    <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;I try to run an tflite-model but always get this error:&lt;/P&gt;&lt;P&gt;Traceback (most recent call last): File "label_image.py", line 133, in print('{:08.6f}: {}'.format(float(results[i]), labels[i])) TypeError: only size-1 arrays can be converted to Python scalars&lt;/P&gt;&lt;P&gt;It's the example code from the tensorflow-website with my own model. It seems lite the model is giving it's results in the wrong format.&lt;/P&gt;&lt;P&gt;Here is the code:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;# Copyright 2018 The TensorFlow Authors. All Rights Reserved.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# Licensed under the Apache License, Version 2.0 (the "License");&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# you may not use this file except in compliance with the License.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# You may obtain a copy of the License at&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#     http://www.apache.org/licenses/LICENSE-2.0&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# Unless required by applicable law or agreed to in writing, software&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# distributed under the License is distributed on an "AS IS" BASIS,&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# See the License for the specific language governing permissions and&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# limitations under the License.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# ==============================================================================&lt;/SPAN&gt;
&lt;SPAN class=""&gt;"""label_image for tflite."""&lt;/SPAN&gt;

&lt;SPAN class=""&gt;import&lt;/SPAN&gt; argparse
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; time

&lt;SPAN class=""&gt;import&lt;/SPAN&gt; numpy &lt;SPAN class=""&gt;as&lt;/SPAN&gt; np
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; PIL &lt;SPAN class=""&gt;import&lt;/SPAN&gt; Image
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; tflite_runtime.interpreter &lt;SPAN class=""&gt;as&lt;/SPAN&gt; tflite
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; sys

np.set_printoptions(threshold=sys.maxsize)

&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;load_labels&lt;/SPAN&gt;(&lt;SPAN class=""&gt;filename&lt;/SPAN&gt;):
  &lt;SPAN class=""&gt;with&lt;/SPAN&gt; &lt;SPAN class=""&gt;open&lt;/SPAN&gt;(filename, &lt;SPAN class=""&gt;'r'&lt;/SPAN&gt;) &lt;SPAN class=""&gt;as&lt;/SPAN&gt; f:
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; [line.strip() &lt;SPAN class=""&gt;for&lt;/SPAN&gt; line &lt;SPAN class=""&gt;in&lt;/SPAN&gt; f.readlines()]


&lt;SPAN class=""&gt;if&lt;/SPAN&gt; __name__ == &lt;SPAN class=""&gt;'__main__'&lt;/SPAN&gt;:
  parser = argparse.ArgumentParser()
  parser.add_argument(
      &lt;SPAN class=""&gt;'-i'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;'--image'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;'Images/sh_17_11_23_s70m_0048.JPG'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'image to be classified'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'-m'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;'--model_file'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;'detection-balanced-mcu-2024-02-09T11-36-31.710Z_in-uint8.tflite'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'.tflite model to be executed'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'-l'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;'--label_file'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;'labels.txt'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'name of file containing labels'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'--input_mean'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;127.5&lt;/SPAN&gt;, &lt;SPAN class=""&gt;type&lt;/SPAN&gt;=&lt;SPAN class=""&gt;float&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'input_mean'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'--input_std'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;127.5&lt;/SPAN&gt;, &lt;SPAN class=""&gt;type&lt;/SPAN&gt;=&lt;SPAN class=""&gt;float&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'input standard deviation'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'--num_threads'&lt;/SPAN&gt;, default=&lt;SPAN class=""&gt;None&lt;/SPAN&gt;, &lt;SPAN class=""&gt;type&lt;/SPAN&gt;=&lt;SPAN class=""&gt;int&lt;/SPAN&gt;, &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'number of threads'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'-e'&lt;/SPAN&gt;, &lt;SPAN class=""&gt;'--ext_delegate'&lt;/SPAN&gt;, &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'external_delegate_library path'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'-o'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;'--ext_delegate_options'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'external delegate options, \
            format: "option1: value1; option2: value2"'&lt;/SPAN&gt;)

  args = parser.parse_args()

  ext_delegate = &lt;SPAN class=""&gt;None&lt;/SPAN&gt;
  ext_delegate_options = {}

  &lt;SPAN class=""&gt;# parse extenal delegate options&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;if&lt;/SPAN&gt; args.ext_delegate_options &lt;SPAN class=""&gt;is&lt;/SPAN&gt; &lt;SPAN class=""&gt;not&lt;/SPAN&gt; &lt;SPAN class=""&gt;None&lt;/SPAN&gt;:
    options = args.ext_delegate_options.split(&lt;SPAN class=""&gt;';'&lt;/SPAN&gt;)
    &lt;SPAN class=""&gt;for&lt;/SPAN&gt; o &lt;SPAN class=""&gt;in&lt;/SPAN&gt; options:
      kv = o.split(&lt;SPAN class=""&gt;':'&lt;/SPAN&gt;)
      &lt;SPAN class=""&gt;if&lt;/SPAN&gt; (&lt;SPAN class=""&gt;len&lt;/SPAN&gt;(kv) == &lt;SPAN class=""&gt;2&lt;/SPAN&gt;):
        ext_delegate_options[kv[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;].strip()] = kv[&lt;SPAN class=""&gt;1&lt;/SPAN&gt;].strip()
      &lt;SPAN class=""&gt;else&lt;/SPAN&gt;:
        &lt;SPAN class=""&gt;raise&lt;/SPAN&gt; RuntimeError(&lt;SPAN class=""&gt;'Error parsing delegate option: '&lt;/SPAN&gt; + o)

  &lt;SPAN class=""&gt;# load external delegate&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;if&lt;/SPAN&gt; args.ext_delegate &lt;SPAN class=""&gt;is&lt;/SPAN&gt; &lt;SPAN class=""&gt;not&lt;/SPAN&gt; &lt;SPAN class=""&gt;None&lt;/SPAN&gt;:
    &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;'Loading external delegate from {} with args: {}'&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(
        args.ext_delegate, ext_delegate_options))
    ext_delegate = [
        tflite.load_delegate(args.ext_delegate, ext_delegate_options)
    ]

  interpreter = tflite.Interpreter(
      model_path=args.model_file,
      experimental_delegates=ext_delegate,
      num_threads=args.num_threads)
  interpreter.allocate_tensors()

  input_details = interpreter.get_input_details()
  output_details = interpreter.get_output_details()

  &lt;SPAN class=""&gt;# check the type of the input tensor&lt;/SPAN&gt;
  floating_model = input_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'dtype'&lt;/SPAN&gt;] == np.float32

  &lt;SPAN class=""&gt;# NxHxWxC, H:1, W:2&lt;/SPAN&gt;
  height = input_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'shape'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;1&lt;/SPAN&gt;]
  width = input_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'shape'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;2&lt;/SPAN&gt;]
  img = Image.&lt;SPAN class=""&gt;open&lt;/SPAN&gt;(args.image).resize((width, height))

  &lt;SPAN class=""&gt;# add N dim&lt;/SPAN&gt;
  input_data = np.expand_dims(img, axis=&lt;SPAN class=""&gt;0&lt;/SPAN&gt;)

  &lt;SPAN class=""&gt;if&lt;/SPAN&gt; floating_model:
    input_data = (np.float32(input_data) - args.input_mean) / args.input_std

  interpreter.set_tensor(input_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'index'&lt;/SPAN&gt;], input_data)

  &lt;SPAN class=""&gt;# ignore the 1st invoke&lt;/SPAN&gt;
  startTime = time.time()
  interpreter.invoke()
  delta = time.time() - startTime
  &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;"Warm-up time:"&lt;/SPAN&gt;, &lt;SPAN class=""&gt;'%.1f'&lt;/SPAN&gt; % (delta * &lt;SPAN class=""&gt;1000&lt;/SPAN&gt;), &lt;SPAN class=""&gt;"ms\n"&lt;/SPAN&gt;)

  startTime = time.time()
  interpreter.invoke()
  delta = time.time() - startTime
  &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;"Inference time:"&lt;/SPAN&gt;, &lt;SPAN class=""&gt;'%.1f'&lt;/SPAN&gt; % (delta * &lt;SPAN class=""&gt;1000&lt;/SPAN&gt;), &lt;SPAN class=""&gt;"ms\n"&lt;/SPAN&gt;)

  output_data = interpreter.get_tensor(output_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'index'&lt;/SPAN&gt;])
  results = np.squeeze(output_data)

  top_k = results.argsort()[-&lt;SPAN class=""&gt;5&lt;/SPAN&gt;:][::-&lt;SPAN class=""&gt;1&lt;/SPAN&gt;]
  labels = load_labels(args.label_file)
  &lt;SPAN class=""&gt;for&lt;/SPAN&gt; i &lt;SPAN class=""&gt;in&lt;/SPAN&gt; top_k:
    &lt;SPAN class=""&gt;if&lt;/SPAN&gt; floating_model:
      &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;'{:08.6f}: {}'&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(&lt;SPAN class=""&gt;float&lt;/SPAN&gt;(results[i]), labels[i]))
    &lt;SPAN class=""&gt;else&lt;/SPAN&gt;:
      &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;'{:08.6f}: {}'&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(&lt;SPAN class=""&gt;float&lt;/SPAN&gt;(results[i] / &lt;SPAN class=""&gt;255.0&lt;/SPAN&gt;), labels[i]))

&lt;/PRE&gt;&lt;P&gt;For a test I created a tflite-model via the iIQ - Toolkit from NXP. I tried to set the output data type to "int8", "uint8" and "float32" but nothing worked.&lt;/P&gt;&lt;P&gt;Got anyone an idea beside creating a model on the "normal" way?&lt;/P&gt;&lt;P&gt;I uploaded my model.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 23 Feb 2024 15:17:12 GMT</pubDate>
    <dc:creator>fzfhw</dc:creator>
    <dc:date>2024-02-23T15:17:12Z</dc:date>
    <item>
      <title>eIQ Toolkit tflite-model format</title>
      <link>https://community.nxp.com/t5/eIQ-Machine-Learning-Software/eIQ-Toolkit-tflite-model-format/m-p/1814732#M665</link>
      <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;I try to run an tflite-model but always get this error:&lt;/P&gt;&lt;P&gt;Traceback (most recent call last): File "label_image.py", line 133, in print('{:08.6f}: {}'.format(float(results[i]), labels[i])) TypeError: only size-1 arrays can be converted to Python scalars&lt;/P&gt;&lt;P&gt;It's the example code from the tensorflow-website with my own model. It seems lite the model is giving it's results in the wrong format.&lt;/P&gt;&lt;P&gt;Here is the code:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;# Copyright 2018 The TensorFlow Authors. All Rights Reserved.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# Licensed under the Apache License, Version 2.0 (the "License");&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# you may not use this file except in compliance with the License.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# You may obtain a copy of the License at&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#     http://www.apache.org/licenses/LICENSE-2.0&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# Unless required by applicable law or agreed to in writing, software&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# distributed under the License is distributed on an "AS IS" BASIS,&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# See the License for the specific language governing permissions and&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# limitations under the License.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;# ==============================================================================&lt;/SPAN&gt;
&lt;SPAN class=""&gt;"""label_image for tflite."""&lt;/SPAN&gt;

&lt;SPAN class=""&gt;import&lt;/SPAN&gt; argparse
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; time

&lt;SPAN class=""&gt;import&lt;/SPAN&gt; numpy &lt;SPAN class=""&gt;as&lt;/SPAN&gt; np
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; PIL &lt;SPAN class=""&gt;import&lt;/SPAN&gt; Image
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; tflite_runtime.interpreter &lt;SPAN class=""&gt;as&lt;/SPAN&gt; tflite
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; sys

np.set_printoptions(threshold=sys.maxsize)

&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;load_labels&lt;/SPAN&gt;(&lt;SPAN class=""&gt;filename&lt;/SPAN&gt;):
  &lt;SPAN class=""&gt;with&lt;/SPAN&gt; &lt;SPAN class=""&gt;open&lt;/SPAN&gt;(filename, &lt;SPAN class=""&gt;'r'&lt;/SPAN&gt;) &lt;SPAN class=""&gt;as&lt;/SPAN&gt; f:
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; [line.strip() &lt;SPAN class=""&gt;for&lt;/SPAN&gt; line &lt;SPAN class=""&gt;in&lt;/SPAN&gt; f.readlines()]


&lt;SPAN class=""&gt;if&lt;/SPAN&gt; __name__ == &lt;SPAN class=""&gt;'__main__'&lt;/SPAN&gt;:
  parser = argparse.ArgumentParser()
  parser.add_argument(
      &lt;SPAN class=""&gt;'-i'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;'--image'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;'Images/sh_17_11_23_s70m_0048.JPG'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'image to be classified'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'-m'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;'--model_file'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;'detection-balanced-mcu-2024-02-09T11-36-31.710Z_in-uint8.tflite'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'.tflite model to be executed'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'-l'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;'--label_file'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;'labels.txt'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'name of file containing labels'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'--input_mean'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;127.5&lt;/SPAN&gt;, &lt;SPAN class=""&gt;type&lt;/SPAN&gt;=&lt;SPAN class=""&gt;float&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'input_mean'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'--input_std'&lt;/SPAN&gt;,
      default=&lt;SPAN class=""&gt;127.5&lt;/SPAN&gt;, &lt;SPAN class=""&gt;type&lt;/SPAN&gt;=&lt;SPAN class=""&gt;float&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'input standard deviation'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'--num_threads'&lt;/SPAN&gt;, default=&lt;SPAN class=""&gt;None&lt;/SPAN&gt;, &lt;SPAN class=""&gt;type&lt;/SPAN&gt;=&lt;SPAN class=""&gt;int&lt;/SPAN&gt;, &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'number of threads'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'-e'&lt;/SPAN&gt;, &lt;SPAN class=""&gt;'--ext_delegate'&lt;/SPAN&gt;, &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'external_delegate_library path'&lt;/SPAN&gt;)
  parser.add_argument(
      &lt;SPAN class=""&gt;'-o'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;'--ext_delegate_options'&lt;/SPAN&gt;,
      &lt;SPAN class=""&gt;help&lt;/SPAN&gt;=&lt;SPAN class=""&gt;'external delegate options, \
            format: "option1: value1; option2: value2"'&lt;/SPAN&gt;)

  args = parser.parse_args()

  ext_delegate = &lt;SPAN class=""&gt;None&lt;/SPAN&gt;
  ext_delegate_options = {}

  &lt;SPAN class=""&gt;# parse extenal delegate options&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;if&lt;/SPAN&gt; args.ext_delegate_options &lt;SPAN class=""&gt;is&lt;/SPAN&gt; &lt;SPAN class=""&gt;not&lt;/SPAN&gt; &lt;SPAN class=""&gt;None&lt;/SPAN&gt;:
    options = args.ext_delegate_options.split(&lt;SPAN class=""&gt;';'&lt;/SPAN&gt;)
    &lt;SPAN class=""&gt;for&lt;/SPAN&gt; o &lt;SPAN class=""&gt;in&lt;/SPAN&gt; options:
      kv = o.split(&lt;SPAN class=""&gt;':'&lt;/SPAN&gt;)
      &lt;SPAN class=""&gt;if&lt;/SPAN&gt; (&lt;SPAN class=""&gt;len&lt;/SPAN&gt;(kv) == &lt;SPAN class=""&gt;2&lt;/SPAN&gt;):
        ext_delegate_options[kv[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;].strip()] = kv[&lt;SPAN class=""&gt;1&lt;/SPAN&gt;].strip()
      &lt;SPAN class=""&gt;else&lt;/SPAN&gt;:
        &lt;SPAN class=""&gt;raise&lt;/SPAN&gt; RuntimeError(&lt;SPAN class=""&gt;'Error parsing delegate option: '&lt;/SPAN&gt; + o)

  &lt;SPAN class=""&gt;# load external delegate&lt;/SPAN&gt;
  &lt;SPAN class=""&gt;if&lt;/SPAN&gt; args.ext_delegate &lt;SPAN class=""&gt;is&lt;/SPAN&gt; &lt;SPAN class=""&gt;not&lt;/SPAN&gt; &lt;SPAN class=""&gt;None&lt;/SPAN&gt;:
    &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;'Loading external delegate from {} with args: {}'&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(
        args.ext_delegate, ext_delegate_options))
    ext_delegate = [
        tflite.load_delegate(args.ext_delegate, ext_delegate_options)
    ]

  interpreter = tflite.Interpreter(
      model_path=args.model_file,
      experimental_delegates=ext_delegate,
      num_threads=args.num_threads)
  interpreter.allocate_tensors()

  input_details = interpreter.get_input_details()
  output_details = interpreter.get_output_details()

  &lt;SPAN class=""&gt;# check the type of the input tensor&lt;/SPAN&gt;
  floating_model = input_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'dtype'&lt;/SPAN&gt;] == np.float32

  &lt;SPAN class=""&gt;# NxHxWxC, H:1, W:2&lt;/SPAN&gt;
  height = input_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'shape'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;1&lt;/SPAN&gt;]
  width = input_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'shape'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;2&lt;/SPAN&gt;]
  img = Image.&lt;SPAN class=""&gt;open&lt;/SPAN&gt;(args.image).resize((width, height))

  &lt;SPAN class=""&gt;# add N dim&lt;/SPAN&gt;
  input_data = np.expand_dims(img, axis=&lt;SPAN class=""&gt;0&lt;/SPAN&gt;)

  &lt;SPAN class=""&gt;if&lt;/SPAN&gt; floating_model:
    input_data = (np.float32(input_data) - args.input_mean) / args.input_std

  interpreter.set_tensor(input_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'index'&lt;/SPAN&gt;], input_data)

  &lt;SPAN class=""&gt;# ignore the 1st invoke&lt;/SPAN&gt;
  startTime = time.time()
  interpreter.invoke()
  delta = time.time() - startTime
  &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;"Warm-up time:"&lt;/SPAN&gt;, &lt;SPAN class=""&gt;'%.1f'&lt;/SPAN&gt; % (delta * &lt;SPAN class=""&gt;1000&lt;/SPAN&gt;), &lt;SPAN class=""&gt;"ms\n"&lt;/SPAN&gt;)

  startTime = time.time()
  interpreter.invoke()
  delta = time.time() - startTime
  &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;"Inference time:"&lt;/SPAN&gt;, &lt;SPAN class=""&gt;'%.1f'&lt;/SPAN&gt; % (delta * &lt;SPAN class=""&gt;1000&lt;/SPAN&gt;), &lt;SPAN class=""&gt;"ms\n"&lt;/SPAN&gt;)

  output_data = interpreter.get_tensor(output_details[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'index'&lt;/SPAN&gt;])
  results = np.squeeze(output_data)

  top_k = results.argsort()[-&lt;SPAN class=""&gt;5&lt;/SPAN&gt;:][::-&lt;SPAN class=""&gt;1&lt;/SPAN&gt;]
  labels = load_labels(args.label_file)
  &lt;SPAN class=""&gt;for&lt;/SPAN&gt; i &lt;SPAN class=""&gt;in&lt;/SPAN&gt; top_k:
    &lt;SPAN class=""&gt;if&lt;/SPAN&gt; floating_model:
      &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;'{:08.6f}: {}'&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(&lt;SPAN class=""&gt;float&lt;/SPAN&gt;(results[i]), labels[i]))
    &lt;SPAN class=""&gt;else&lt;/SPAN&gt;:
      &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;'{:08.6f}: {}'&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(&lt;SPAN class=""&gt;float&lt;/SPAN&gt;(results[i] / &lt;SPAN class=""&gt;255.0&lt;/SPAN&gt;), labels[i]))

&lt;/PRE&gt;&lt;P&gt;For a test I created a tflite-model via the iIQ - Toolkit from NXP. I tried to set the output data type to "int8", "uint8" and "float32" but nothing worked.&lt;/P&gt;&lt;P&gt;Got anyone an idea beside creating a model on the "normal" way?&lt;/P&gt;&lt;P&gt;I uploaded my model.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 23 Feb 2024 15:17:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/eIQ-Machine-Learning-Software/eIQ-Toolkit-tflite-model-format/m-p/1814732#M665</guid>
      <dc:creator>fzfhw</dc:creator>
      <dc:date>2024-02-23T15:17:12Z</dc:date>
    </item>
  </channel>
</rss>

