trans-unet / src /streamlit_app.py
tobotobitobo's picture
oprava naspet vzdavam to
feee573 verified
Raw
History Blame Contribute Delete
2.64 kB
import streamlit as st
import subprocess
import os
import time
st.title('Swin-Unet Model Testing')
st.write('Click the button below to test the model on the test set.')
# Initialize session state for test status
if 'test_completed' not in st.session_state:
st.session_state.test_completed = False
if st.button('Test Model'):
st.session_state.test_completed = False
st.write('Testing in progress...')
# Clear previous overlays
overlays_dir = os.path.join('overlays')
if os.path.exists(overlays_dir):
for file in os.listdir(overlays_dir):
os.remove(os.path.join(overlays_dir, file))
# Define the command to run the test script with correct paths
command = [
'python', 'src/test_isic.py',
'--dataset', 'ISIC',
'--cfg', 'src/configs/swin_tiny_patch4_window7_224_lite.yaml',
'--is_savenii',
'--root_path', 'src/datasets/test_npz',
'--output_dir', 'src/outputs',
'--max_epochs', '150',
'--base_lr', '0.05',
'--img_size', '224',
'--batch_size', '24',
'--list_dir', 'src/lists/ISIC'
]
# Run the command and capture output
result = subprocess.run(command, capture_output=True, text=True)
# Display only the metrics from the output
output_lines = result.stdout.split('\n')
metrics_section = False
metrics = []
for line in output_lines:
if "Test Results:" in line:
metrics_section = True
continue
if metrics_section and line.strip():
metrics.append(line.strip())
if metrics:
st.subheader('Test Results:')
for metric in metrics:
st.text(metric)
# Filter out progress bar output from stderr
error_lines = [line for line in result.stderr.split('\n')
if line.strip() and not any(x in line for x in ['it/s', '?it/s', 's/it'])]
if error_lines:
st.subheader('Errors:')
st.code('\n'.join(error_lines))
st.session_state.test_completed = True
# Display overlays only after test is completed
if st.session_state.test_completed:
overlays_dir = os.path.join('overlays')
if os.path.exists(overlays_dir):
overlay_files = [f for f in os.listdir(overlays_dir) if f.endswith('.png')]
if overlay_files:
st.subheader('Generated Overlays:')
cols = st.columns(3)
for i, overlay_file in enumerate(overlay_files[:3]): # Show only first 3 overlays
with cols[i]:
st.image(os.path.join(overlays_dir, overlay_file), caption=overlay_file)