NCJ commited on
Commit
2a5582b
·
verified ·
1 Parent(s): a259111

Add private RenderFormer V2 component bundle

Browse files
README.md ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ library_name: renderformer-studio
4
+ tags:
5
+ - neural-rendering
6
+ - rendering
7
+ - transformers
8
+ - materials
9
+ ---
10
+
11
+ # RenderFormer V2
12
+
13
+ > **Status:** This is a private pre-release bundle. Do not redistribute it or
14
+ > depend on its layout until the release is approved.
15
+
16
+ This repository bundles the two RenderFormer V2 renderer checkpoints and the
17
+ material-latent models used by the data pipeline. Source code, installation
18
+ instructions, scene conversion, and inference examples live in
19
+ [RenderFormer Studio](https://github.com/iamNCJ/RenderFormer-Studio).
20
+
21
+ ## Components
22
+
23
+ | Path | Class | Resolution | Purpose |
24
+ | --- | --- | ---: | --- |
25
+ | `transformer_512` | `RenderFormerModel` | 512 | Native-512 V2 renderer |
26
+ | `transformer_2048` | `RenderFormerModel` | 2048 | Native-2048 V2 renderer |
27
+ | `material_autoencoder` | `MaterialAutoencoder` | 256 | Material image to/from 9-D latent |
28
+ | `diffspec_mapper` | `DiffuseSpecularToLatent` | — | Diffuse/specular BRDF to 9-D latent |
29
+ | `metallic_mapper` | `PrincipledBRDFToLatent` | — | Metallic/roughness BRDF to 9-D latent |
30
+ | `metallic_transmission_mapper` | `PrincipledBRDFToLatentWithTransmission` | — | Metallic/transmission BRDF to 9-D latent |
31
+
32
+ The renderer pipeline loads the Qwen-Image VAE configured by each transformer
33
+ for environment and raw-material encoding. Those auxiliary weights are an
34
+ external dependency and are not duplicated in this bundle.
35
+
36
+ ## Load a renderer
37
+
38
+ The current package accepts a local component directory. Download only the
39
+ resolution you need, then construct the shared V2 pipeline:
40
+
41
+ ```python
42
+ from pathlib import Path
43
+
44
+ import torch
45
+ from huggingface_hub import snapshot_download
46
+ from renderformer import RenderFormerV2Pipeline
47
+
48
+ snapshot = Path(snapshot_download(
49
+ "RenderFormer/renderformer-v2",
50
+ allow_patterns=["transformer_512/*"],
51
+ ))
52
+ pipeline = RenderFormerV2Pipeline.from_pretrained(
53
+ snapshot / "transformer_512",
54
+ device="cuda",
55
+ torch_dtype=torch.float16,
56
+ )
57
+ ```
58
+
59
+ Use `transformer_2048` in both places for native-2048 inference. The CLI and
60
+ pipeline documentation in RenderFormer Studio describe H5 preparation,
61
+ precision, view batching, and tone mapping.
62
+
63
+ ## Load material components
64
+
65
+ ```python
66
+ from pathlib import Path
67
+
68
+ from huggingface_hub import snapshot_download
69
+ from renderformer.models.material import (
70
+ DiffuseSpecularToLatent,
71
+ MaterialAutoencoder,
72
+ PrincipledBRDFToLatent,
73
+ PrincipledBRDFToLatentWithTransmission,
74
+ )
75
+
76
+ snapshot = Path(snapshot_download(
77
+ "RenderFormer/renderformer-v2",
78
+ allow_patterns=[
79
+ "material_autoencoder/*",
80
+ "diffspec_mapper/*",
81
+ "metallic_mapper/*",
82
+ "metallic_transmission_mapper/*",
83
+ ],
84
+ ))
85
+ material_autoencoder = MaterialAutoencoder.from_pretrained(
86
+ snapshot / "material_autoencoder", strict=True
87
+ ).eval()
88
+ diffspec_mapper = DiffuseSpecularToLatent.from_pretrained(
89
+ snapshot / "diffspec_mapper", strict=True
90
+ ).eval()
91
+ metallic_mapper = PrincipledBRDFToLatent.from_pretrained(
92
+ snapshot / "metallic_mapper", strict=True
93
+ ).eval()
94
+ transmission_mapper = PrincipledBRDFToLatentWithTransmission.from_pretrained(
95
+ snapshot / "metallic_transmission_mapper", strict=True
96
+ ).eval()
97
+ ```
98
+
99
+ The autoencoder's `preprocessor_config.json` records the physical-input
100
+ contract. Prefer `encode_hdr` and `decode_hdr` for finite, nonnegative,
101
+ alpha-premultiplied linear RGB.
102
+
103
+ ## Citation
104
+
105
+ Please cite both RenderFormer papers when using this bundle. Full BibTeX
106
+ entries are provided in the RenderFormer Studio README.
diffspec_mapper/config.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "hidden_dim": 128,
3
+ "latent_dim": 9,
4
+ "num_layers": 3
5
+ }
diffspec_mapper/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2a5f05ce15a1af97769ccb830df70584156e7215f48a3feba1454e9b445fc5a5
3
+ size 75252
material_autoencoder/config.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "image_channels": 3,
3
+ "image_size": 256,
4
+ "latent_dim": 9
5
+ }
material_autoencoder/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:859fd025f02c7a30d430fb19551f8f1c4fed550f37553b175e8205ef9cd09e2d
3
+ size 144083432
material_autoencoder/preprocessor_config.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "mode": "log10_1p"
3
+ }
metallic_mapper/config.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "hidden_dim": 128,
3
+ "latent_dim": 9,
4
+ "num_layers": 3
5
+ }
metallic_mapper/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:52a3146256d3255657e53682ab9f8e2acd1f9f300432f08f920570af5b4bf006
3
+ size 74228
metallic_transmission_mapper/config.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "hidden_dim": 256,
3
+ "latent_dim": 9,
4
+ "num_layers": 5
5
+ }
metallic_transmission_mapper/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fa4f5f54ad1d00f5109e558ea489d89841a4f0c3181088346b6dec2e668e6853
3
+ size 807740
model_index.json ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "components": [
4
+ {
5
+ "name": "transformer_512",
6
+ "class": "RenderFormerModel",
7
+ "pipeline_class": "RenderFormerV2Pipeline",
8
+ "path": "transformer_512",
9
+ "resolution": 512
10
+ },
11
+ {
12
+ "name": "transformer_2048",
13
+ "class": "RenderFormerModel",
14
+ "pipeline_class": "RenderFormerV2Pipeline",
15
+ "path": "transformer_2048",
16
+ "resolution": 2048
17
+ },
18
+ {
19
+ "name": "material_autoencoder",
20
+ "class": "MaterialAutoencoder",
21
+ "path": "material_autoencoder",
22
+ "resolution": 256
23
+ },
24
+ {
25
+ "name": "diffspec_mapper",
26
+ "class": "DiffuseSpecularToLatent",
27
+ "path": "diffspec_mapper",
28
+ "resolution": null
29
+ },
30
+ {
31
+ "name": "metallic_mapper",
32
+ "class": "PrincipledBRDFToLatent",
33
+ "path": "metallic_mapper",
34
+ "resolution": null
35
+ },
36
+ {
37
+ "name": "metallic_transmission_mapper",
38
+ "class": "PrincipledBRDFToLatentWithTransmission",
39
+ "path": "metallic_transmission_mapper",
40
+ "resolution": null
41
+ }
42
+ ]
43
+ }
transformer_2048/config.yaml ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model_config:
2
+ latent_dim: 768
3
+ num_layers: 12
4
+ num_heads: 6
5
+ num_kv_heads: null
6
+ dim_feedforward: 3072
7
+ num_register_tokens: 16
8
+ register_token_pe: weighted_mean
9
+ use_view_token: false
10
+ dropout: 0.0
11
+ activation: swiglu
12
+ norm_type: rms_norm
13
+ norm_first: true
14
+ view_indep_qk_norm: true
15
+ qk_norm: true
16
+ bias: false
17
+ pe_type: rope_only_center
18
+ rope_type: triangle_center
19
+ rope_double_max_freq: false
20
+ vertex_pe_num_freqs: 12
21
+ intra_rope_pe_num_freqs: 40
22
+ use_vn_encoder: true
23
+ vn_pe_num_freqs: 6
24
+ vn_encoder_norm_type: rms_norm
25
+ texture_encode_patch_size: 4
26
+ texture_channels: 80
27
+ texture_encoder_norm_type: rms_norm
28
+ log_roughness_encoding: false
29
+ separate_light_strength: true
30
+ auto_interpolate_texture: true
31
+ use_env_lighting: true
32
+ envmap_vae_model_id: Qwen/Qwen-Image
33
+ envmap_latent_patch_size: 8
34
+ envmap_latent_channels: 16
35
+ envmap_ray_dir_map_patch_size: 64
36
+ envmap_encoder_norm_type: rms_norm
37
+ use_triangle_ordering: true
38
+ triangle_ordering_order: hilbert
39
+ view_transformer_use_triangle_ordering: false
40
+ view_transformer_triangle_ordering_order: z
41
+ use_local_attention: false
42
+ local_attention_window_size_half: 256
43
+ use_flex_attention: true
44
+ flex_attention_block_size: 128
45
+ put_light_tokens_first: true
46
+ put_light_tokens_in_sink: true
47
+ put_env_tokens_in_sink: true
48
+ add_summary_tokens: true
49
+ summary_block_size: 64
50
+ use_volumes: true
51
+ volume_density_input_dim: 64
52
+ volume_use_density_mlp: true
53
+ use_perceiver: false
54
+ num_perceiver_tokens: 64
55
+ decoding_method: view_transformer
56
+ texture_decode_patch_size: 32
57
+ view_transformer_latent_dim: 768
58
+ view_transformer_ffn_hidden_dim: 3072
59
+ view_transformer_n_heads: 6
60
+ view_transformer_num_kv_heads: null
61
+ view_transformer_n_layers: 6
62
+ view_transformer_include_self_attn: true
63
+ view_transformer_self_attn_before_cross: false
64
+ view_transformer_use_swin_attn: true
65
+ vdir_pe_type: nerf
66
+ vdir_num_freqs: 0
67
+ patch_size: 8
68
+ output_patch_size: null
69
+ output_channel: null
70
+ latent_vae_model_id: null
71
+ include_alpha: false
72
+ freeze_radiosity_transformer_if_initialized: false
73
+ use_dpt_decoder: true
74
+ dpt_features: 128
75
+ dpt_out_channels:
76
+ - 96
77
+ - 192
78
+ - 384
79
+ - 768
80
+ dpt_out_layers: null
81
+ view_transformer_use_layers: null
82
+ custom_init: true
83
+ deepstack_injection_map: null
84
+ deepstack_dual_input_size: 64
85
+ deepstack_decoder_injection_map: null
86
+ dataset_config:
87
+ img_key: img
88
+ volume_padding_length: 1024
89
+ trainer_config:
90
+ img_resolution: 2048
91
+ turn_to_cam_coord: false
92
+ learn_ldr: false
93
+ emission_area_encoding: false
94
+ clamped_hdr: false
95
+ clamped_hdr_max: 9.0
96
+ override_view_tf32_mode: true
transformer_2048/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:de25aa4d3df4dc09881c67446046221d3c0a9a5c942295953d140dbec9a7fd72
3
+ size 830351052
transformer_512/config.yaml ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model_config:
2
+ latent_dim: 768
3
+ num_layers: 12
4
+ num_heads: 6
5
+ num_kv_heads: null
6
+ dim_feedforward: 3072
7
+ num_register_tokens: 16
8
+ register_token_pe: weighted_mean
9
+ use_view_token: false
10
+ dropout: 0.0
11
+ activation: swiglu
12
+ norm_type: rms_norm
13
+ norm_first: true
14
+ view_indep_qk_norm: true
15
+ qk_norm: true
16
+ bias: false
17
+ pe_type: rope_only_center
18
+ rope_type: triangle_center
19
+ rope_double_max_freq: false
20
+ vertex_pe_num_freqs: 12
21
+ intra_rope_pe_num_freqs: 40
22
+ use_vn_encoder: true
23
+ vn_pe_num_freqs: 6
24
+ vn_encoder_norm_type: rms_norm
25
+ texture_encode_patch_size: 4
26
+ texture_channels: 80
27
+ texture_encoder_norm_type: rms_norm
28
+ log_roughness_encoding: false
29
+ separate_light_strength: true
30
+ auto_interpolate_texture: true
31
+ use_env_lighting: true
32
+ envmap_vae_model_id: Qwen/Qwen-Image
33
+ envmap_latent_patch_size: 8
34
+ envmap_latent_channels: 16
35
+ envmap_ray_dir_map_patch_size: 64
36
+ envmap_encoder_norm_type: rms_norm
37
+ use_triangle_ordering: true
38
+ triangle_ordering_order: hilbert
39
+ view_transformer_use_triangle_ordering: false
40
+ view_transformer_triangle_ordering_order: z
41
+ use_local_attention: false
42
+ local_attention_window_size_half: 256
43
+ use_flex_attention: true
44
+ flex_attention_block_size: 128
45
+ put_light_tokens_first: true
46
+ put_light_tokens_in_sink: true
47
+ put_env_tokens_in_sink: true
48
+ add_summary_tokens: true
49
+ summary_block_size: 64
50
+ use_volumes: true
51
+ volume_density_input_dim: 64
52
+ volume_use_density_mlp: true
53
+ use_perceiver: false
54
+ num_perceiver_tokens: 64
55
+ decoding_method: view_transformer
56
+ texture_decode_patch_size: 32
57
+ view_transformer_latent_dim: 768
58
+ view_transformer_ffn_hidden_dim: 3072
59
+ view_transformer_n_heads: 6
60
+ view_transformer_num_kv_heads: null
61
+ view_transformer_n_layers: 6
62
+ view_transformer_include_self_attn: true
63
+ view_transformer_self_attn_before_cross: false
64
+ view_transformer_use_swin_attn: true
65
+ vdir_pe_type: nerf
66
+ vdir_num_freqs: 0
67
+ patch_size: 8
68
+ output_patch_size: null
69
+ output_channel: null
70
+ latent_vae_model_id: null
71
+ include_alpha: false
72
+ freeze_radiosity_transformer_if_initialized: false
73
+ use_dpt_decoder: true
74
+ dpt_features: 128
75
+ dpt_out_channels:
76
+ - 96
77
+ - 192
78
+ - 384
79
+ - 768
80
+ dpt_out_layers: null
81
+ view_transformer_use_layers: null
82
+ custom_init: true
83
+ deepstack_injection_map: null
84
+ deepstack_dual_input_size: 64
85
+ deepstack_decoder_injection_map: null
86
+ dataset_config:
87
+ img_key: img
88
+ volume_padding_length: 1024
89
+ trainer_config:
90
+ img_resolution: 512
91
+ turn_to_cam_coord: false
92
+ learn_ldr: false
93
+ emission_area_encoding: false
94
+ clamped_hdr: false
95
+ clamped_hdr_max: 9.0
96
+ override_view_tf32_mode: true
transformer_512/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1300bb526e7b1c5ec45081a1d48f274132d32a0189348242c3f0a920ece7f3f9
3
+ size 830351052