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
|