--- tags: - 3d - fur - hair - diffusion - strands library_name: pytorch --- # PatchLocks — model weights Weights for **PatchLocks**, which reconstructs animal fur as individual strands from multi-view images with one learned patch prior. Code, documentation and usage guide ([docs/USAGE.md](https://github.com/CCdydy/PatchLocks/blob/main/docs/USAGE.md)): **[github.com/CCdydy/PatchLocks](https://github.com/CCdydy/PatchLocks)**. Data: [zengzzy/PatchLocks-data](https://huggingface.co/datasets/zengzzy/PatchLocks-data). Files keep the paths the code expects. From a clone of the code repository: ```bash bash scripts/download_weights.sh # curl + sha256 check, no extra dependencies # or with the Hugging Face CLI (pip install huggingface_hub): hf download zengzzy/PatchLocks --local-dir . --exclude "README.md" ".gitattributes" ``` | File | Size | Used for | |---|---|---| | `patchlocks/datasets/v16/e2a_cw15/v14_best.pt` | 148 MB | paper diffusion model: multi-view EDM over 64-channel strand latents with clump-channel weighting (all whole-animal results, Table 1 "ours") | | `patchlocks/datasets/v16/e2a_cw15/b3_fuser.pt` | 8.6 MB | multi-view fuser paired with the paper model | | `patchlocks/models/fur_strand_codec_v6upright.pt` | 6.8 MB | strand codec (z64 ↔ strand), fine-tuned from DiffLocks | | `patchlocks/v2_locked/V10_PATCH_STABLE/stage3_model.pt`, `b3_fuser.pt` | 72 MB | single-view baseline (Table 1 "1-view") | | `patchlocks/datasets/v14/e1_full_sm80/v14_best.pt`, `b3_fuser.pt` | 157 MB | recipe ablation without clump-channel weighting (supplementary recipe table) | | `patchlocks/experiments/rebuttal_2027/det_z64/det_z64_best.pt` | 152 MB | deterministic-latent baseline (Table 2) | | `patchlocks/experiments/rebuttal_2027/direct7/direct7_best.pt` | 6.5 MB | scalar-regression baseline (Table 2) | Training: 1,600 synthetic fur patches × 4 views (nine coat archetypes), seed 0, ~30 min on one NVIDIA RTX PRO 6000 (`pipeline/02_train_diffusion.sh`). Re-running the released checkpoint reproduces the paper's diffusion predictions bit for bit and every paper table; see `docs/REPRODUCIBILITY.md` in the code repository. The strand codec architecture and its initial weights come from [DiffLocks](https://difflocks.is.tue.mpg.de/). The conditioning backbone is DINOv2, loaded through `torch.hub`.