Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -202,8 +202,8 @@ def train_model(scraper, progress=gr.Progress()):
|
|
202 |
# ======================
|
203 |
def create_interface():
|
204 |
with gr.Blocks() as app:
|
205 |
-
scraper = gr.State(
|
206 |
-
model_runner = gr.State(
|
207 |
|
208 |
with gr.Row():
|
209 |
with gr.Column():
|
@@ -214,47 +214,38 @@ def create_interface():
|
|
214 |
|
215 |
train_btn = gr.Button("Start Training")
|
216 |
training_status = gr.Textbox(label="Training Status")
|
217 |
-
training_progress = gr.Textbox(label="Training Progress", value="
|
218 |
-
|
219 |
with gr.Column():
|
220 |
prompt_input = gr.Textbox(label="Generation Prompt")
|
221 |
model_choice = gr.Radio(["Pretrained", "Custom"], label="Model Type", value="Pretrained")
|
222 |
generate_btn = gr.Button("Generate Image")
|
223 |
output_image = gr.Image(label="Generated Image")
|
|
|
|
|
|
|
|
|
224 |
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
# Training monitoring
|
235 |
-
def monitor_training():
|
236 |
-
while True:
|
237 |
-
if os.path.exists(CONFIG["paths"]["model_save"]):
|
238 |
-
with open(CONFIG["paths"]["model_save"], 'rb') as f:
|
239 |
-
stats = os.stat(f.fileno())
|
240 |
-
yield f"Model size: {stats.st_size//1024}KB"
|
241 |
-
else:
|
242 |
-
yield "No trained model"
|
243 |
-
time.sleep(1)
|
244 |
-
|
245 |
-
app.load(
|
246 |
-
monitor_scraping,
|
247 |
inputs=[scraper],
|
248 |
outputs=[scraping_progress],
|
249 |
every=CONFIG["scraping"]["progress_interval"]
|
250 |
)
|
251 |
|
252 |
-
|
253 |
-
|
254 |
outputs=[training_progress],
|
255 |
-
every=
|
256 |
)
|
257 |
-
|
258 |
# Event handlers
|
259 |
scrape_btn.click(
|
260 |
lambda s, q: s.start_scraping(q),
|
@@ -265,7 +256,7 @@ def create_interface():
|
|
265 |
train_btn.click(
|
266 |
lambda s: train_model(s),
|
267 |
[scraper],
|
268 |
-
[training_status]
|
269 |
)
|
270 |
|
271 |
generate_btn.click(
|
|
|
202 |
# ======================
|
203 |
def create_interface():
|
204 |
with gr.Blocks() as app:
|
205 |
+
scraper = gr.State(WebScraper)
|
206 |
+
model_runner = gr.State(ModelRunner)
|
207 |
|
208 |
with gr.Row():
|
209 |
with gr.Column():
|
|
|
214 |
|
215 |
train_btn = gr.Button("Start Training")
|
216 |
training_status = gr.Textbox(label="Training Status")
|
217 |
+
training_progress = gr.Textbox(label="Training Progress", value="Not started")
|
218 |
+
|
219 |
with gr.Column():
|
220 |
prompt_input = gr.Textbox(label="Generation Prompt")
|
221 |
model_choice = gr.Radio(["Pretrained", "Custom"], label="Model Type", value="Pretrained")
|
222 |
generate_btn = gr.Button("Generate Image")
|
223 |
output_image = gr.Image(label="Generated Image")
|
224 |
+
|
225 |
+
# Real-time updates using event triggers
|
226 |
+
def update_scraping_progress(scraper):
|
227 |
+
return f"{scraper.scraping_progress:.1f}% ({scraper.scraped_count}/{scraper.total_images})"
|
228 |
|
229 |
+
def update_training_progress():
|
230 |
+
if os.path.exists(CONFIG["paths"]["model_save"]):
|
231 |
+
stats = os.stat(CONFIG["paths"]["model_save"])
|
232 |
+
return f"Model size: {stats.st_size//1024}KB"
|
233 |
+
return "No trained model"
|
234 |
+
|
235 |
+
# Set up periodic updates
|
236 |
+
scraping_progress.change(
|
237 |
+
update_scraping_progress,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
inputs=[scraper],
|
239 |
outputs=[scraping_progress],
|
240 |
every=CONFIG["scraping"]["progress_interval"]
|
241 |
)
|
242 |
|
243 |
+
training_progress.change(
|
244 |
+
update_training_progress,
|
245 |
outputs=[training_progress],
|
246 |
+
every=CONFIG["training"]["progress_interval"]
|
247 |
)
|
248 |
+
|
249 |
# Event handlers
|
250 |
scrape_btn.click(
|
251 |
lambda s, q: s.start_scraping(q),
|
|
|
256 |
train_btn.click(
|
257 |
lambda s: train_model(s),
|
258 |
[scraper],
|
259 |
+
[training_status, training_progress]
|
260 |
)
|
261 |
|
262 |
generate_btn.click(
|