|
import os |
|
import pickle |
|
import numpy as np |
|
import tensorflow as tf |
|
from flask import Flask, render_template, request |
|
from PIL import Image |
|
import keras |
|
from keras.applications.vgg16 import preprocess_input |
|
from tensorflow.keras.applications.vgg16 import preprocess_input |
|
import gradio as gr |
|
import cv2 |
|
|
|
def model(img): |
|
model_dir = 'cataract' |
|
class_names = ['Normal', 'Cataract'] |
|
channel='RGB' |
|
selected_model = 'cataract' |
|
|
|
architecture_path = os.path.join('models',model_dir, f'model_architecture_{selected_model}.pkl') |
|
weights_path = os.path.join('models',model_dir, f'model_weights_{selected_model}.pkl') |
|
|
|
with open(architecture_path, 'rb') as f: |
|
loaded_model_architecture = pickle.load(f) |
|
|
|
with open(weights_path, 'rb') as f: |
|
loaded_model_weights = pickle.load(f) |
|
|
|
|
|
loaded_model = tf.keras.models.model_from_json(loaded_model_architecture) |
|
|
|
|
|
loaded_model.set_weights(loaded_model_weights) |
|
|
|
loaded_model.summary() |
|
|
|
try: |
|
|
|
image = cv2.resize(img, (256, 256)) |
|
except: |
|
print("ERROR") |
|
print(image) |
|
return "ERROR" |
|
x = np.array(image) |
|
x = np.expand_dims(x, axis=0) |
|
x = preprocess_input(x) |
|
|
|
|
|
predictions = loaded_model.predict(x) |
|
print(predictions) |
|
|
|
predicted_class_index = 1 if (predictions[0]>0.5) else 0 |
|
print(predicted_class_index) |
|
|
|
predicted_class_label = class_names[predicted_class_index] |
|
|
|
return predicted_class_label |
|
|
|
cataract_app = gr.Interface(model,gr.Image(),["text"]) |
|
|
|
cataract_app.launch(share=True) |