Spaces:
Runtime error
Runtime error
| from tensorflow import keras | |
| from PIL import Image, ImageOps | |
| import numpy as np | |
| import io, os | |
| import logging | |
| import keras_metrics | |
| from tensorflow import keras | |
| from tensorflow.python.compiler.tensorrt import trt_convert as trt | |
| import utils | |
| ## Configs | |
| keras.utils.get_custom_objects()['recall'] = utils.recall | |
| keras.utils.get_custom_objects()['precision'] = utils.precision | |
| keras.utils.get_custom_objects()['f1'] = utils.f1 | |
| def teachable_machine_classification(img=None, model=None): | |
| """Performs inference on image uploaded""" | |
| # Create the array of the right shape to feed into the keras model | |
| data = np.ndarray(shape=(1, 299, 299, 3), dtype=np.float32) | |
| image = img | |
| # image sizing | |
| size = (299, 299) | |
| image = ImageOps.fit(image, size, Image.ANTIALIAS) | |
| # turn the image into a numpy array | |
| image_array = np.asarray(image) | |
| # Normalize the image | |
| normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1 | |
| # Load the image into the array | |
| data[0] = normalized_image_array | |
| # run the inference | |
| prediction = model.predict(data) | |
| logging.info("Prediction", prediction) | |
| return prediction[0][ | |
| 1 | |
| ] # np.argmax(prediction) # return position of the highest probability | |
| def load_model(weights_file=None): | |
| """Loads trained keras model""" | |
| dependencies = { | |
| "binary_f1_score": keras_metrics.binary_f1_score, | |
| "binary_precision": keras_metrics.binary_precision, | |
| "binary_recall": keras_metrics.binary_recall, | |
| } | |
| try: | |
| assert os.path.exists(weights_file), f"File '{weights_file}' does not exist" | |
| # Load the model | |
| model = keras.models.load_model( | |
| weights_file, custom_objects=dependencies, compile=False | |
| ) | |
| logging.info("Model successfully loaded.") | |
| return model | |
| except Exception as e: | |
| logging.error("ERROR: ", e) | |
| print("ERROR: ", e, " Failed to load ML model") | |
| return None | |