Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -6,18 +6,29 @@ import os
|
|
6 |
import cv2
|
7 |
import tensorflow as tf
|
8 |
from datetime import datetime
|
9 |
-
import
|
10 |
-
from psycopg2.extras import DictCursor
|
11 |
|
12 |
app = Flask(__name__)
|
13 |
|
14 |
-
# β
1.
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
-
|
18 |
-
"""Get a new database connection."""
|
19 |
-
conn = psycopg2.connect(POSTGRES_URL)
|
20 |
-
return conn
|
21 |
|
22 |
# β
2. Load Model
|
23 |
model = load_model('mobilenet_glaucoma_model.h5', compile=False)
|
@@ -86,7 +97,7 @@ def test_file():
|
|
86 |
|
87 |
@app.route('/predict', methods=['POST'])
|
88 |
def predict():
|
89 |
-
"""Perform prediction and save results to
|
90 |
if 'file' not in request.files:
|
91 |
return jsonify({'error': 'No file uploaded'}), 400
|
92 |
|
@@ -109,15 +120,14 @@ def predict():
|
|
109 |
gradcam_filename = f"gradcam_{int(datetime.now().timestamp())}.png"
|
110 |
save_gradcam_image(img, heatmap, filename=gradcam_filename)
|
111 |
|
112 |
-
# Save results to
|
113 |
-
conn =
|
114 |
cursor = conn.cursor()
|
115 |
cursor.execute("""
|
116 |
INSERT INTO results (image_filename, prediction, confidence, gradcam_filename, timestamp)
|
117 |
-
VALUES (
|
118 |
""", (file.filename, result, confidence, gradcam_filename, datetime.now().isoformat()))
|
119 |
conn.commit()
|
120 |
-
cursor.close()
|
121 |
conn.close()
|
122 |
|
123 |
return jsonify({
|
@@ -133,23 +143,22 @@ def predict():
|
|
133 |
|
134 |
@app.route('/results', methods=['GET'])
|
135 |
def results():
|
136 |
-
"""List all results from the
|
137 |
-
conn =
|
138 |
-
cursor = conn.cursor(
|
139 |
cursor.execute("SELECT * FROM results ORDER BY timestamp DESC")
|
140 |
results_data = cursor.fetchall()
|
141 |
-
cursor.close()
|
142 |
conn.close()
|
143 |
|
144 |
results_list = []
|
145 |
for record in results_data:
|
146 |
results_list.append({
|
147 |
-
'id': record[
|
148 |
-
'image_filename': record[
|
149 |
-
'prediction': record[
|
150 |
-
'confidence': record[
|
151 |
-
'gradcam_filename': record[
|
152 |
-
'timestamp': record[
|
153 |
})
|
154 |
|
155 |
return jsonify(results_list)
|
|
|
6 |
import cv2
|
7 |
import tensorflow as tf
|
8 |
from datetime import datetime
|
9 |
+
import sqlite3
|
|
|
10 |
|
11 |
app = Flask(__name__)
|
12 |
|
13 |
+
# β
1. SQLite database setup
|
14 |
+
DB_PATH = 'results.db'
|
15 |
+
def init_db():
|
16 |
+
conn = sqlite3.connect(DB_PATH)
|
17 |
+
cursor = conn.cursor()
|
18 |
+
cursor.execute("""
|
19 |
+
CREATE TABLE IF NOT EXISTS results (
|
20 |
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
21 |
+
image_filename TEXT,
|
22 |
+
prediction TEXT,
|
23 |
+
confidence REAL,
|
24 |
+
gradcam_filename TEXT,
|
25 |
+
timestamp TEXT
|
26 |
+
)
|
27 |
+
""")
|
28 |
+
conn.commit()
|
29 |
+
conn.close()
|
30 |
|
31 |
+
init_db()
|
|
|
|
|
|
|
32 |
|
33 |
# β
2. Load Model
|
34 |
model = load_model('mobilenet_glaucoma_model.h5', compile=False)
|
|
|
97 |
|
98 |
@app.route('/predict', methods=['POST'])
|
99 |
def predict():
|
100 |
+
"""Perform prediction and save results to SQLite database."""
|
101 |
if 'file' not in request.files:
|
102 |
return jsonify({'error': 'No file uploaded'}), 400
|
103 |
|
|
|
120 |
gradcam_filename = f"gradcam_{int(datetime.now().timestamp())}.png"
|
121 |
save_gradcam_image(img, heatmap, filename=gradcam_filename)
|
122 |
|
123 |
+
# Save results to SQLite
|
124 |
+
conn = sqlite3.connect(DB_PATH)
|
125 |
cursor = conn.cursor()
|
126 |
cursor.execute("""
|
127 |
INSERT INTO results (image_filename, prediction, confidence, gradcam_filename, timestamp)
|
128 |
+
VALUES (?, ?, ?, ?, ?)
|
129 |
""", (file.filename, result, confidence, gradcam_filename, datetime.now().isoformat()))
|
130 |
conn.commit()
|
|
|
131 |
conn.close()
|
132 |
|
133 |
return jsonify({
|
|
|
143 |
|
144 |
@app.route('/results', methods=['GET'])
|
145 |
def results():
|
146 |
+
"""List all results from the SQLite database."""
|
147 |
+
conn = sqlite3.connect(DB_PATH)
|
148 |
+
cursor = conn.cursor()
|
149 |
cursor.execute("SELECT * FROM results ORDER BY timestamp DESC")
|
150 |
results_data = cursor.fetchall()
|
|
|
151 |
conn.close()
|
152 |
|
153 |
results_list = []
|
154 |
for record in results_data:
|
155 |
results_list.append({
|
156 |
+
'id': record[0],
|
157 |
+
'image_filename': record[1],
|
158 |
+
'prediction': record[2],
|
159 |
+
'confidence': record[3],
|
160 |
+
'gradcam_filename': record[4],
|
161 |
+
'timestamp': record[5]
|
162 |
})
|
163 |
|
164 |
return jsonify(results_list)
|