tmdwo commited on
Commit
bdfff19
ยท
verified ยท
1 Parent(s): b4a6522

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -4
app.py CHANGED
@@ -249,6 +249,9 @@ def draw_points_on_image(image, layer_manager):
249
  # ============ UI FUNCTIONS ============
250
  def create_new_layer(name, current_manager):
251
  """์ƒˆ ๋ ˆ์ด์–ด ์ƒ์„ฑ"""
 
 
 
252
  if not name.strip():
253
  return current_manager, create_layer_status_html(current_manager), gr.Dropdown(choices=[]), "Please enter a layer name"
254
 
@@ -325,6 +328,9 @@ def create_layer_status_html(current_manager):
325
 
326
  def click_on_image(current_manager, image, point_mode, evt: gr.SelectData):
327
  """์ด๋ฏธ์ง€ ํด๋ฆญ ์ฒ˜๋ฆฌ - Include/Exclude ๋ชจ๋“œ์— ๋”ฐ๋ผ ํฌ์ธํŠธ ์ถ”๊ฐ€"""
 
 
 
328
  if image is None or current_manager.current_layer_id is None:
329
  return image, current_manager, create_layer_status_html(current_manager), "Please select image and layer"
330
 
@@ -349,6 +355,9 @@ def click_on_image(current_manager, image, point_mode, evt: gr.SelectData):
349
 
350
  def segment_all_layers(current_manager, image, opacity, border_width):
351
  """๋ชจ๋“  ๋ ˆ์ด์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์‹คํ–‰"""
 
 
 
352
  if image is None:
353
  return None, current_manager, create_layer_status_html(current_manager), "Please upload an image", pd.DataFrame()
354
 
@@ -414,6 +423,9 @@ def segment_all_layers(current_manager, image, opacity, border_width):
414
 
415
  def clear_current_layer(current_manager, image, opacity, border_width):
416
  """ํ˜„์žฌ ๋ ˆ์ด์–ด ์ดˆ๊ธฐํ™”"""
 
 
 
417
  if current_manager.current_layer_id:
418
  current_manager.clear_current_layer()
419
 
@@ -433,6 +445,9 @@ def clear_current_layer(current_manager, image, opacity, border_width):
433
 
434
  def refresh_visualization(current_manager, image, opacity, border_width):
435
  """์‹œ๊ฐํ™” ์ƒˆ๋กœ๊ณ ์นจ"""
 
 
 
436
  if image is None:
437
  return None, "Please upload an image", pd.DataFrame()
438
 
@@ -456,9 +471,6 @@ custom_css="""
456
  # No custom JavaScript needed anymore
457
  custom_js = ""
458
 
459
- # ์ „์—ญ ๋ ˆ์ด์–ด ๋งค๋‹ˆ์ €
460
- layer_manager = LayerManager()
461
-
462
  with gr.Blocks(css=custom_css) as demo:
463
  with gr.Column(elem_id="col-container"):
464
  gr.Markdown("# **SAM3 Layer Segmentation Tool**", elem_id="main-title")
@@ -505,7 +517,7 @@ with gr.Blocks(css=custom_css) as demo:
505
 
506
  # ์ƒํƒœ
507
  status_text = gr.Textbox(label="Status", interactive=False)
508
- st_layer_manager = gr.State(layer_manager)
509
  point_mode_state = gr.State("positive") # "positive" or "negative"
510
 
511
  with gr.Column(scale=2):
@@ -530,6 +542,9 @@ with gr.Blocks(css=custom_css) as demo:
530
 
531
  # ๋ ˆ์ด์–ด ์„ ํƒ
532
  def on_layer_select(layer_id, mgr):
 
 
 
533
  if layer_id:
534
  mgr.set_current_layer(layer_id)
535
  return mgr, create_layer_status_html(mgr), f"Layer '{mgr.layers[layer_id]['name']}' selected"
 
249
  # ============ UI FUNCTIONS ============
250
  def create_new_layer(name, current_manager):
251
  """์ƒˆ ๋ ˆ์ด์–ด ์ƒ์„ฑ"""
252
+ if current_manager is None:
253
+ current_manager = LayerManager()
254
+
255
  if not name.strip():
256
  return current_manager, create_layer_status_html(current_manager), gr.Dropdown(choices=[]), "Please enter a layer name"
257
 
 
328
 
329
  def click_on_image(current_manager, image, point_mode, evt: gr.SelectData):
330
  """์ด๋ฏธ์ง€ ํด๋ฆญ ์ฒ˜๋ฆฌ - Include/Exclude ๋ชจ๋“œ์— ๋”ฐ๋ผ ํฌ์ธํŠธ ์ถ”๊ฐ€"""
331
+ if current_manager is None:
332
+ current_manager = LayerManager()
333
+
334
  if image is None or current_manager.current_layer_id is None:
335
  return image, current_manager, create_layer_status_html(current_manager), "Please select image and layer"
336
 
 
355
 
356
  def segment_all_layers(current_manager, image, opacity, border_width):
357
  """๋ชจ๋“  ๋ ˆ์ด์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์‹คํ–‰"""
358
+ if current_manager is None:
359
+ current_manager = LayerManager()
360
+
361
  if image is None:
362
  return None, current_manager, create_layer_status_html(current_manager), "Please upload an image", pd.DataFrame()
363
 
 
423
 
424
  def clear_current_layer(current_manager, image, opacity, border_width):
425
  """ํ˜„์žฌ ๋ ˆ์ด์–ด ์ดˆ๊ธฐํ™”"""
426
+ if current_manager is None:
427
+ current_manager = LayerManager()
428
+
429
  if current_manager.current_layer_id:
430
  current_manager.clear_current_layer()
431
 
 
445
 
446
  def refresh_visualization(current_manager, image, opacity, border_width):
447
  """์‹œ๊ฐํ™” ์ƒˆ๋กœ๊ณ ์นจ"""
448
+ if current_manager is None:
449
+ current_manager = LayerManager()
450
+
451
  if image is None:
452
  return None, "Please upload an image", pd.DataFrame()
453
 
 
471
  # No custom JavaScript needed anymore
472
  custom_js = ""
473
 
 
 
 
474
  with gr.Blocks(css=custom_css) as demo:
475
  with gr.Column(elem_id="col-container"):
476
  gr.Markdown("# **SAM3 Layer Segmentation Tool**", elem_id="main-title")
 
517
 
518
  # ์ƒํƒœ
519
  status_text = gr.Textbox(label="Status", interactive=False)
520
+ st_layer_manager = gr.State(None) # LayerManager๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ƒ์„ฑ
521
  point_mode_state = gr.State("positive") # "positive" or "negative"
522
 
523
  with gr.Column(scale=2):
 
542
 
543
  # ๋ ˆ์ด์–ด ์„ ํƒ
544
  def on_layer_select(layer_id, mgr):
545
+ if mgr is None:
546
+ mgr = LayerManager()
547
+
548
  if layer_id:
549
  mgr.set_current_layer(layer_id)
550
  return mgr, create_layer_status_html(mgr), f"Layer '{mgr.layers[layer_id]['name']}' selected"