Spaces:
fantos
/
Runtime error

arxivgpt kim commited on
Commit
a6a92bb
·
verified ·
1 Parent(s): e84892b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -3
app.py CHANGED
@@ -37,12 +37,21 @@ def process(image, background_image=None):
37
  with torch.no_grad():
38
  result = net(im_tensor)
39
 
40
- # 후처리
41
  result = torch.squeeze(F.interpolate(result[0][0], size=(h, w), mode='bilinear', align_corners=False), 0)
42
  result = torch.sigmoid(result)
43
- mask = (result * 255).byte().cpu().numpy()
44
 
45
- mask_image = Image.fromarray(mask).convert("L")
 
 
 
 
 
 
 
 
 
46
  final_image = Image.new("RGBA", orig_image.size)
47
  final_image.paste(orig_image, mask=mask_image)
48
 
@@ -52,6 +61,31 @@ def process(image, background_image=None):
52
 
53
  return final_image
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  title = "Background Removal"
56
  description = "This is a demo for BRIA RMBG 1.4 using the BRIA RMBG-1.4 image matting model as backbone."
57
 
 
37
  with torch.no_grad():
38
  result = net(im_tensor)
39
 
40
+ # 후처리
41
  result = torch.squeeze(F.interpolate(result[0][0], size=(h, w), mode='bilinear', align_corners=False), 0)
42
  result = torch.sigmoid(result)
43
+ mask = (result * 255).byte().cpu().numpy() # 마스크를 0~255 사이의 값으로 변환
44
 
45
+ # mask 배열이 예상대로 2차원인지 확인하고, 아니라면 조정합니다.
46
+ if mask.ndim > 2:
47
+ mask = mask.squeeze() # 차원 축소
48
+
49
+ # mask 배열을 명확히 uint8로 변환합니다.
50
+ mask = mask.astype(np.uint8)
51
+
52
+ # mask를 PIL 이미지로 변환
53
+ mask_image = Image.fromarray(mask, 'L') # 'L' 모드는 그레이스케일 이미지를 나타냅니다.
54
+
55
  final_image = Image.new("RGBA", orig_image.size)
56
  final_image.paste(orig_image, mask=mask_image)
57
 
 
61
 
62
  return final_image
63
 
64
+ def merge_images(background_image, foreground_image):
65
+ """
66
+ 배경 이미지에 배경이 제거된 이미지를 투명하게 삽입합니다.
67
+ 배경이 제거된 이미지는 배경 이미지 중앙에 30% 크기로 축소되어 삽입됩니다.
68
+ """
69
+ background = background_image.convert("RGBA")
70
+ foreground = foreground_image.convert("RGBA")
71
+
72
+ # 전경 이미지를 배경 이미지의 30% 크기로 조정
73
+ scale_factor = 0.3
74
+ foreground_width = int(background.width * scale_factor)
75
+ foreground_height = int(foreground.height * foreground_width / foreground.width)
76
+ new_size = (foreground_width, foreground_height)
77
+ foreground_resized = foreground.resize(new_size, Image.Resampling.LANCZOS)
78
+
79
+ # 전경 이미지를 배경 이미지의 가운데에 위치시키기 위한 좌표 계산
80
+ x = (background.width - foreground_width) // 2
81
+ y = (background.height - foreground_height) // 2
82
+
83
+ # 배경 이미지 위에 전경 이미지를 붙임
84
+ background.paste(foreground_resized, (x, y), foreground_resized)
85
+
86
+ return background
87
+
88
+
89
  title = "Background Removal"
90
  description = "This is a demo for BRIA RMBG 1.4 using the BRIA RMBG-1.4 image matting model as backbone."
91