Spaces:
fantos
/
Runtime error

arxivgpt kim commited on
Commit
52b892c
·
verified ·
1 Parent(s): a119d24

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -22
app.py CHANGED
@@ -25,13 +25,15 @@ def resize_image(image, model_input_size=(1024, 1024)):
25
  image = image.resize(model_input_size, Image.BILINEAR)
26
  return image
27
 
 
 
28
  def process(image, background_image=None):
29
  # 이미지 준비
30
- orig_image = Image.fromarray(image).convert("RGB")
31
- w, h = orig_im_size = orig_image.size
32
- image = resize_image(orig_image)
33
- im_np = np.array(image)
34
- im_tensor = torch.tensor(im_np, dtype=torch.float32).permute(2, 0, 1).unsqueeze(0) / 255.0
35
  im_tensor = normalize(im_tensor, [0.5, 0.5, 0.5], [1.0, 1.0, 1.0])
36
  if torch.cuda.is_available():
37
  im_tensor = im_tensor.cuda()
@@ -39,34 +41,33 @@ def process(image, background_image=None):
39
  # 추론
40
  with torch.no_grad():
41
  result = net(im_tensor)
42
-
43
  # 후처리
44
  result = torch.squeeze(F.interpolate(result[0][0], size=(h, w), mode='bilinear', align_corners=False), 0)
45
  result = torch.sigmoid(result)
46
- mask = (result * 255).byte().cpu().numpy()
47
-
48
- # mask 배열이 예상대로 2차원인지 확인하고, 아니라면 조정
 
49
  if mask.ndim > 2:
50
  mask = mask.squeeze()
 
 
 
 
51
 
52
- # mask 배열을 명확히 uint8로 변환
53
- mask = mask.astype(np.uint8)
54
-
55
- # 마스크를 알파 채널로 사용하여 최종 이미지 생성
56
- orig_image = orig_image.convert("RGBA")
57
- final_image = Image.new("RGBA", orig_image.size, (0, 0, 0, 0))
58
- mask_image = Image.fromarray(mask, mode='L')
59
- foreground_image = Image.composite(orig_image, final_image, mask_image)
60
-
61
- # 선택적 배경 이미지 처리
62
- if background_image:
63
- final_image = merge_images(background_image, foreground_image)
64
  else:
65
- final_image = foreground_image
66
 
67
  return final_image
68
 
69
 
 
70
  def merge_images(background_image, foreground_image):
71
  """
72
  배경 이미지에 배경이 제거된 이미지를 투명하게 삽입합니다.
 
25
  image = image.resize(model_input_size, Image.BILINEAR)
26
  return image
27
 
28
+
29
+
30
  def process(image, background_image=None):
31
  # 이미지 준비
32
+ orig_image = Image.fromarray(image).convert("RGBA")
33
+ w, h = orig_image.size
34
+ resized_image = resize_image(orig_image)
35
+ im_np = np.array(resized_image).astype(np.float32) / 255.0
36
+ im_tensor = torch.tensor(im_np).permute(2, 0, 1).unsqueeze(0)
37
  im_tensor = normalize(im_tensor, [0.5, 0.5, 0.5], [1.0, 1.0, 1.0])
38
  if torch.cuda.is_available():
39
  im_tensor = im_tensor.cuda()
 
41
  # 추론
42
  with torch.no_grad():
43
  result = net(im_tensor)
44
+
45
  # 후처리
46
  result = torch.squeeze(F.interpolate(result[0][0], size=(h, w), mode='bilinear', align_corners=False), 0)
47
  result = torch.sigmoid(result)
48
+ mask = result.cpu().numpy()
49
+
50
+ # 마스크 후처리 알파 채널로 변환
51
+ mask = (mask * 255).astype(np.uint8)
52
  if mask.ndim > 2:
53
  mask = mask.squeeze()
54
+
55
+ # 최종 이미지 생성: 마스크를 알파 채널로 사용
56
+ orig_array = np.array(orig_image)
57
+ final_array = np.concatenate((orig_array[:, :, :3], mask[:, :, None]), axis=-1)
58
 
59
+ # 선택적 배경 이미지와 합성
60
+ if background_image is not None:
61
+ background = background_image.convert("RGBA")
62
+ foreground = Image.fromarray(final_array, 'RGBA')
63
+ final_image = merge_images(background, foreground)
 
 
 
 
 
 
 
64
  else:
65
+ final_image = Image.fromarray(final_array, 'RGBA')
66
 
67
  return final_image
68
 
69
 
70
+
71
  def merge_images(background_image, foreground_image):
72
  """
73
  배경 이미지에 배경이 제거된 이미지를 투명하게 삽입합니다.