{ "name": "HairDeck", "format": "safetensors (state dict; args, step and token dim as JSON in the metadata key hairdeck)", "license": "apache-2.0", "manifest": "MANIFEST.json", "models": { "card_vae": { "checkpoint": "ckpt/card_vae/model.safetensors", "params_million": 8.07 }, "point_cloud_dit": { "checkpoint": "ckpt/pointcloud_model/model.safetensors", "params_million": 181.3, "sampling": "scripts/test.py pointcloud (the test set: 50 Euler steps, CFG 2, seeds 0, 1, 2 in results/pointcloud/seed, then the evaluation)" }, "chain_dit": { "checkpoint": "ckpt/chain_model/model.safetensors", "params_million": 30.5, "sampling": "scripts/test.py chains (the test set on the artists' cards: 50 Euler steps, CFG 2, seeds 0, 1, 2 in results/chains/seed, then the evaluation; --cards results/pointcloud: on the point-cloud model's cards, chain seed k on card seed k)" }, "image_dit": { "checkpoint": "ckpt/image_model/model.safetensors", "about": "the image model: RGB input (DINOv3 ViT-L/16 tokens of the 448 px crop), head frame, widened synthetic augmentation, restyled renders mixed in with p 0.33, initialised from the point-cloud model, 100K steps", "params_million": 182.3, "sampling": "scripts/image_to_hair.py IMAGE --out OUT (hairdeck.infer.image.Pipeline: Euler 50, CFG 2, seed 0)" }, "color_dit": { "checkpoint": "ckpt/color_model/model.safetensors", "about": "the colour model: the image model's network fine-tuned to predict 16 CIELAB colours along every generated card from the 448 px crop and the person matte; trained on renders of the training hairstyles with the colours of their VRM materials, starting from the image model", "params_million": 183.5, "sampling": "scripts/image_to_hair.py IMAGE --out OUT (hairdeck.infer.image.Pipeline: one pass on the clean card tokens of every variation)" } }, "data": { "avatar_body": { "files": [ "data/avatar/body.json", "data/avatar/avatar.vrm", "data/avatar/hair.glb" ], "about": "the avatar body of the VRM export (hairdeck.vrm; a VRoid Studio template avatar): the VRM, its original hair (hair.glb, for the check that the export removed it) and body.json with its head-frame fit and the VRM meta written into exported files (author hyz317, Apache-2.0)" }, "demo_examples": { "files": [ "data/demo_examples/examples.json", "data/demo_examples/ex01.png", "data/demo_examples/ex02.png", "data/demo_examples/ex03.png", "data/demo_examples/ex04.png", "data/demo_examples/ex05.png", "data/demo_examples/ex06.png", "data/demo_examples/ex07.png", "data/demo_examples/ex08.png", "data/demo_examples/ex09.png", "data/demo_examples/ex10.png", "data/demo_examples/ex11.png", "data/demo_examples/ex12.png" ], "about": "the 12 example images of the demo (examples.json lists them in the order shown)" }, "test_data": { "files": [ "data/test_cards_orig/", "data/test_cards_orig_dirs.npz", "data/spring/chains_test.jsonl", "data/spring/chains_test_head.npz", "data/cards_test.npz", "ckpt/card_vae/latents_test_head.npy", "data/head_frame_test.npz", "data/head_params_test.json" ], "about": "evaluation data of scripts/test.py (file names: test row, 000 to 099): the cards of the original hair meshes of the 100 test cases (CHARM-format card json, 8 columns; for the 24 combined-template cases, of their two template meshes) and the true width direction at each of their control points (test_cards_orig_dirs.npz), read by the pointcloud test; the spring-bone chains of the test characters (as extracted from their VRM files, and as chain tokens in the head frame) and the card features and head-frame card latents of the GT cards that the chain model is conditioned on, and the test characters' head fits and head frames, read by the chains test" }, "inference_data": { "files": [ "data/token_stats.json", "data/token_stats_head.json", "data/head_frame_train.npz", "data/spring/chain_stats_head.json" ], "about": "card token normalisation (point-cloud and head-frame models), the canonical head of the head frame (W, O; head proxy), chain token statistics of the chain DiT" } }, "files": [ "ckpt/card_vae/latent_stats.json", "ckpt/card_vae/latent_stats_head.json", "ckpt/card_vae/latents_test_head.npy", "ckpt/card_vae/model.safetensors", "ckpt/card_vae/stats.json", "ckpt/chain_model/model.safetensors", "ckpt/color_model/model.safetensors", "ckpt/image_model/model.safetensors", "ckpt/pointcloud_model/model.safetensors", "data/avatar/avatar.vrm", "data/avatar/body.json", "data/avatar/hair.glb", "data/cards_test.npz", "data/demo_examples/ex01.png", "data/demo_examples/ex02.png", "data/demo_examples/ex03.png", "data/demo_examples/ex04.png", "data/demo_examples/ex05.png", "data/demo_examples/ex06.png", "data/demo_examples/ex07.png", "data/demo_examples/ex08.png", "data/demo_examples/ex09.png", "data/demo_examples/ex10.png", "data/demo_examples/ex11.png", "data/demo_examples/ex12.png", "data/demo_examples/examples.json", "data/head_frame_test.npz", "data/head_frame_train.npz", "data/head_params_test.json", "data/spring/chain_stats_head.json", "data/spring/chains_test.jsonl", "data/spring/chains_test_head.npz", "data/test_cards_orig/000.json", "data/test_cards_orig/001.json", "data/test_cards_orig/002.json", "data/test_cards_orig/003.json", "data/test_cards_orig/004.json", "data/test_cards_orig/005.json", "data/test_cards_orig/006.json", "data/test_cards_orig/007.json", "data/test_cards_orig/008.json", "data/test_cards_orig/009.json", "data/test_cards_orig/010.json", "data/test_cards_orig/011.json", "data/test_cards_orig/012.json", "data/test_cards_orig/013.json", "data/test_cards_orig/014.json", "data/test_cards_orig/015.json", "data/test_cards_orig/016.json", "data/test_cards_orig/017.json", "data/test_cards_orig/018.json", "data/test_cards_orig/019.json", "data/test_cards_orig/020.json", "data/test_cards_orig/021.json", "data/test_cards_orig/022.json", "data/test_cards_orig/023.json", "data/test_cards_orig/024.json", "data/test_cards_orig/025.json", "data/test_cards_orig/026.json", "data/test_cards_orig/027.json", "data/test_cards_orig/028.json", "data/test_cards_orig/029.json", "data/test_cards_orig/030.json", "data/test_cards_orig/031.json", "data/test_cards_orig/032.json", "data/test_cards_orig/033.json", "data/test_cards_orig/034.json", "data/test_cards_orig/035.json", "data/test_cards_orig/036.json", "data/test_cards_orig/037.json", "data/test_cards_orig/038.json", "data/test_cards_orig/039.json", "data/test_cards_orig/040.json", "data/test_cards_orig/041.json", "data/test_cards_orig/042.json", "data/test_cards_orig/043.json", "data/test_cards_orig/044.json", "data/test_cards_orig/045.json", "data/test_cards_orig/046.json", "data/test_cards_orig/047.json", "data/test_cards_orig/048.json", "data/test_cards_orig/049.json", "data/test_cards_orig/050.json", "data/test_cards_orig/051.json", "data/test_cards_orig/052.json", "data/test_cards_orig/053.json", "data/test_cards_orig/054.json", "data/test_cards_orig/055.json", "data/test_cards_orig/056.json", "data/test_cards_orig/057.json", "data/test_cards_orig/058.json", "data/test_cards_orig/059.json", "data/test_cards_orig/060.json", "data/test_cards_orig/061.json", "data/test_cards_orig/062.json", "data/test_cards_orig/063.json", "data/test_cards_orig/064.json", "data/test_cards_orig/065.json", "data/test_cards_orig/066.json", "data/test_cards_orig/067.json", "data/test_cards_orig/068.json", "data/test_cards_orig/069.json", "data/test_cards_orig/070.json", "data/test_cards_orig/071.json", "data/test_cards_orig/072.json", "data/test_cards_orig/073.json", "data/test_cards_orig/074.json", "data/test_cards_orig/075.json", "data/test_cards_orig/076.json", "data/test_cards_orig/077.json", "data/test_cards_orig/078.json", "data/test_cards_orig/079.json", "data/test_cards_orig/080.json", "data/test_cards_orig/081.json", "data/test_cards_orig/082.json", "data/test_cards_orig/083.json", "data/test_cards_orig/084.json", "data/test_cards_orig/085.json", "data/test_cards_orig/086.json", "data/test_cards_orig/087.json", "data/test_cards_orig/088.json", "data/test_cards_orig/089.json", "data/test_cards_orig/090.json", "data/test_cards_orig/091.json", "data/test_cards_orig/092.json", "data/test_cards_orig/093.json", "data/test_cards_orig/094.json", "data/test_cards_orig/095.json", "data/test_cards_orig/096.json", "data/test_cards_orig/097.json", "data/test_cards_orig/098.json", "data/test_cards_orig/099.json", "data/test_cards_orig_dirs.npz", "data/token_stats.json", "data/token_stats_head.json" ] }