File size: 1,714 Bytes
78db24f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3926089
78db24f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

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()