Spaces:
Build error
Build error
| # backend/utils.py | |
| import tensorflow as tf # Use tensorflow or keras if keras is installed as a different library | |
| from tensorflow.keras.preprocessing import image | |
| from tensorflow.keras.applications.vgg16 import preprocess_input # Or a preprocessing method for your model | |
| import numpy as np | |
| from io import BytesIO #For converting bytesIO to Image | |
| def load_model(model_path): # Load using TF, changed due to multiple warnings for .h5 loading | |
| return tf.keras.models.load_model(model_path) | |
| # Load your trained model | |
| # model = tf.keras.models.load_model(model_path) #for using keras or tensorflow, change the install dependencies according to your code. | |
| # return model | |
| def preprocess_image(image_bytes): | |
| # Use BytesIO to read the image from bytes | |
| img = image.load_img(BytesIO(image_bytes), target_size=(224, 224)) # Match the size your model expects | |
| img_array = image.img_to_array(img) | |
| img_array = np.expand_dims(img_array, axis=0) | |
| img_array = preprocess_input(img_array) # IMPORTANT: Use the same preprocessing as during training! This assumes VGG16-like preprocessing; adapt if necessary. | |
| return img_array | |
| def predict(model, image_array): #Add for analysis | |
| # Run the prediction | |
| prediction = model.predict(image_array) | |
| # Assuming a binary classification (glaucoma/no glaucoma) and model returns a probability | |
| # Customize the interpretation of the output based on your model | |
| if prediction[0][0] > 0.5: # Adjust threshold as needed | |
| result = "Glaucoma detected" #Output result to glaucoma or not | |
| else: | |
| result = "No glaucoma detected" | |
| return result #Return the prediction |