Skip to content
Snippets Groups Projects
Select Git revision
  • 2ba77d5f4e9ad564327877107abd5bc48731f2c9
  • main default protected
  • login_branch
  • interface_student
  • add_idea_configuration
5 results

exercise-student.component.ts

Blame
  • 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)