Instructions to use jamie33/mind3d-trellis2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Trellis
How to use jamie33/mind3d-trellis2 with Trellis:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
Download code/mind3d/gen_testset_mind3d.py from jamie33/mind3d-trellis2: direct link, hf CLI and curl.
- Browser
- Download file 2.3 kB
-
https://huggingface.co/jamie33/mind3d-trellis2/resolve/main/code/mind3d/gen_testset_mind3d.py
- Command line
-
hf download hf://jamie33/mind3d-trellis2/code/mind3d/gen_testset_mind3d.py
-
curl -L -o gen_testset_mind3d.py https://huggingface.co/jamie33/mind3d-trellis2/resolve/main/code/mind3d/gen_testset_mind3d.py
2.3 kB
| import os | |
| import time | |
| import argparse | |
| import numpy as np | |
| import torch | |
| from src.utils import load_config | |
| from src.mind3d import MinD3D | |
| from src.utils import torch_init_model, set_random_seed | |
| if __name__ == '__main__': | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument('--config', type=str, default="./configs/mind3d.yaml") | |
| parser.add_argument('--check_point_path', type=str, default="ckpt/mind3d_sub01.pt") | |
| parser.add_argument('--fmri_dir', type=str, default="/home/hubin/data/fMRI-Shape/sub-0001/npy_data") | |
| parser.add_argument('--test_list', type=str, default="/home/hubin/data/fMRI-Shape/annotations/core_test_list.txt") | |
| parser.add_argument('--out_dir', type=str, default="/home/hubin/trellis_work/outputs/mind3d_sub01") | |
| parser.add_argument('--topk', type=int, default=250) | |
| parser.add_argument('--seed', type=int, default=100) | |
| parser.add_argument('--shard', type=int, default=0) | |
| parser.add_argument('--num_shards', type=int, default=1) | |
| args = parser.parse_args() | |
| cfg = load_config(args.config, 'configs/default.yaml') | |
| device = torch.device("cuda") | |
| os.makedirs(os.path.join(args.out_dir, "meshes"), exist_ok=True) | |
| model_full = MinD3D(cfg, device=device) | |
| state_dict = torch.load(args.check_point_path, map_location='cpu', weights_only=False) | |
| torch_init_model(model_full, state_dict) | |
| del state_dict | |
| model_full.eval() | |
| ids = [l.strip() for l in open(args.test_list) if l.strip()][args.shard::args.num_shards] | |
| for i, obj in enumerate(ids): | |
| out_path = os.path.join(args.out_dir, "meshes", obj.replace("/", "_") + ".obj") | |
| if os.path.exists(out_path): | |
| continue | |
| set_random_seed(args.seed) | |
| t0 = time.time() | |
| fmri_data = np.load(os.path.join(args.fmri_dir, obj + ".npy")) | |
| fmri_data = torch.from_numpy(fmri_data[2:8]).unsqueeze(0).cuda() | |
| with torch.no_grad(): | |
| fmri_embedding = model_full.get_fmri_embedding_batch(fmri_data, diffusion_bs=128, decoder_bs=1) | |
| mesh_list = model_full.generate_mesh_from_embedding(fmri_embedding, bs=1, top_k=args.topk) | |
| if mesh_list and mesh_list[0].vertices.shape[0]: | |
| mesh_list[0].export(out_path) | |
| print(f"[{i + 1}/{len(ids)}] {obj} {time.time() - t0:.1f}s", flush=True) | |