|
|
import gradio as gr |
|
|
import tensorflow as tf |
|
|
import numpy as np |
|
|
from PIL import Image |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IMG_SIZE = 300 |
|
|
|
|
|
|
|
|
|
|
|
labelInfo = { |
|
|
'lower-gi-tract anatomical-landmarks cecum': 0, |
|
|
'lower-gi-tract anatomical-landmarks ileum': 1, |
|
|
'lower-gi-tract anatomical-landmarks retroflex-rectum': 2, |
|
|
'lower-gi-tract pathological-findings hemorrhoids': 3, |
|
|
'lower-gi-tract pathological-findings polyps': 4, |
|
|
'lower-gi-tract pathological-findings ulcerative-colitis-grade-0-1': 5, |
|
|
'lower-gi-tract pathological-findings ulcerative-colitis-grade-1': 6, |
|
|
'lower-gi-tract pathological-findings ulcerative-colitis-grade-1-2': 7, |
|
|
'lower-gi-tract pathological-findings ulcerative-colitis-grade-2': 8, |
|
|
'lower-gi-tract pathological-findings ulcerative-colitis-grade-2-3': 9, |
|
|
'lower-gi-tract pathological-findings ulcerative-colitis-grade-3': 10, |
|
|
'lower-gi-tract quality-of-mucosal-views bbps-0-1': 11, |
|
|
'lower-gi-tract quality-of-mucosal-views bbps-2-3': 12, |
|
|
'lower-gi-tract quality-of-mucosal-views impacted-stool': 13, |
|
|
'lower-gi-tract therapeutic-interventions dyed-lifted-polyps': 14, |
|
|
'lower-gi-tract therapeutic-interventions dyed-resection-margins': 15, |
|
|
'upper-gi-tract anatomical-landmarks pylorus': 16, |
|
|
'upper-gi-tract anatomical-landmarks retroflex-stomach': 17, |
|
|
'upper-gi-tract anatomical-landmarks z-line': 18, |
|
|
'upper-gi-tract pathological-findings barretts': 19, |
|
|
'upper-gi-tract pathological-findings barretts-short-segment': 20, |
|
|
'upper-gi-tract pathological-findings esophagitis-a': 21, |
|
|
'upper-gi-tract pathological-findings esophagitis-b-d': 22 |
|
|
} |
|
|
|
|
|
model = tf.keras.models.load_model('model/Hyper.h5') |
|
|
|
|
|
|
|
|
def predict(img): |
|
|
img_height = 300 |
|
|
img_width = 300 |
|
|
|
|
|
|
|
|
pil_img = Image.fromarray(img) |
|
|
|
|
|
|
|
|
pil_img = pil_img.resize((img_height, img_width)) |
|
|
|
|
|
|
|
|
x = tf.keras.preprocessing.image.img_to_array(pil_img) |
|
|
|
|
|
x = x.reshape(1, img_height, img_width, 3) |
|
|
np.set_printoptions(formatter={'float': '{: 0.3f}'.format}) |
|
|
|
|
|
|
|
|
predi = model.predict(x) |
|
|
accuracy_of_class = '{:.1f}'.format(predi[0][np.argmax(predi)] * 100) + "%" |
|
|
classes = list(labelInfo.keys())[np.argmax(predi)] |
|
|
context = { |
|
|
'predictedLabel': classes, |
|
|
|
|
|
|
|
|
'accuracy_of_class': accuracy_of_class |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
demo = gr.Interface(fn=predict, inputs="image", outputs="text" , examples=[["O1.jpg"],["O2.jpg"],["O3.jpg"]],) |
|
|
|
|
|
demo.launch() |
|
|
|
|
|
|