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(WebScraper)
|
206 |
-
model_runner = gr.State(ModelRunner)
|
207 |
|
208 |
with gr.Row():
|
209 |
with gr.Column():
|
@@ -214,38 +214,47 @@ 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 |
-
# 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 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
inputs=[scraper],
|
239 |
outputs=[scraping_progress],
|
240 |
every=CONFIG["scraping"]["progress_interval"]
|
241 |
)
|
242 |
|
243 |
-
|
244 |
-
|
245 |
outputs=[training_progress],
|
246 |
-
every=
|
247 |
)
|
248 |
-
|
249 |
# Event handlers
|
250 |
scrape_btn.click(
|
251 |
lambda s, q: s.start_scraping(q),
|
@@ -256,7 +265,7 @@ def create_interface():
|
|
256 |
train_btn.click(
|
257 |
lambda s: train_model(s),
|
258 |
[scraper],
|
259 |
-
[training_status
|
260 |
)
|
261 |
|
262 |
generate_btn.click(
|
|
|
202 |
# ======================
|
203 |
def create_interface():
|
204 |
with gr.Blocks() as app:
|
205 |
+
scraper = gr.State(lambda: WebScraper())
|
206 |
+
model_runner = gr.State(lambda: 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="Epoch 0/10 | Batch 0/0")
|
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 |
+
# Scraping monitoring
|
226 |
+
def monitor_scraping(scraper):
|
227 |
+
while True:
|
228 |
+
if hasattr(scraper, 'scraping_progress'):
|
229 |
+
yield f"{scraper.scraping_progress:.1f}% ({scraper.scraped_count}/{scraper.total_images})"
|
230 |
+
else:
|
231 |
+
yield "0% (0/0)"
|
232 |
+
time.sleep(CONFIG["scraping"]["progress_interval"])
|
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 |
+
app.load(
|
253 |
+
monitor_training,
|
254 |
outputs=[training_progress],
|
255 |
+
every=1
|
256 |
)
|
257 |
+
|
258 |
# Event handlers
|
259 |
scrape_btn.click(
|
260 |
lambda s, q: s.start_scraping(q),
|
|
|
265 |
train_btn.click(
|
266 |
lambda s: train_model(s),
|
267 |
[scraper],
|
268 |
+
[training_status]
|
269 |
)
|
270 |
|
271 |
generate_btn.click(
|