11import streamlit as st
2- import os
32import sys
43import subprocess
54from tabs .dataset_viewer import dataset_viewer_tab
@@ -67,6 +66,10 @@ def browse_folder():
6766 return None
6867
6968
69+ def browse_dataset_path ():
70+ st .session_state .dataset_path = browse_folder ()
71+
72+
7073st .set_page_config (page_title = "PerceptionMetrics" , layout = "wide" )
7174
7275PAGES = {
@@ -77,8 +80,8 @@ def browse_folder():
7780
7881# Initialize commonly used session state keys
7982st .session_state .setdefault ("dataset_path" , "" )
80- st .session_state .setdefault ("dataset_type_selectbox " , "COCO" )
81- st .session_state .setdefault ("split_selectbox " , "val" )
83+ st .session_state .setdefault ("dataset_type " , "COCO" )
84+ st .session_state .setdefault ("split " , "val" )
8285st .session_state .setdefault ("config_option" , "Manual Configuration" )
8386st .session_state .setdefault ("confidence_threshold" , 0.5 )
8487st .session_state .setdefault ("nms_threshold" , 0.5 )
@@ -95,66 +98,44 @@ def browse_folder():
9598 # First row: Type and Split
9699 col1 , col2 = st .columns (2 )
97100 with col1 :
98- dataset_type_selectbox = st .selectbox (
101+ st .selectbox (
99102 "Type" ,
100103 ["COCO" , "YOLO" ],
101- key = "dataset_type_selectbox " ,
104+ key = "dataset_type " ,
102105 )
103106 with col2 :
104107 st .selectbox (
105108 "Split" ,
106109 ["train" , "val" , "test" ],
107- key = "split_selectbox " ,
110+ key = "split " ,
108111 )
109112
110113 # Second row: Path and Browse button
111114 col1 , col2 = st .columns ([3 , 1 ])
112115 with col1 :
113- dataset_path_input = st .text_input (
114- "Dataset Folder" ,
115- value = st .session_state .get ("dataset_path" , "" ),
116- key = "dataset_path_input" ,
117- )
116+ st .text_input ("Dataset Folder" , key = "dataset_path" )
118117 with col2 :
119118 st .markdown (
120119 "<div style='margin-bottom: 1.75rem;'></div>" , unsafe_allow_html = True
121120 )
122- if st .button ("Browse" , key = "browse_button" ):
123- folder = browse_folder ()
124- if folder and os .path .isdir (folder ):
125- st .session_state ["dataset_path" ] = folder
126- st .rerun ()
127- elif folder is not None :
128- st .warning ("Selected path is not a valid folder." )
129- else :
130- st .warning (
131- "Could not open folder browser. Please enter the path manually"
132- )
133-
134- if dataset_path_input != st .session_state .get ("dataset_path" , "" ):
135- st .session_state ["dataset_path" ] = dataset_path_input
136- if dataset_type_selectbox != st .session_state .get ("dataset_type" , "" ):
137- st .session_state ["dataset_type" ] = dataset_type_selectbox
121+ st .button ("Browse" , on_click = browse_dataset_path )
138122
139123 # Additional input for YOLO config file
140- if dataset_type_selectbox == "YOLO" :
141- dataset_config_file_uploader = st .file_uploader (
124+ if st . session_state . get ( "dataset_type" , "COCO" ) == "YOLO" :
125+ st .file_uploader (
142126 "Dataset Configuration (.yaml)" ,
143127 type = ["yaml" ],
144128 key = "dataset_config_file" ,
145129 help = "Upload a YAML dataset configuration file." ,
146130 )
147- if dataset_config_file_uploader != st .session_state .get (
148- "dataset_config_file" , None
149- ):
150- st .session_state ["dataset_config_file" ] = dataset_config_file_uploader
151131
152132 with st .expander ("Model Inputs" , expanded = False ):
153133 st .file_uploader (
154134 "Model File (.pt, .onnx, .h5, .pb, .pth, .torchscript)" ,
155135 type = ["pt" , "onnx" , "h5" , "pb" , "pth" , "torchscript" ],
156136 key = "model_file" ,
157137 help = "Upload your trained model file." ,
138+ max_upload_size = 1024 , # MB
158139 )
159140 st .file_uploader (
160141 "Ontology File (.json)" ,
@@ -254,14 +235,15 @@ def browse_folder():
254235 key = "resize_width" ,
255236 help = "Width to resize images for inference" ,
256237 )
238+
257239 # Load model action in sidebar
258240 from perceptionmetrics .models .torch_detection import TorchImageDetectionModel
259241 import json , tempfile
260242
261243 load_model_btn = st .button (
262244 "Load Model" ,
263245 type = "primary" ,
264- use_container_width = True ,
246+ width = "stretch" ,
265247 help = "Load and save the model for use in the Inference tab" ,
266248 key = "sidebar_load_model_btn" ,
267249 )
0 commit comments