Update app.py
Browse files
app.py
CHANGED
|
@@ -90,6 +90,7 @@ model = load_model()
|
|
| 90 |
|
| 91 |
|
| 92 |
# Utility Functions
|
|
|
|
| 93 |
def upload_to_gcs(image_data: io.BytesIO, filename: str, content_type='application/dicom'):
|
| 94 |
"""Uploads an image to Google Cloud Storage."""
|
| 95 |
try:
|
|
@@ -245,8 +246,17 @@ def grad_cam(input_model, img_array, cls, layer_name):
|
|
| 245 |
|
| 246 |
# Compute Grad-CAM
|
| 247 |
def compute_gradcam(model, img_path, layer_name='bn'):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 248 |
preprocessed_input = load_image(img_path)
|
| 249 |
-
predictions =
|
| 250 |
|
| 251 |
original_image = load_image(img_path, preprocess=False)
|
| 252 |
|
|
@@ -342,10 +352,6 @@ def redirect_button(url):
|
|
| 342 |
if button:
|
| 343 |
st.markdown(f'<meta http-equiv="refresh" content="0;url={url}" />', unsafe_allow_html=True)
|
| 344 |
|
| 345 |
-
def load_model():
|
| 346 |
-
model = tf.keras.models.load_model('./model_renamed.h5',custom_objects={'DepthwiseConv2D': tf.keras.layers.DepthwiseConv2D})
|
| 347 |
-
return model
|
| 348 |
-
|
| 349 |
###########################################################################################
|
| 350 |
########################### Streamlit Interface ###########################################
|
| 351 |
###########################################################################################
|
|
|
|
| 90 |
|
| 91 |
|
| 92 |
# Utility Functions
|
| 93 |
+
|
| 94 |
def upload_to_gcs(image_data: io.BytesIO, filename: str, content_type='application/dicom'):
|
| 95 |
"""Uploads an image to Google Cloud Storage."""
|
| 96 |
try:
|
|
|
|
| 246 |
|
| 247 |
# Compute Grad-CAM
|
| 248 |
def compute_gradcam(model, img_path, layer_name='bn'):
|
| 249 |
+
base_model = keras.applications.DenseNet121(weights = './densenet.hdf5', include_top = False)
|
| 250 |
+
x = base_model.output
|
| 251 |
+
x = GlobalAveragePooling2D()(x)
|
| 252 |
+
predictions = Dense(14, activation = "sigmoid")(x)
|
| 253 |
+
model_gradcam = Model(inputs=base_model.input, outputs=predictions)
|
| 254 |
+
model_gradcam.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001),
|
| 255 |
+
loss='sparse_categorical_crossentropy')
|
| 256 |
+
model.load_weights('./pretrained_model.h5')
|
| 257 |
+
|
| 258 |
preprocessed_input = load_image(img_path)
|
| 259 |
+
predictions = model_gradcam.predict(preprocessed_input)
|
| 260 |
|
| 261 |
original_image = load_image(img_path, preprocess=False)
|
| 262 |
|
|
|
|
| 352 |
if button:
|
| 353 |
st.markdown(f'<meta http-equiv="refresh" content="0;url={url}" />', unsafe_allow_html=True)
|
| 354 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 355 |
###########################################################################################
|
| 356 |
########################### Streamlit Interface ###########################################
|
| 357 |
###########################################################################################
|