Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -122,7 +122,9 @@ def preprocess_image(image: Image.Image) -> Tuple[str, Image.Image]:
|
|
| 122 |
trial_id = str(uuid.uuid4())
|
| 123 |
processed_image = g.trellis_pipeline.preprocess_image(image)
|
| 124 |
if processed_image is not None:
|
| 125 |
-
|
|
|
|
|
|
|
| 126 |
return trial_id, processed_image
|
| 127 |
else:
|
| 128 |
print("Error: Processed image is None")
|
|
@@ -173,7 +175,9 @@ def unpack_state(state: dict) -> Tuple[Gaussian, edict, str]:
|
|
| 173 |
|
| 174 |
@spaces.GPU
|
| 175 |
def image_to_3d(trial_id: str, seed: int, randomize_seed: bool, ss_guidance_strength: float, ss_sampling_steps: int, slat_guidance_strength: float, slat_sampling_steps: int) -> Tuple[dict, str]:
|
| 176 |
-
|
|
|
|
|
|
|
| 177 |
print("Error: No trial_id provided")
|
| 178 |
return None, None
|
| 179 |
|
|
@@ -182,11 +186,15 @@ def image_to_3d(trial_id: str, seed: int, randomize_seed: bool, ss_guidance_stre
|
|
| 182 |
seed = np.random.randint(0, MAX_SEED)
|
| 183 |
|
| 184 |
image_path = f"{TMP_DIR}/{trial_id}.png"
|
|
|
|
|
|
|
| 185 |
if not os.path.exists(image_path):
|
| 186 |
print(f"Error: Image file not found at {image_path}")
|
| 187 |
return None, None
|
| 188 |
|
| 189 |
image = Image.open(image_path)
|
|
|
|
|
|
|
| 190 |
|
| 191 |
outputs = g.trellis_pipeline.run(
|
| 192 |
image,
|
|
@@ -295,34 +303,9 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 295 |
lines=3
|
| 296 |
)
|
| 297 |
|
| 298 |
-
# 이미지
|
| 299 |
image_prompt = gr.Image(label="Image Prompt", image_mode="RGBA", type="pil", height=300)
|
| 300 |
|
| 301 |
-
# Examples 갤러리를 image_prompt 아래로 이동
|
| 302 |
-
if example_images:
|
| 303 |
-
with gr.Row():
|
| 304 |
-
gallery = gr.Gallery(
|
| 305 |
-
value=example_images,
|
| 306 |
-
label="Example Images",
|
| 307 |
-
show_label=True,
|
| 308 |
-
elem_id="gallery",
|
| 309 |
-
columns=5,
|
| 310 |
-
rows=5,
|
| 311 |
-
height=200,
|
| 312 |
-
allow_preview=True
|
| 313 |
-
)
|
| 314 |
-
|
| 315 |
-
# Gallery 클릭 이벤트 추가
|
| 316 |
-
def load_example(evt: gr.SelectData):
|
| 317 |
-
return example_images[evt.index]
|
| 318 |
-
|
| 319 |
-
gallery.select(
|
| 320 |
-
load_example,
|
| 321 |
-
None,
|
| 322 |
-
image_prompt,
|
| 323 |
-
show_progress=True
|
| 324 |
-
)
|
| 325 |
-
|
| 326 |
with gr.Accordion("Image Generation Settings", open=False):
|
| 327 |
with gr.Row():
|
| 328 |
height = gr.Slider(
|
|
@@ -383,10 +366,37 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 383 |
video_output = gr.Video(label="Generated 3D Asset", autoplay=True, loop=True, height=300)
|
| 384 |
model_output = LitModel3D(label="Extracted GLB", exposure=20.0, height=300)
|
| 385 |
download_glb = gr.DownloadButton(label="Download GLB", interactive=False)
|
| 386 |
-
|
| 387 |
trial_id = gr.Textbox(visible=False)
|
| 388 |
output_buf = gr.State()
|
| 389 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 390 |
# Handlers
|
| 391 |
generate_image_btn.click(
|
| 392 |
text_to_image,
|
|
|
|
| 122 |
trial_id = str(uuid.uuid4())
|
| 123 |
processed_image = g.trellis_pipeline.preprocess_image(image)
|
| 124 |
if processed_image is not None:
|
| 125 |
+
save_path = f"{TMP_DIR}/{trial_id}.png"
|
| 126 |
+
processed_image.save(save_path)
|
| 127 |
+
print(f"Saved processed image to: {save_path}")
|
| 128 |
return trial_id, processed_image
|
| 129 |
else:
|
| 130 |
print("Error: Processed image is None")
|
|
|
|
| 175 |
|
| 176 |
@spaces.GPU
|
| 177 |
def image_to_3d(trial_id: str, seed: int, randomize_seed: bool, ss_guidance_strength: float, ss_sampling_steps: int, slat_guidance_strength: float, slat_sampling_steps: int) -> Tuple[dict, str]:
|
| 178 |
+
print(f"Starting image_to_3d with trial_id: {trial_id}")
|
| 179 |
+
|
| 180 |
+
if not trial_id or trial_id.strip() == "":
|
| 181 |
print("Error: No trial_id provided")
|
| 182 |
return None, None
|
| 183 |
|
|
|
|
| 186 |
seed = np.random.randint(0, MAX_SEED)
|
| 187 |
|
| 188 |
image_path = f"{TMP_DIR}/{trial_id}.png"
|
| 189 |
+
print(f"Looking for image at: {image_path}")
|
| 190 |
+
|
| 191 |
if not os.path.exists(image_path):
|
| 192 |
print(f"Error: Image file not found at {image_path}")
|
| 193 |
return None, None
|
| 194 |
|
| 195 |
image = Image.open(image_path)
|
| 196 |
+
print(f"Successfully loaded image with size: {image.size}")
|
| 197 |
+
|
| 198 |
|
| 199 |
outputs = g.trellis_pipeline.run(
|
| 200 |
image,
|
|
|
|
| 303 |
lines=3
|
| 304 |
)
|
| 305 |
|
| 306 |
+
# 이미지 프롬프트
|
| 307 |
image_prompt = gr.Image(label="Image Prompt", image_mode="RGBA", type="pil", height=300)
|
| 308 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 309 |
with gr.Accordion("Image Generation Settings", open=False):
|
| 310 |
with gr.Row():
|
| 311 |
height = gr.Slider(
|
|
|
|
| 366 |
video_output = gr.Video(label="Generated 3D Asset", autoplay=True, loop=True, height=300)
|
| 367 |
model_output = LitModel3D(label="Extracted GLB", exposure=20.0, height=300)
|
| 368 |
download_glb = gr.DownloadButton(label="Download GLB", interactive=False)
|
| 369 |
+
|
| 370 |
trial_id = gr.Textbox(visible=False)
|
| 371 |
output_buf = gr.State()
|
| 372 |
|
| 373 |
+
# Examples 갤러리를 맨 아래로 이동
|
| 374 |
+
if example_images:
|
| 375 |
+
gr.Markdown("""### Example Images""")
|
| 376 |
+
with gr.Row():
|
| 377 |
+
gallery = gr.Gallery(
|
| 378 |
+
value=example_images,
|
| 379 |
+
label="Click an image to use it",
|
| 380 |
+
show_label=True,
|
| 381 |
+
elem_id="gallery",
|
| 382 |
+
columns=5,
|
| 383 |
+
rows=5,
|
| 384 |
+
height=600,
|
| 385 |
+
allow_preview=True
|
| 386 |
+
)
|
| 387 |
+
|
| 388 |
+
def load_example(evt: gr.SelectData):
|
| 389 |
+
selected_image = Image.open(example_images[evt.index])
|
| 390 |
+
trial_id_val, processed_image = preprocess_image(selected_image)
|
| 391 |
+
return selected_image, trial_id_val
|
| 392 |
+
|
| 393 |
+
gallery.select(
|
| 394 |
+
load_example,
|
| 395 |
+
None,
|
| 396 |
+
[image_prompt, trial_id],
|
| 397 |
+
show_progress=True
|
| 398 |
+
)
|
| 399 |
+
|
| 400 |
# Handlers
|
| 401 |
generate_image_btn.click(
|
| 402 |
text_to_image,
|