Spaces:
Paused
Paused
Update web-demos/hugging_face/inpainter/base_inpainter.py
Browse files
web-demos/hugging_face/inpainter/base_inpainter.py
CHANGED
@@ -196,33 +196,38 @@ class ProInpainter:
|
|
196 |
inpainted_frames: numpy array, T, H, W, 3
|
197 |
"""
|
198 |
|
199 |
-
|
200 |
for i in range(len(npframes)):
|
201 |
frames.append(Image.fromarray(npframes[i].astype('uint8'), mode="RGB"))
|
202 |
del npframes
|
203 |
|
204 |
-
|
205 |
-
#
|
|
|
|
|
206 |
if ratio != 1.0:
|
207 |
size = (int(ratio * size[0]) // 2 * 2, int(ratio * size[1]) // 2 * 2)
|
208 |
else:
|
209 |
-
size = (size[0] // 2 * 2, size[1] // 2 * 2) # просто
|
210 |
-
|
211 |
-
# ⚠️ УБРАНО авто-уменьшение до 720p
|
212 |
-
# frames останутся оригинального (или заданного ratio) размера
|
213 |
|
214 |
frames_len = len(frames)
|
|
|
|
|
215 |
frames, size, out_size = resize_frames(frames, size)
|
|
|
216 |
flow_masks, masks_dilated = read_mask_demo(masks, frames_len, size, dilate_radius, dilate_radius)
|
217 |
w, h = size
|
218 |
|
219 |
frames_inp = [np.array(f).astype(np.uint8) for f in frames]
|
220 |
-
|
|
|
221 |
flow_masks = to_tensors()(flow_masks).unsqueeze(0)
|
222 |
masks_dilated = to_tensors()(masks_dilated).unsqueeze(0)
|
223 |
-
frames, flow_masks, masks_dilated = frames.to(self.device), flow_masks.to(self.device), masks_dilated.to(self.device)
|
224 |
|
225 |
-
|
|
|
|
|
|
|
226 |
##############################################
|
227 |
# ProPainter inference
|
228 |
##############################################
|
|
|
196 |
inpainted_frames: numpy array, T, H, W, 3
|
197 |
"""
|
198 |
|
199 |
+
frames = []
|
200 |
for i in range(len(npframes)):
|
201 |
frames.append(Image.fromarray(npframes[i].astype('uint8'), mode="RGB"))
|
202 |
del npframes
|
203 |
|
204 |
+
# Получаем оригинальный размер
|
205 |
+
size = frames[0].size # (width, height)
|
206 |
+
|
207 |
+
# Применяем ratio, только если он отличается от 1.0
|
208 |
if ratio != 1.0:
|
209 |
size = (int(ratio * size[0]) // 2 * 2, int(ratio * size[1]) // 2 * 2)
|
210 |
else:
|
211 |
+
size = (size[0] // 2 * 2, size[1] // 2 * 2) # просто округляем до ближайшего чётного
|
|
|
|
|
|
|
212 |
|
213 |
frames_len = len(frames)
|
214 |
+
|
215 |
+
# ⚠️ resize_frames больше не меняет разрешение, если оно уже чётное
|
216 |
frames, size, out_size = resize_frames(frames, size)
|
217 |
+
|
218 |
flow_masks, masks_dilated = read_mask_demo(masks, frames_len, size, dilate_radius, dilate_radius)
|
219 |
w, h = size
|
220 |
|
221 |
frames_inp = [np.array(f).astype(np.uint8) for f in frames]
|
222 |
+
|
223 |
+
frames = to_tensors()(frames).unsqueeze(0) * 2 - 1
|
224 |
flow_masks = to_tensors()(flow_masks).unsqueeze(0)
|
225 |
masks_dilated = to_tensors()(masks_dilated).unsqueeze(0)
|
|
|
226 |
|
227 |
+
frames = frames.to(self.device)
|
228 |
+
flow_masks = flow_masks.to(self.device)
|
229 |
+
masks_dilated = masks_dilated.to(self.device)
|
230 |
+
|
231 |
##############################################
|
232 |
# ProPainter inference
|
233 |
##############################################
|