|
|
|
import h2o |
|
import gradio as gr |
|
from PIL import Image |
|
import numpy as np |
|
import pandas as pd |
|
|
|
h2o.init() |
|
|
|
model = h2o.load_model('DeepLearning_grid_1_AutoML_11_20230827_202719_model_3') |
|
|
|
column_names = model._model_json['output']['names'][:-1] |
|
|
|
label_mapping = { |
|
'p0': 'choroidal neovascularization', |
|
'p1': 'diabetic macular edema', |
|
'p2': 'drusen', |
|
'p3': 'normal' |
|
} |
|
|
|
|
|
def predict(image): |
|
desired_size = (28, 28) |
|
|
|
resized_image = image.resize(desired_size) |
|
gray_image = resized_image.convert("L") |
|
|
|
|
|
image_array = np.asarray(gray_image) |
|
image_sample_flatten = image_array.flatten() |
|
print(image_sample_flatten.shape) |
|
df_sample = pd.DataFrame([image_sample_flatten], columns=column_names) |
|
|
|
image_sampleh2o = h2o.H2OFrame(df_sample) |
|
|
|
prediction = model.predict(image_sampleh2o) |
|
|
|
pandas_df = prediction.as_data_frame() |
|
|
|
|
|
prediction_dict = pandas_df.to_dict(orient="list") |
|
|
|
del prediction_dict['predict'] |
|
new_dict = {label_mapping[key]: value for key, value in prediction_dict.items()} |
|
|
|
|
|
return(new_dict) |
|
|
|
|
|
|
|
examples=[ |
|
['choroidal neovascularization.png'], |
|
['diabetic macular edema.png'], |
|
['drusen.png'], |
|
['normal.png'], |
|
] |
|
demo = gr.Interface(fn=predict, inputs=gr.Image(type="pil"), examples=examples, outputs="label", title="Retinal OCT Medical Image Classification", description='Retinal OCT Image Classification app using OCTMNIST dataset', article='Dataset rights: Jiancheng Yang, Rui Shi, Donglai Wei, Zequan Liu, Lin Zhao, Bilian Ke, Hanspeter Pfister, Bingbing Ni. Yang, Jiancheng, et al. "MedMNIST v2-A large-scale lightweight benchmark for 2D and 3D biomedical image classification." Scientific Data, 2023.') |
|
demo.launch() |
|
|