Spaces:
Running
on
Zero
Running
on
Zero
fix
Browse files
app.py
CHANGED
|
@@ -67,6 +67,7 @@ def get_random_seed(randomize_seed, seed):
|
|
| 67 |
return seed
|
| 68 |
|
| 69 |
# process image
|
|
|
|
| 70 |
def process_image(input_image):
|
| 71 |
input_image = np.array(input_image) # uint8
|
| 72 |
# bg removal if there is no alpha channel
|
|
@@ -74,12 +75,12 @@ def process_image(input_image):
|
|
| 74 |
input_image = rembg.remove(input_image, session=bg_remover) # [H, W, 4]
|
| 75 |
mask = input_image[..., -1] > 0
|
| 76 |
image = recenter_foreground(input_image, mask, border_ratio=0.1)
|
| 77 |
-
image = cv2.resize(image, (518, 518), interpolation=cv2.
|
| 78 |
return image
|
| 79 |
|
| 80 |
# process generation
|
| 81 |
@spaces.GPU(duration=60)
|
| 82 |
-
def process_3d(input_image, num_steps=50, cfg_scale=7
|
| 83 |
|
| 84 |
# seed
|
| 85 |
kiui.seed_everything(seed)
|
|
@@ -89,10 +90,8 @@ def process_3d(input_image, num_steps=50, cfg_scale=7.0, grid_res=384, seed=42,
|
|
| 89 |
output_glb_path = f"output/partpacker_{datetime.now().strftime('%Y%m%d_%H%M%S')}.glb"
|
| 90 |
|
| 91 |
# input image (assume processed to RGBA uint8)
|
| 92 |
-
image = np.
|
| 93 |
-
image = image.astype(np.float32) / 255.0
|
| 94 |
image = image[..., :3] * image[..., 3:4] + (1 - image[..., 3:4]) # white background
|
| 95 |
-
image = (image * 255).astype(np.uint8)
|
| 96 |
image_tensor = torch.from_numpy(image).permute(2, 0, 1).contiguous().unsqueeze(0).float().cuda()
|
| 97 |
|
| 98 |
data = {"cond_images": image_tensor}
|
|
@@ -162,8 +161,8 @@ with block:
|
|
| 162 |
with gr.Column(scale=1):
|
| 163 |
with gr.Row():
|
| 164 |
# input image
|
| 165 |
-
input_image = gr.Image(label="Input Image")
|
| 166 |
-
seg_image = gr.Image(label="Segmentation Result", type="
|
| 167 |
with gr.Accordion("Settings", open=True):
|
| 168 |
# inference steps
|
| 169 |
num_steps = gr.Slider(label="Inference steps", minimum=1, maximum=100, step=1, value=50)
|
|
|
|
| 67 |
return seed
|
| 68 |
|
| 69 |
# process image
|
| 70 |
+
@spaces.GPU(duration=10)
|
| 71 |
def process_image(input_image):
|
| 72 |
input_image = np.array(input_image) # uint8
|
| 73 |
# bg removal if there is no alpha channel
|
|
|
|
| 75 |
input_image = rembg.remove(input_image, session=bg_remover) # [H, W, 4]
|
| 76 |
mask = input_image[..., -1] > 0
|
| 77 |
image = recenter_foreground(input_image, mask, border_ratio=0.1)
|
| 78 |
+
image = cv2.resize(image, (518, 518), interpolation=cv2.INTER_LINEAR)
|
| 79 |
return image
|
| 80 |
|
| 81 |
# process generation
|
| 82 |
@spaces.GPU(duration=60)
|
| 83 |
+
def process_3d(input_image, num_steps=50, cfg_scale=7, grid_res=384, seed=42, simplify_mesh=False, target_num_faces=100000):
|
| 84 |
|
| 85 |
# seed
|
| 86 |
kiui.seed_everything(seed)
|
|
|
|
| 90 |
output_glb_path = f"output/partpacker_{datetime.now().strftime('%Y%m%d_%H%M%S')}.glb"
|
| 91 |
|
| 92 |
# input image (assume processed to RGBA uint8)
|
| 93 |
+
image = input_image.astype(np.float32) / 255.0
|
|
|
|
| 94 |
image = image[..., :3] * image[..., 3:4] + (1 - image[..., 3:4]) # white background
|
|
|
|
| 95 |
image_tensor = torch.from_numpy(image).permute(2, 0, 1).contiguous().unsqueeze(0).float().cuda()
|
| 96 |
|
| 97 |
data = {"cond_images": image_tensor}
|
|
|
|
| 161 |
with gr.Column(scale=1):
|
| 162 |
with gr.Row():
|
| 163 |
# input image
|
| 164 |
+
input_image = gr.Image(label="Input Image", type="numpy")
|
| 165 |
+
seg_image = gr.Image(label="Segmentation Result", type="numpy", format="png", interactive=False, image_mode="RGBA")
|
| 166 |
with gr.Accordion("Settings", open=True):
|
| 167 |
# inference steps
|
| 168 |
num_steps = gr.Slider(label="Inference steps", minimum=1, maximum=100, step=1, value=50)
|