Spaces:
Sleeping
Sleeping
File size: 3,258 Bytes
adb3499 2e8f08d 6d524ca 1e811a4 136473c 728557c 2e8f08d adb3499 58ee212 2d545e7 58ee212 e59318c 2e8f08d e59318c 2e8f08d 8a99c3d 2e8f08d 7f130f8 a1f95f0 e35d792 ae8b95a a1f95f0 4bd15f4 4d22a83 4bd15f4 0841896 a1f95f0 75f9fa6 a1f95f0 8571a86 75f9fa6 a1f95f0 6df8d12 a1f95f0 e35d792 2e8f08d fca1311 8f36aa3 fca1311 728557c 21af319 1e811a4 06c43f4 5c0355a 3d8a117 94f1da6 d1dfaf3 21af319 728557c |
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import cv2
import keras
import gradio as gr
SHAPE = (224, 224, 3)
predictor_disease_risk = keras.models.load_model('predictor_Disease_Risk.h5')
predictor_dr = keras.models.load_model('predictor_DR.h5')
predictor_mh = keras.models.load_model('predictor_MH.h5')
predictor_odc = keras.models.load_model('predictor_ODC.h5')
predictor_tsln = keras.models.load_model('predictor_TSLN.h5')
predictor_dn = keras.models.load_model('predictor_DN.h5')
predictor_armd = keras.models.load_model('predictor_ARMD.h5')
predictor_mya = keras.models.load_model('predictor_MYA.h5')
predictor_brvo = keras.models.load_model('predictor_BRVO.h5')
def cut_and_resize(image):
LOW_TOL = 20
img_bw = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
img_bw[img_bw<=LOW_TOL] = 0
y_nonzero, x_nonzero = np.nonzero(img_bw)
image = image[np.min(y_nonzero):np.max(y_nonzero), np.min(x_nonzero): np.max(x_nonzero), ]
return cv2.resize(image, SHAPE[:2], interpolation = cv2.INTER_LINEAR)
def simple_normalizer(X):
return X / 255.0
def predict (image_path):
image = simple_normalizer(cut_and_resize(cv2.imread(image_path)))
result = predictor_disease_risk.predict(np.array([image]))[0][0]
dr = predictor_dr.predict(np.array([image]))[0][0]
mh = predictor_mh.predict(np.array([image]))[0][0]
odc = predictor_odc.predict(np.array([image]))[0][0]
tsln = predictor_tsln.predict(np.array([image]))[0][0]
dn = predictor_dn.predict(np.array([image]))[0][0]
armd = predictor_armd.predict(np.array([image]))[0][0]
mya = predictor_mya.predict(np.array([image]))[0][0]
brvo = predictor_brvo.predict(np.array([image]))[0][0]
diseases = {
'DR' : float(dr),
'MH' : float(mh),
'ODC' : float(odc),
'DN' : float(dn),
'TSLN': float(tsln),
'ARMD': float(armd),
'MYA' : float(mya),
'BRVO': float(brvo)
}
to_delete = []
for k,v in diseases.items():
if v < 0.05:
to_delete.append(k)
for k in to_delete:
del diseases[k]
if len(diseases) == 0:
diseases = {'No specific disease': 0.0}
return (
{'Enferma': float(result), 'Sana': 1 - float(result)}, diseases
)
title = 'Retinal Disease Predictor'
description = 'Modelo de deep learning que permite clasificar im谩genes de la retina en patol贸gicas y no patol贸gicas. Si detecta una retina enferma, realiza un diagn贸stico de la enfermedad concreta entre las siguientes: Diabetic Retinopathy (DR), Media Haze (MH), Optic Disk Cupping (ODC), Drusen (DN), Tessellation (TSLN), Age Related Macular Disease (ARMD), Myopia (MYA), Branch Retinal Vein Occlusion (BRVO) . Las im谩genes deben tener fondo negro.'
article = 'Proyecto HORUS (Helping Oftalmoscopy of Retina Using Supervised Learning'
interface = gr.Interface(
predict,
inputs = [gr.inputs.Image(source="upload",type="filepath", label="Imagen")],
outputs= [gr.outputs.Label(num_top_classes=2, label='Retina'), gr.outputs.Label(num_top_classes=4, label='Enfermedad')],
title = title, description = description, article = article,
theme = 'peach',
examples = ['10.png', '82.png', '15.png', '25.png', '48.png', '61.png', '37.png', '631.png', '23.png', '8.png']
)
interface.launch() |