Spaces:
Runtime error
Runtime error
Upload 19 files
Browse files- .gitattributes +5 -0
- Dockerfile +22 -0
- app.py +51 -0
- model.onnx +3 -0
- requirements.txt +4 -0
- sample/1.jpeg +3 -0
- sample/10_left.jpeg +0 -0
- sample/10_right.jpeg +0 -0
- sample/13_left.jpeg +0 -0
- sample/13_right.jpeg +0 -0
- sample/15_left.jpeg +0 -0
- sample/15_right.jpeg +0 -0
- sample/16_left.jpeg +0 -0
- sample/16_right.jpeg +0 -0
- sample/17_left.jpeg +0 -0
- sample/17_right.jpeg +0 -0
- sample/2.jpeg +3 -0
- sample/3.jpeg +3 -0
- sample/4.jpeg +3 -0
- sample/5.jpeg +3 -0
.gitattributes
CHANGED
@@ -33,3 +33,8 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
sample/1.jpeg filter=lfs diff=lfs merge=lfs -text
|
37 |
+
sample/2.jpeg filter=lfs diff=lfs merge=lfs -text
|
38 |
+
sample/3.jpeg filter=lfs diff=lfs merge=lfs -text
|
39 |
+
sample/4.jpeg filter=lfs diff=lfs merge=lfs -text
|
40 |
+
sample/5.jpeg filter=lfs diff=lfs merge=lfs -text
|
Dockerfile
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM python:3.9-slim
|
2 |
+
|
3 |
+
WORKDIR /app
|
4 |
+
|
5 |
+
# Install system dependencies
|
6 |
+
RUN apt-get update && apt-get install -y \
|
7 |
+
libgl1-mesa-glx \
|
8 |
+
libglib2.0-0 \
|
9 |
+
&& rm -rf /var/lib/apt/lists/*
|
10 |
+
|
11 |
+
# Copy requirements first for better caching
|
12 |
+
COPY requirements.txt .
|
13 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
14 |
+
|
15 |
+
# Copy the rest of the application
|
16 |
+
COPY . .
|
17 |
+
|
18 |
+
# Expose the port the app runs on
|
19 |
+
EXPOSE 8080
|
20 |
+
|
21 |
+
# Command to run the application
|
22 |
+
CMD ["python", "app.py"]
|
app.py
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import onnxruntime
|
2 |
+
import numpy as np
|
3 |
+
import gradio as gr
|
4 |
+
from PIL import Image
|
5 |
+
|
6 |
+
labels = {
|
7 |
+
0: "No DR",
|
8 |
+
1: "Mild",
|
9 |
+
2: "Moderate",
|
10 |
+
3: "Severe",
|
11 |
+
4: "Proliferative DR",
|
12 |
+
}
|
13 |
+
session = onnxruntime.InferenceSession('model.onnx')
|
14 |
+
|
15 |
+
def transform_image(image):
|
16 |
+
image = image.resize((224, 224))
|
17 |
+
img_array = np.array(image, dtype=np.float32) / 255.0
|
18 |
+
mean = np.array([0.5353, 0.3628, 0.2486], dtype=np.float32)
|
19 |
+
std = np.array([0.2126, 0.1586, 0.1401], dtype=np.float32)
|
20 |
+
img_array = (img_array - mean) / std
|
21 |
+
img_array = np.transpose(img_array, (2, 0, 1))
|
22 |
+
return np.expand_dims(img_array, axis=0).astype(np.float32)
|
23 |
+
def predict(input_img):
|
24 |
+
"""Predict DR grade from input image using ONNX model"""
|
25 |
+
input_tensor = transform_image(input_img)
|
26 |
+
input_name = session.get_inputs()[0].name
|
27 |
+
output_name = session.get_outputs()[0].name
|
28 |
+
prediction = session.run([output_name], {input_name: input_tensor})[0][0]
|
29 |
+
exp_preds = np.exp(prediction - np.max(prediction))
|
30 |
+
probabilities = exp_preds / exp_preds.sum()
|
31 |
+
confidences = {labels[i]: float(probabilities[i]) for i in labels}
|
32 |
+
#filtered_confidences = {key: confidences[key] for key in ["No DR", "Severe"]}
|
33 |
+
#return filtered_confidences
|
34 |
+
return confidences
|
35 |
+
|
36 |
+
dr_app = gr.Interface(
|
37 |
+
fn=predict,
|
38 |
+
inputs=gr.Image(type="pil"),
|
39 |
+
outputs=gr.Label(),
|
40 |
+
title="Diabetic Retinopathy Detection",
|
41 |
+
description="",
|
42 |
+
examples=[
|
43 |
+
"sample/1.jpeg",
|
44 |
+
"sample/2.jpeg",
|
45 |
+
"sample/3.jpeg",
|
46 |
+
"sample/4.jpeg",
|
47 |
+
],
|
48 |
+
analytics_enabled=False,
|
49 |
+
)
|
50 |
+
if __name__ == "__main__":
|
51 |
+
dr_app.launch(server_name="0.0.0.0", server_port=8080)
|
model.onnx
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:b2df12f77e5a9240ad729d61a4e63c0304cb232bc99f47c4a166c2330efa0780
|
3 |
+
size 28227960
|
requirements.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
onnxruntime
|
2 |
+
numpy
|
3 |
+
gradio
|
4 |
+
Pillow
|
sample/1.jpeg
ADDED
![]() |
Git LFS Details
|
sample/10_left.jpeg
ADDED
![]() |
sample/10_right.jpeg
ADDED
![]() |
sample/13_left.jpeg
ADDED
![]() |
sample/13_right.jpeg
ADDED
![]() |
sample/15_left.jpeg
ADDED
![]() |
sample/15_right.jpeg
ADDED
![]() |
sample/16_left.jpeg
ADDED
![]() |
sample/16_right.jpeg
ADDED
![]() |
sample/17_left.jpeg
ADDED
![]() |
sample/17_right.jpeg
ADDED
![]() |
sample/2.jpeg
ADDED
![]() |
Git LFS Details
|
sample/3.jpeg
ADDED
![]() |
Git LFS Details
|
sample/4.jpeg
ADDED
![]() |
Git LFS Details
|
sample/5.jpeg
ADDED
![]() |
Git LFS Details
|