PartVAE overlap 128 20260614
This model repo contains the trained weights, exact configs, logs, and reproducibility metadata for the Part-Aware Continuous VAE trained on the HumanML3D/T2M setup on 2026-06-14.
Code lives in a separate public GitHub repository:
https://github.com/CHDTevior/part-aware-partvae
The exported code commit used for this package is:
2f1f6d5e65ca0de6e3fd285c8e43a75ddd56f77d
Files
checkpoints/net_best_fid.pth # best validation reconstruction FID
checkpoints/net_best_div.pth # best diversity selector
checkpoints/net_best_top1.pth # best R@1 selector
checkpoints/net_best_top3.pth # best R@3 selector
checkpoints/net_best_matching.pth # best matching-score selector
checkpoints/net_last.pth # last network-only checkpoint
checkpoints/train_state_latest.pth # full resume state
checkpoints/config.json # config copied next to weights
checkpoints/skeleton_partition.json # exact overlap partition copied next to weights
configs/config.json # full training config
configs/train_config.json # duplicate explicit training config
configs/skeleton_partition.json # exact overlap partition
configs/source.txt # source GitHub/HF pointers
code/ # minimal code snapshot for loading/reproduction
logs/run.log # full training log
logs/events.out.tfevents.* # TensorBoard event file
manifest.sha256 # SHA256 manifest
Training Setup
dataname=t2m
partition_file=partition_analysis/skeleton_partition.json
latent_dim=128
encoder_emb_width=128
batch_size=256
lr=2e-4
total_iter=450000
warm_up_iter=1000
lr_scheduler=[300000]
down_t=2
stride_t=2
width=512
depth=3
dilation_growth_rate=3
loss_vel=0.5
recons_loss=l1_smooth
kl_weight=0.005
kl_anneal_iter=10000
eval_iter=5000
save_iter=5000
seed=123
The final saved training state is at global iteration 451000. The configured
target was total_iter=450000; the extra 1000 iterations come from the script's
final evaluation/save boundary.
Validation Metrics
These are training-time reconstruction metrics on the HumanML3D validation protocol, not a multi-seed text-generation benchmark.
| selector | iter | FID | Diversity | R@1 | R@2 | R@3 | Matching |
|---|---|---|---|---|---|---|---|
| best_fid | 106000 | 0.0160 | 9.4856 | 0.5100 | 0.6935 | 0.7979 | 2.9188 |
| best_top1 | 156000 | 0.0342 | 9.7961 | 0.5306 | 0.7048 | 0.8005 | 2.9322 |
| best_top3 | 161000 | 0.0374 | 9.5267 | 0.5266 | 0.7207 | 0.8285 | 2.8861 |
| best_matching | 96000 | 0.0328 | 9.5960 | 0.5186 | 0.7221 | 0.8145 | 2.8536 |
| final/last | 451000 | 0.0989 | 9.3390 | 0.5126 | 0.6782 | 0.7846 | 3.0360 |
Loading
Install the code from the GitHub repo or use the code/ snapshot in this
model package. Keep the partition JSON path bound to the checkpoint config.
import json
from types import SimpleNamespace
import torch
from models.PartVAE import HumanPartVAE
with open("configs/config.json", "r", encoding="utf-8") as f:
cfg = json.load(f)
args = SimpleNamespace(**cfg)
args.partition_file = "configs/skeleton_partition.json"
model = HumanPartVAE(
args,
latent_dim=cfg["latent_dim"],
encoder_emb_width=cfg["encoder_emb_width"],
down_t=cfg["down_t"],
stride_t=cfg["stride_t"],
width=cfg["width"],
depth=cfg["depth"],
dilation_growth_rate=cfg["dilation_growth_rate"],
activation=cfg["vae_act"],
norm=cfg["vae_norm"],
kl_reduction=cfg["kl_reduction"],
)
ckpt = torch.load("checkpoints/net_best_fid.pth", map_location="cpu", weights_only=False)
state_dict = ckpt["net"] if isinstance(ckpt, dict) and "net" in ckpt else ckpt
model.load_state_dict(state_dict, strict=True)
model.eval()
Use net_best_fid.pth for reconstruction-FID comparisons unless another
selector is explicitly required. Use train_state_latest.pth only for resuming
training.