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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -14
app.py CHANGED
@@ -185,6 +185,7 @@ def calculate_dimensions(aspect_ratio: str, base_size: int = 512) -> tuple[int,
185
  return base_size * 4 // 3, base_size
186
  return base_size, base_size
187
 
 
188
  def generate_background(prompt: str, aspect_ratio: str) -> Image.Image:
189
  try:
190
  width, height = calculate_dimensions(aspect_ratio)
@@ -217,7 +218,6 @@ def generate_background(prompt: str, aspect_ratio: str) -> Image.Image:
217
  print(f"Background generation error: {str(e)}")
218
  return Image.new('RGB', (512, 512), 'white')
219
 
220
-
221
  def create_position_grid():
222
  return """
223
  <div class="position-grid" style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: 150px; margin: auto;">
@@ -274,22 +274,26 @@ def combine_with_background(foreground: Image.Image, background: Image.Image,
274
  result.paste(scaled_foreground, (x, y), scaled_foreground)
275
  return result
276
 
277
- @spaces.GPU
278
  def _gpu_process(img: Image.Image, prompt: str | BoundingBox | None) -> tuple[Image.Image, BoundingBox | None, list[str]]:
279
  time_log: list[str] = []
280
- if isinstance(prompt, str):
 
 
 
 
 
 
 
 
 
281
  t0 = time.time()
282
- bbox = gd_detect(img, prompt)
283
- time_log.append(f"detect: {time.time() - t0}")
284
- if not bbox:
285
- print(time_log[0])
286
- raise gr.Error("No object detected")
287
- else:
288
- bbox = prompt
289
- t0 = time.time()
290
- mask = segmenter(img, bbox)
291
- time_log.append(f"segment: {time.time() - t0}")
292
- return mask, bbox, time_log
293
 
294
  def _process(img: Image.Image, prompt: str | BoundingBox | None, bg_prompt: str | None = None, aspect_ratio: str = "1:1") -> tuple[tuple[Image.Image, Image.Image, Image.Image], gr.DownloadButton]:
295
  try:
 
185
  return base_size * 4 // 3, base_size
186
  return base_size, base_size
187
 
188
+ @spaces.GPU(duration=40) # 배경 생성은 30초 제한
189
  def generate_background(prompt: str, aspect_ratio: str) -> Image.Image:
190
  try:
191
  width, height = calculate_dimensions(aspect_ratio)
 
218
  print(f"Background generation error: {str(e)}")
219
  return Image.new('RGB', (512, 512), 'white')
220
 
 
221
  def create_position_grid():
222
  return """
223
  <div class="position-grid" style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: 150px; margin: auto;">
 
274
  result.paste(scaled_foreground, (x, y), scaled_foreground)
275
  return result
276
 
277
+ @spaces.GPU(duration=120) # 60초 동안만 GPU 리소스 사용
278
  def _gpu_process(img: Image.Image, prompt: str | BoundingBox | None) -> tuple[Image.Image, BoundingBox | None, list[str]]:
279
  time_log: list[str] = []
280
+ try:
281
+ if isinstance(prompt, str):
282
+ t0 = time.time()
283
+ bbox = gd_detect(img, prompt)
284
+ time_log.append(f"detect: {time.time() - t0}")
285
+ if not bbox:
286
+ print(time_log[0])
287
+ raise gr.Error("No object detected")
288
+ else:
289
+ bbox = prompt
290
  t0 = time.time()
291
+ mask = segmenter(img, bbox)
292
+ time_log.append(f"segment: {time.time() - t0}")
293
+ return mask, bbox, time_log
294
+ except Exception as e:
295
+ print(f"GPU process error: {str(e)}")
296
+ raise
 
 
 
 
 
297
 
298
  def _process(img: Image.Image, prompt: str | BoundingBox | None, bg_prompt: str | None = None, aspect_ratio: str = "1:1") -> tuple[tuple[Image.Image, Image.Image, Image.Image], gr.DownloadButton]:
299
  try: