ginipick commited on
Commit
a3055a6
Β·
verified Β·
1 Parent(s): 9701537

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -66
app.py CHANGED
@@ -304,11 +304,15 @@ def _process(img: Image.Image, prompt: str | BoundingBox | None, bg_prompt: str
304
  new_size = (int(img.width * ratio), int(img.height * ratio))
305
  img = img.resize(new_size, Image.LANCZOS)
306
 
307
- # λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ λͺ¨λ‹ˆν„°λ§
308
- if torch.cuda.is_available():
309
- torch.cuda.reset_peak_memory_stats()
 
 
 
 
310
 
311
- with torch.cuda.amp.autocast():
312
  mask, bbox, time_log = _gpu_process(img, prompt)
313
  masked_alpha = apply_mask(img, mask, defringe=True)
314
 
@@ -318,11 +322,12 @@ def _process(img: Image.Image, prompt: str | BoundingBox | None, bg_prompt: str
318
  else:
319
  combined = Image.alpha_composite(Image.new("RGBA", masked_alpha.size, "white"), masked_alpha)
320
 
321
- clear_memory() # 쀑간 λ©”λͺ¨λ¦¬ 정리
322
 
323
  return (img, combined, masked_alpha), gr.DownloadButton(value=temp.name, interactive=True)
324
  except Exception as e:
325
  clear_memory()
 
326
  raise gr.Error(f"Processing failed: {str(e)}")
327
 
328
  def on_change_bbox(prompts: dict[str, Any] | None):
@@ -621,69 +626,66 @@ with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:
621
 
622
  # UI ꡬ성 λΆ€λΆ„μ˜ λ§ˆμ§€λ§‰μ—μ„œ μ˜ˆμ‹œ ν…Œμ΄λΈ” 뢀뢄을 μˆ˜μ •
623
 
624
- # μ˜ˆμ‹œ ν…Œμ΄λΈ” μΆ”κ°€
625
- examples_path = "examples" # μ˜ˆμ‹œ 이미지가 μžˆλŠ” 디렉토리
626
- gr.HTML(f"""
627
- <div style="margin-top: 2em; padding: 1em;">
628
- <h2 style="text-align: center; color: #2196F3; margin-bottom: 1em;">Examples</h2>
629
- <div class="examples-container" style="overflow-x: auto;">
630
- <table style="width: 100%; border-collapse: collapse; margin: auto; background: white; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
631
- <thead>
632
- <tr style="background: #f7f7f7;">
633
- <th style="padding: 1em; border: 1px solid #ddd; min-width: 120px;">Step</th>
634
- <th style="padding: 1em; border: 1px solid #ddd; min-width: 200px;">Example 1</th>
635
- <th style="padding: 1em; border: 1px solid #ddd; min-width: 200px;">Example 2</th>
636
- </tr>
637
- </thead>
638
- <tbody>
639
- <tr>
640
- <td style="padding: 1em; border: 1px solid #ddd;">Upload Image</td>
641
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
642
- <img src="examples/aa1.png" style="max-width: 150px; height: auto;" alt="Example 1 Input">
643
- </td>
644
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
645
- <img src="examples/ab1.png" style="max-width: 150px; height: auto;" alt="Example 2 Input">
646
- </td>
647
- </tr>
648
- <tr>
649
- <td style="padding: 1em; border: 1px solid #ddd;">Object Extract</td>
650
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">text</td>
651
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">sunglasses</td>
652
- </tr>
653
- <tr>
654
- <td style="padding: 1em; border: 1px solid #ddd;">Background Prompt</td>
655
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">The Alps in Spring with Blossoming Flowers</td>
656
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">ν•˜μ™€μ΄ beach</td>
657
- </tr>
658
- <tr>
659
- <td style="padding: 1em; border: 1px solid #ddd;">Object Cutoff Image</td>
660
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
661
- <img src="examples/aa2.png" style="max-width: 150px; height: auto;" alt="Example 1 Cutoff">
662
- </td>
663
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
664
- <img src="examples/ab2.png" style="max-width: 150px; height: auto;" alt="Example 2 Cutoff">
665
- </td>
666
- </tr>
667
- <tr>
668
- <td style="padding: 1em; border: 1px solid #ddd;">Result Image</td>
669
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
670
- <img src="examples/aa3.png" style="max-width: 150px; height: auto;" alt="Example 1 Result">
671
- </td>
672
- <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
673
- <img src="examples/ab3.png" style="max-width: 150px; height: auto;" alt="Example 2 Result">
674
- </td>
675
- </tr>
676
- </tbody>
677
- </table>
678
- </div>
679
  </div>
680
- """)
681
-
682
- demo.queue(max_size=10) # 큐 크기 μ œν•œ
683
  demo.launch(
684
  server_name="0.0.0.0",
685
  server_port=7860,
686
- share=False,
687
- max_threads=2, # μŠ€λ ˆλ“œ 수 μ œν•œ
688
- allowed_paths=["examples"]
689
  )
 
304
  new_size = (int(img.width * ratio), int(img.height * ratio))
305
  img = img.resize(new_size, Image.LANCZOS)
306
 
307
+ # CUDA λ©”λͺ¨λ¦¬ 관리 μˆ˜μ •
308
+ try:
309
+ if torch.cuda.is_available():
310
+ current_device = torch.cuda.current_device()
311
+ torch.cuda.reset_peak_memory_stats(current_device)
312
+ except Exception as e:
313
+ print(f"CUDA memory stats reset failed: {e}")
314
 
315
+ with torch.cuda.amp.autocast(enabled=torch.cuda.is_available()):
316
  mask, bbox, time_log = _gpu_process(img, prompt)
317
  masked_alpha = apply_mask(img, mask, defringe=True)
318
 
 
322
  else:
323
  combined = Image.alpha_composite(Image.new("RGBA", masked_alpha.size, "white"), masked_alpha)
324
 
325
+ clear_memory()
326
 
327
  return (img, combined, masked_alpha), gr.DownloadButton(value=temp.name, interactive=True)
328
  except Exception as e:
329
  clear_memory()
330
+ print(f"Processing error: {str(e)}")
331
  raise gr.Error(f"Processing failed: {str(e)}")
332
 
333
  def on_change_bbox(prompts: dict[str, Any] | None):
 
626
 
627
  # UI ꡬ성 λΆ€λΆ„μ˜ λ§ˆμ§€λ§‰μ—μ„œ μ˜ˆμ‹œ ν…Œμ΄λΈ” 뢀뢄을 μˆ˜μ •
628
 
629
+ # μ˜ˆμ‹œ ν…Œμ΄λΈ” HTML μˆ˜μ •
630
+ gr.HTML("""
631
+ <div style="margin-top: 2em; padding: 1em;">
632
+ <h2 style="text-align: center; color: #2196F3; margin-bottom: 1em;">Examples</h2>
633
+ <div class="examples-container" style="overflow-x: auto;">
634
+ <table style="width: 100%; border-collapse: collapse; margin: auto; background: white; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
635
+ <thead>
636
+ <tr style="background: #f7f7f7;">
637
+ <th style="padding: 1em; border: 1px solid #ddd; min-width: 120px;">Step</th>
638
+ <th style="padding: 1em; border: 1px solid #ddd; min-width: 200px;">Example 1</th>
639
+ <th style="padding: 1em; border: 1px solid #ddd; min-width: 200px;">Example 2</th>
640
+ </tr>
641
+ </thead>
642
+ <tbody>
643
+ <tr>
644
+ <td style="padding: 1em; border: 1px solid #ddd;">Upload Image</td>
645
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
646
+ <img src="https://raw.githubusercontent.com/your-username/your-repo/main/examples/example1_input.jpg" style="max-width: 150px; height: auto;" alt="Example 1 Input">
647
+ </td>
648
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
649
+ <img src="https://raw.githubusercontent.com/your-username/your-repo/main/examples/example2_input.jpg" style="max-width: 150px; height: auto;" alt="Example 2 Input">
650
+ </td>
651
+ </tr>
652
+ <tr>
653
+ <td style="padding: 1em; border: 1px solid #ddd;">Object Extract</td>
654
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">text</td>
655
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">sunglasses</td>
656
+ </tr>
657
+ <tr>
658
+ <td style="padding: 1em; border: 1px solid #ddd;">Background Prompt</td>
659
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">The Alps in Spring with Blossoming Flowers</td>
660
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">ν•˜μ™€μ΄ beach</td>
661
+ </tr>
662
+ <tr>
663
+ <td style="padding: 1em; border: 1px solid #ddd;">Object Cutoff Image</td>
664
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
665
+ <img src="https://raw.githubusercontent.com/your-username/your-repo/main/examples/example1_cutoff.jpg" style="max-width: 150px; height: auto;" alt="Example 1 Cutoff">
666
+ </td>
667
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
668
+ <img src="https://raw.githubusercontent.com/your-username/your-repo/main/examples/example2_cutoff.jpg" style="max-width: 150px; height: auto;" alt="Example 2 Cutoff">
669
+ </td>
670
+ </tr>
671
+ <tr>
672
+ <td style="padding: 1em; border: 1px solid #ddd;">Result Image</td>
673
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
674
+ <img src="https://raw.githubusercontent.com/your-username/your-repo/main/examples/example1_result.jpg" style="max-width: 150px; height: auto;" alt="Example 1 Result">
675
+ </td>
676
+ <td style="padding: 1em; border: 1px solid #ddd; text-align: center;">
677
+ <img src="https://raw.githubusercontent.com/your-username/your-repo/main/examples/example2_result.jpg" style="max-width: 150px; height: auto;" alt="Example 2 Result">
678
+ </td>
679
+ </tr>
680
+ </tbody>
681
+ </table>
 
 
682
  </div>
683
+ </div>
684
+ """)
 
685
  demo.launch(
686
  server_name="0.0.0.0",
687
  server_port=7860,
688
+ share=True, # 곡개 링크 ν™œμ„±ν™”
689
+ max_threads=2,
690
+ allowed_paths=[examples_path] # μˆ˜μ •λœ 예제 경둜 μ‚¬μš©
691
  )