| # HY3DGEN_DEBUG=1 USE_SAGEATTN=1 python3 examples/faster_shape_gen_with_flashvdm_mini_turbo.py | |
| # HY3DGEN_DEBUG=1 USE_SAGEATTN=0 python3 examples/faster_shape_gen_with_flashvdm_mini_turbo.py | |
| import os | |
| import time | |
| import torch | |
| from PIL import Image | |
| from hy3dgen.rembg import BackgroundRemover | |
| from hy3dgen.shapegen import Hunyuan3DDiTFlowMatchingPipeline | |
| device = 'cuda' | |
| pipeline = Hunyuan3DDiTFlowMatchingPipeline.from_pretrained( | |
| 'tencent/Hunyuan3D-2mini', | |
| subfolder='hunyuan3d-dit-v2-mini-turbo', | |
| use_safetensors=False, | |
| device=device | |
| ) | |
| pipeline.enable_flashvdm(topk_mode='merge') | |
| # pipeline.compile() | |
| image_path = 'assets/demo.png' | |
| image = Image.open(image_path).convert("RGBA") | |
| if image.mode == 'RGB': | |
| rembg = BackgroundRemover() | |
| image = rembg(image) | |
| def run(): | |
| return pipeline( | |
| image=image, | |
| num_inference_steps=5, | |
| octree_resolution=380, | |
| num_chunks=20000, | |
| generator=torch.manual_seed(12345), | |
| output_type='trimesh' | |
| )[0] | |
| save_dir = 'tmp/results/' | |
| os.makedirs(save_dir, exist_ok=True) | |
| for it in range(2): | |
| start_time = time.time() | |
| mesh = run() | |
| print("--- %s seconds ---" % (time.time() - start_time)) | |
| mesh.export(f'{save_dir}/run_{it}.glb') | |