Upload 24 files
Browse files- .gitattributes +10 -0
- 10.png +3 -0
- 15.png +3 -0
- 23.png +3 -0
- 25.png +3 -0
- 37.png +3 -0
- 48.png +3 -0
- 61.png +3 -0
- 631.png +3 -0
- 8.png +3 -0
- 82.png +3 -0
- README.md +12 -0
- app.py +85 -0
- predictor_ARMD.h5 +3 -0
- predictor_BRVO.h5 +3 -0
- predictor_DN.h5 +3 -0
- predictor_DR.h5 +3 -0
- predictor_Disease_Risk.h5 +3 -0
- predictor_MH.h5 +3 -0
- predictor_MYA.h5 +3 -0
- predictor_ODC.h5 +3 -0
- predictor_TSLN.h5 +3 -0
- requirements.txt +2 -0
- retina_normal.jpeg +0 -0
- índice.gitattributes +37 -0
.gitattributes
CHANGED
|
@@ -32,3 +32,13 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
8.png filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
10.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
15.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
23.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
25.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
37.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
48.png filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
61.png filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
82.png filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
631.png filter=lfs diff=lfs merge=lfs -text
|
10.png
ADDED
|
Git LFS Details
|
15.png
ADDED
|
Git LFS Details
|
23.png
ADDED
|
Git LFS Details
|
25.png
ADDED
|
Git LFS Details
|
37.png
ADDED
|
Git LFS Details
|
48.png
ADDED
|
Git LFS Details
|
61.png
ADDED
|
Git LFS Details
|
631.png
ADDED
|
Git LFS Details
|
8.png
ADDED
|
Git LFS Details
|
82.png
ADDED
|
Git LFS Details
|
README.md
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: Retinal Disease
|
| 3 |
+
emoji: 🐠
|
| 4 |
+
colorFrom: pink
|
| 5 |
+
colorTo: blue
|
| 6 |
+
sdk: gradio
|
| 7 |
+
sdk_version: 2.9.4
|
| 8 |
+
app_file: app.py
|
| 9 |
+
pinned: false
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces#reference
|
app.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import numpy as np
|
| 2 |
+
import pandas as pd
|
| 3 |
+
import matplotlib.pyplot as plt
|
| 4 |
+
import cv2
|
| 5 |
+
import keras
|
| 6 |
+
import gradio as gr
|
| 7 |
+
|
| 8 |
+
SHAPE = (224, 224, 3)
|
| 9 |
+
|
| 10 |
+
predictor_disease_risk = keras.models.load_model('predictor_Disease_Risk.h5')
|
| 11 |
+
predictor_dr = keras.models.load_model('predictor_DR.h5')
|
| 12 |
+
predictor_mh = keras.models.load_model('predictor_MH.h5')
|
| 13 |
+
predictor_odc = keras.models.load_model('predictor_ODC.h5')
|
| 14 |
+
predictor_tsln = keras.models.load_model('predictor_TSLN.h5')
|
| 15 |
+
predictor_dn = keras.models.load_model('predictor_DN.h5')
|
| 16 |
+
predictor_armd = keras.models.load_model('predictor_ARMD.h5')
|
| 17 |
+
predictor_mya = keras.models.load_model('predictor_MYA.h5')
|
| 18 |
+
predictor_brvo = keras.models.load_model('predictor_BRVO.h5')
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
def cut_and_resize(image):
|
| 22 |
+
LOW_TOL = 20
|
| 23 |
+
img_bw = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
|
| 24 |
+
img_bw[img_bw<=LOW_TOL] = 0
|
| 25 |
+
y_nonzero, x_nonzero = np.nonzero(img_bw)
|
| 26 |
+
image = image[np.min(y_nonzero):np.max(y_nonzero), np.min(x_nonzero): np.max(x_nonzero), ]
|
| 27 |
+
return cv2.resize(image, SHAPE[:2], interpolation = cv2.INTER_LINEAR)
|
| 28 |
+
|
| 29 |
+
def simple_normalizer(X):
|
| 30 |
+
return X / 255.0
|
| 31 |
+
|
| 32 |
+
def predict (image_path):
|
| 33 |
+
image = simple_normalizer(cut_and_resize(cv2.imread(image_path)))
|
| 34 |
+
result = predictor_disease_risk.predict(np.array([image]))[0][0]
|
| 35 |
+
|
| 36 |
+
dr = predictor_dr.predict(np.array([image]))[0][0]
|
| 37 |
+
mh = predictor_mh.predict(np.array([image]))[0][0]
|
| 38 |
+
odc = predictor_odc.predict(np.array([image]))[0][0]
|
| 39 |
+
tsln = predictor_tsln.predict(np.array([image]))[0][0]
|
| 40 |
+
dn = predictor_dn.predict(np.array([image]))[0][0]
|
| 41 |
+
armd = predictor_armd.predict(np.array([image]))[0][0]
|
| 42 |
+
mya = predictor_mya.predict(np.array([image]))[0][0]
|
| 43 |
+
brvo = predictor_brvo.predict(np.array([image]))[0][0]
|
| 44 |
+
|
| 45 |
+
diseases = {
|
| 46 |
+
'DR' : float(dr),
|
| 47 |
+
'MH' : float(mh),
|
| 48 |
+
'ODC' : float(odc),
|
| 49 |
+
'DN' : float(dn),
|
| 50 |
+
'TSLN': float(tsln),
|
| 51 |
+
'ARMD': float(armd),
|
| 52 |
+
'MYA' : float(mya),
|
| 53 |
+
'BRVO': float(brvo)
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
to_delete = []
|
| 57 |
+
for k,v in diseases.items():
|
| 58 |
+
if v < 0.05:
|
| 59 |
+
to_delete.append(k)
|
| 60 |
+
|
| 61 |
+
for k in to_delete:
|
| 62 |
+
del diseases[k]
|
| 63 |
+
|
| 64 |
+
if len(diseases) == 0:
|
| 65 |
+
diseases = {'No specific disease': 0.0}
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
return (
|
| 69 |
+
{'Enferma': float(result), 'Sana': 1 - float(result)}, diseases
|
| 70 |
+
)
|
| 71 |
+
|
| 72 |
+
title = 'Retinal Disease Predictor'
|
| 73 |
+
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.'
|
| 74 |
+
article = 'Proyecto HORUS (Helping Oftalmoscopy of Retina Using Supervised Learning'
|
| 75 |
+
|
| 76 |
+
interface = gr.Interface(
|
| 77 |
+
predict,
|
| 78 |
+
inputs = [gr.inputs.Image(source="upload",type="filepath", label="Imagen")],
|
| 79 |
+
outputs= [gr.outputs.Label(num_top_classes=2, label='Retina'), gr.outputs.Label(num_top_classes=4, label='Enfermedad')],
|
| 80 |
+
title = title, description = description, article = article,
|
| 81 |
+
theme = 'peach',
|
| 82 |
+
examples = ['10.png', '82.png', '15.png', '25.png', '48.png', '61.png', '37.png', '631.png', '23.png', '8.png']
|
| 83 |
+
)
|
| 84 |
+
|
| 85 |
+
interface.launch()
|
predictor_ARMD.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b30af261a3a9ef82297dfaf336ac18369e2678bef2a80ce32514ac8874a9ccb8
|
| 3 |
+
size 97691248
|
predictor_BRVO.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d9387d5a74494615cab858c411484617ab211c3f0dd30e17aaeac08732ba6ab0
|
| 3 |
+
size 97691248
|
predictor_DN.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:53c4dec2d3de4384ddd0db5d1b5afe7af5ac40bb5a4b0fbef0a0ca73328e8e0d
|
| 3 |
+
size 97691248
|
predictor_DR.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7dd16cf2d5164072d799e33a96f768cf464555b65a4781bc427fbb1031b71b3c
|
| 3 |
+
size 97691248
|
predictor_Disease_Risk.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1981542e2679d36774a6475df85f5020e90ea24fb9ff7198c2ec21157590b11b
|
| 3 |
+
size 97691248
|
predictor_MH.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cc6452e79ee367e57c11ec3a21c3aa7b5b45483ca80000d0fc47033df105b42d
|
| 3 |
+
size 97691248
|
predictor_MYA.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6cb2e87b845c78fdf76d867caa6f90b43f27aee936a8c68333bb35bef0594ca7
|
| 3 |
+
size 97691248
|
predictor_ODC.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:75d7ed01863b5a6fc1b4b7d444b4723465ff28acf159595c2a1e5bda5e3a20c3
|
| 3 |
+
size 97691248
|
predictor_TSLN.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:402e230b2f0bc588a593ea83ae86817cd6810175c8fa4309ed8985c39820cd27
|
| 3 |
+
size 97691248
|
requirements.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
opencv-python==4.1.2.30
|
| 2 |
+
tensorflow
|
retina_normal.jpeg
ADDED
|
índice.gitattributes
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
*.zstandard filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
82.png filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
61.png filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
37.png filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
23.png filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
8.png filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
631.png filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
15.png filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
48.png filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
10.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
25.png filter=lfs diff=lfs merge=lfs -text
|