ARMesh & VertexRegen: code, data and checkpoints
This repo contains our working copies of two progressive (level-of-detail) mesh generators. Each comes with its code, its training data and its best checkpoint:
- ARMesh (NeurIPS 2025): autoregressive mesh generation by next-level-of-detail prediction (vertex splits over a simplicial complex).
- VertexRegen (ICCV 2025), an unofficial re-implementation: an OPT causal LM over a base mesh followed by vertex splits. We added a Michelangelo point-cloud condition.
Restore
Every archive stores its paths relative to the same parent directory (originally /root/junkai_lin). To restore armesh/, VertexRegen/ and mul_res_diffusion/miche/, extract all of the archives in one directory:
for f in *.tar; do tar xf "$f"; done
for f in *.tar.gz; do tar xzf "$f"; done
| archive | contents |
|---|---|
VertexRegen.tar |
The whole VertexRegen/ repo: code, configs, tokenizer/, dataset/ (collapsed ShapeNet / Objaverse HF datasets), and outputs/ (best checkpoint, training logs, inference results). |
armesh.tar |
The armesh/ repo (code for exp/1 and exp/2, codebase/, .git, flash-attn wheels), plus out/ (the exp/1 checkpoint, wandb logs and samples) and train_with_info_out/ (exp/1 tokenized data). data_pc_out/ is in the archives below; transfer/ is not included. |
armesh_data_pc_out_pack.tar.gz |
armesh/data_pc_out/ packed binaries (pack/, pack_d512/), BPE vocabularies and object_info.json (exp/2 training data). |
armesh_data_pc_out_psc_{0..7}.tar.gz |
armesh/data_pc_out/*.psc: 412,963 PSC files (exp/2 preprocessed meshes), split into 8 shards. |
mul_res_diffusion_miche.tar.gz |
The Michelangelo point-encoder package. armesh/miche is a symlink to /root/junkai_lin/mul_res_diffusion/miche, and VertexRegen imports the encoder from the same place. |
The code uses absolute paths under /root/junkai_lin/. Extract the archives there, or edit those paths.
Checkpoints
Only the best checkpoint of each model is kept. All other intermediate and superseded checkpoints were deleted. Both checkpoints are complete, so they include the optimizer state.
ARMesh: armesh/out/exp-1--2026-05-28--17-42-36/ARMesh/v2/checkpoints/best.ckpt
- This is the exp/1 model (unconditional / per-object embedding,
d_model768) as a DeepSpeed checkpoint directory. - It was saved at global step 1,972,801 (epoch 199), after the learning rate had decayed to 1e-5.
- Its training metric
accuracy_cond_overallis 0.811, the highest of all exp/1 runs. Later continuation runs restarted at a higher learning rate and peaked at 0.775. - To generate (
exp/1/cfg.yamlstill hasresumeset to a run that was deleted, so pass the path explicitly):python exp/1/6-gen.py resume=out/exp-1--2026-05-28--17-42-36/ARMesh/v2/checkpoints/best.ckpt
VertexRegen: VertexRegen/outputs/vertexregen_objaverse_pc_opt_350_unfrozen/20260826-123437/checkpoints/checkpoint-59520
- This is OPT-350m with point-cloud cross-attention, trained on Objaverse with the Michelangelo encoder unfrozen. The fine-tuned encoder weights are inside
model.safetensors. - The run is complete at 59,520 / 59,520 steps. Its eval loss is 0.5515 (the lowest of the run) and its eval token accuracy is 0.819.
- All of our VertexRegen inference and comparisons used this checkpoint.
python launch.py --num-processes=4 infer.py --model outputs/vertexregen_objaverse_pc_opt_350_unfrozen/20260826-123437/checkpoints/checkpoint-59520/
Not included
- The ARMesh exp/2 point-cloud-conditioned checkpoint (
out/exp-2--2026-09-03--16-47-32/ARMesh-PC/nlwxo9ui). It was trained on a different machine and was not on this filesystem. armesh/transfer/: a compressed copy ofdata_pc_out/packplus the Michelangelo checkpoint, made for moving training to another machine.- Michelangelo
shapevae-256.ckpt(expected at/root/junkai_lin/from_tos/shapevae-256.ckpt):- ARMesh exp/2 needs it to build its frozen encoder.
- VertexRegen only prints a warning if it is missing, because the checkpoint above already contains the encoder.
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐ Ask for provider support