Skip to content
Snippets Groups Projects
Select Git revision
  • e78078b5ec62d93ab615b183deba7e9d785eb24e
  • main default protected
  • add_export_route
  • add_route_assignments
  • 4.1.0-dev
  • 4.0.0
  • 3.5.3
  • 3.5.3-dev
  • 3.5.2
  • 3.5.2-dev
  • 3.5.1
  • 3.5.1-dev
  • 3.5.0
  • 3.4.2
  • 3.4.1
  • 3.4.0
  • 3.3.0
  • 3.2.0
  • 3.1.3
  • 3.1.2
  • 3.1.1
  • 3.1.0
  • 3.0.1
  • 3.0.0
24 results

GlobalHelper.ts

Blame
  • Forked from Dojo Project (HES-SO) / Projects / Backend / DojoBackendAPI
    Source project has a limited visibility.
    common.py 1.91 KiB
    # Copyright 2019 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    """Common utilities."""
    import numpy as np
    import tflite_runtime.interpreter as tflite
    
    EDGETPU_SHARED_LIB = 'libedgetpu.so.1'
    #EDGETPU_SHARED_LIB = 'delegate.so'
    
    def make_interpreter(model_file):
        model_file, *device = model_file.split('@')
        return tflite.Interpreter(
          model_path=model_file,
          experimental_delegates=[
              tflite.load_delegate(EDGETPU_SHARED_LIB,
                                   {'device': device[0]} if device else {})
          ])
    
    def input_image_size(interpreter):
        """Returns input image size as (width, height, channels) tuple."""
        _, height, width, channels = interpreter.get_input_details()[0]['shape']
        return width, height, channels
    
    def input_tensor(interpreter):
        """Returns input tensor view as numpy array of shape (height, width, 3)."""
        tensor_index = interpreter.get_input_details()[0]['index']
        return interpreter.tensor(tensor_index)()[0]
    
    def output_tensor(interpreter, i):
        """Returns dequantized output tensor if quantized before."""
        output_details = interpreter.get_output_details()[i]
        output_data = np.squeeze(interpreter.tensor(output_details['index'])())
        if 'quantization' not in output_details:
            return output_data
        scale, zero_point = output_details['quantization']
        if scale == 0:
            return output_data - zero_point
        return scale * (output_data - zero_point)