dhruv2842 commited on
Commit
3c9ef9c
Β·
verified Β·
1 Parent(s): cc71d5c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -9
app.py CHANGED
@@ -99,16 +99,23 @@ def test_file():
99
 
100
  @app.route('/predict', methods=['POST'])
101
  def predict():
102
- """Perform prediction and save results to SQLite database."""
103
  if 'file' not in request.files:
104
  return jsonify({'error': 'No file uploaded'}), 400
105
 
106
- file = request.files['file']
107
- if file.filename == '':
108
  return jsonify({'error': 'No file selected'}), 400
109
 
110
  try:
111
- img = Image.open(file.stream).convert('RGB')
 
 
 
 
 
 
 
112
  img_array = preprocess_image(img)
113
 
114
  prediction = model.predict(img_array)[0]
@@ -117,18 +124,18 @@ def predict():
117
  result = 'Glaucoma' if glaucoma_prob > normal_prob else 'Normal'
118
  confidence = float(glaucoma_prob) if result == 'Glaucoma' else float(normal_prob)
119
 
120
- # Grad-CAM
121
  heatmap = make_gradcam(img_array, model, last_conv_layer_name='Conv_1_bn')
122
- gradcam_filename = f"gradcam_{int(datetime.now().timestamp())}.png"
123
  save_gradcam_image(img, heatmap, filename=gradcam_filename)
124
 
125
- # Save results to SQLite
126
  conn = sqlite3.connect(DB_PATH)
127
  cursor = conn.cursor()
128
  cursor.execute("""
129
  INSERT INTO results (image_filename, prediction, confidence, gradcam_filename, timestamp)
130
  VALUES (?, ?, ?, ?, ?)
131
- """, (file.filename, result, confidence, gradcam_filename, datetime.now().isoformat()))
132
  conn.commit()
133
  conn.close()
134
 
@@ -137,7 +144,8 @@ def predict():
137
  'confidence': confidence,
138
  'normal_probability': float(normal_prob),
139
  'glaucoma_probability': float(glaucoma_prob),
140
- 'gradcam_image': gradcam_filename
 
141
  })
142
 
143
  except Exception as e:
@@ -174,5 +182,14 @@ def get_gradcam(filename):
174
  else:
175
  return jsonify({'error': 'File not found'}), 404
176
 
 
 
 
 
 
 
 
 
 
177
  if __name__ == '__main__':
178
  app.run(host='0.0.0.0', port=7860)
 
99
 
100
  @app.route('/predict', methods=['POST'])
101
  def predict():
102
+ """Perform prediction, save results (including uploaded image), and save to SQLite database."""
103
  if 'file' not in request.files:
104
  return jsonify({'error': 'No file uploaded'}), 400
105
 
106
+ uploaded_file = request.files['file']
107
+ if uploaded_file.filename == '':
108
  return jsonify({'error': 'No file selected'}), 400
109
 
110
  try:
111
+ # βœ… Save the uploaded image
112
+ timestamp = int(datetime.now().timestamp())
113
+ uploaded_filename = f"uploaded_{timestamp}.png"
114
+ uploaded_file_path = os.path.join(OUTPUT_DIR, uploaded_filename)
115
+ uploaded_file.save(uploaded_file_path)
116
+
117
+ # βœ… Perform prediction
118
+ img = Image.open(uploaded_file_path).convert('RGB')
119
  img_array = preprocess_image(img)
120
 
121
  prediction = model.predict(img_array)[0]
 
124
  result = 'Glaucoma' if glaucoma_prob > normal_prob else 'Normal'
125
  confidence = float(glaucoma_prob) if result == 'Glaucoma' else float(normal_prob)
126
 
127
+ # βœ… Grad-CAM
128
  heatmap = make_gradcam(img_array, model, last_conv_layer_name='Conv_1_bn')
129
+ gradcam_filename = f"gradcam_{timestamp}.png"
130
  save_gradcam_image(img, heatmap, filename=gradcam_filename)
131
 
132
+ # βœ… Save results to SQLite
133
  conn = sqlite3.connect(DB_PATH)
134
  cursor = conn.cursor()
135
  cursor.execute("""
136
  INSERT INTO results (image_filename, prediction, confidence, gradcam_filename, timestamp)
137
  VALUES (?, ?, ?, ?, ?)
138
+ """, (uploaded_filename, result, confidence, gradcam_filename, datetime.now().isoformat()))
139
  conn.commit()
140
  conn.close()
141
 
 
144
  'confidence': confidence,
145
  'normal_probability': float(normal_prob),
146
  'glaucoma_probability': float(glaucoma_prob),
147
+ 'gradcam_image': gradcam_filename,
148
+ 'image_filename': uploaded_filename
149
  })
150
 
151
  except Exception as e:
 
182
  else:
183
  return jsonify({'error': 'File not found'}), 404
184
 
185
+ @app.route('/image/<filename>')
186
+ def get_image(filename):
187
+ """Serve the original uploaded image."""
188
+ filepath = os.path.join(OUTPUT_DIR, filename)
189
+ if os.path.exists(filepath):
190
+ return send_file(filepath, mimetype='image/png')
191
+ else:
192
+ return jsonify({'error': 'File not found'}), 404
193
+
194
  if __name__ == '__main__':
195
  app.run(host='0.0.0.0', port=7860)