alexnasa commited on
Commit
c1fa643
·
verified ·
1 Parent(s): d37f4d2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -2
app.py CHANGED
@@ -214,7 +214,37 @@ def run_triposg(image_path: str,
214
  progress=gr.Progress(track_tqdm=True),):
215
 
216
  """
217
- Generate 3D part meshes from an input image.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  """
219
 
220
  max_num_expanded_coords = 1e9
@@ -384,4 +414,4 @@ if __name__ == "__main__":
384
  demo = build_demo()
385
  demo.unload(cleanup)
386
  demo.queue()
387
- demo.launch()
 
214
  progress=gr.Progress(track_tqdm=True),):
215
 
216
  """
217
+ Generate structured 3D meshes from a 2D image using the PartCrafter pipeline.
218
+
219
+ This function takes a single 2D image as input and produces a set of part-based 3D meshes,
220
+ using compositional latent diffusion with attention to structure and part separation.
221
+ Optionally removes the background using a pretrained background removal model (RMBG),
222
+ and outputs a merged object mesh, a split preview (exploded view), and a downloadable ZIP of all parts.
223
+
224
+ Args:
225
+ image_path (str): Path to the input image file on disk.
226
+ num_parts (int, optional): Number of distinct parts to decompose the object into. Defaults to 1.
227
+ seed (int, optional): Random seed for reproducibility. Defaults to 0.
228
+ num_tokens (int, optional): Number of tokens used during latent encoding. Higher values yield finer detail. Defaults to 1024.
229
+ num_inference_steps (int, optional): Number of diffusion inference steps. More steps improve quality but increase runtime. Defaults to 50.
230
+ guidance_scale (float, optional): Classifier-free guidance scale. Higher values emphasize adherence to conditioning. Defaults to 7.0.
231
+ use_flash_decoder (bool, optional): Whether to use FlashAttention in the decoder for performance. Defaults to False.
232
+ rmbg (bool, optional): Whether to apply background removal before processing. Defaults to True.
233
+ session_id (str, optional): Optional session ID to manage export paths. If not provided, a random UUID is generated.
234
+ progress (gr.Progress, optional): Gradio progress object for visual feedback. Automatically handled by Gradio.
235
+
236
+ Returns:
237
+ Tuple[str, str, str, str]:
238
+ - `merged_path` (str): File path to the merged full object mesh (`object.glb`).
239
+ - `split_preview_path` (str): File path to the exploded-view mesh (`split.glb`).
240
+ - `export_dir` (str): Directory where all generated meshes were saved.
241
+ - `zip_path` (str): Path to the ZIP file containing all individual part meshes.
242
+
243
+ Notes:
244
+ - This function utilizes HuggingFace pretrained weights for both part generation and background removal.
245
+ - The final output includes exploded and merged views to visualize object structure.
246
+ - Parts are exported in `.glb` format, and zipped for bulk download.
247
+ - Generation time depends on the number of parts and inference parameters.
248
  """
249
 
250
  max_num_expanded_coords = 1e9
 
414
  demo = build_demo()
415
  demo.unload(cleanup)
416
  demo.queue()
417
+ demo.launch(mcp_server=True)