fxtdstudios commited on
Commit
57dc34d
·
verified ·
1 Parent(s): 7e59e1c

Upload folder using huggingface_hub

Browse files
README.md CHANGED
@@ -4,70 +4,181 @@ library_name: comfyui
4
  pipeline_tag: image-to-image
5
  tags:
6
  - hdr
 
 
 
7
  - diffusion
8
  - comfyui
9
- - vae-decoder
10
  - openexr
11
  - radiance
12
  - rudra
13
  ---
14
 
15
- # RUDRA — HDR Decoders for Diffusion Models
16
 
17
  **Radiometric Dynamic-Range Conditioning for HDR-Aware Diffusion Models**
18
- FXTD Studios / Radiance Research
19
 
20
- Distilled decoders that turn diffusion **latents into scene-linear HDR / OpenEXR** instead
21
- of tone-mapped SDR. They replace the standard VAE decode inside the *Radiance HDR VAE
22
- Decode* ComfyUI node, preserving highlights, exposure, and wide-gamut color.
 
 
 
 
 
 
 
 
23
 
24
- ➡️ **Code, training, and docs:** https://github.com/fxtdstudios/RUDRA
25
 
26
- ## Files
 
 
 
27
 
28
- Each file is a trained `RadianceTurboDecoder` / `RadianceFullDecoder` for one backbone:
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  ```
31
- rudra_{turbo|full}_decoder_{backbone}_ema.safetensors
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  ```
33
 
34
- | Backbone | Recommended file | Quality (PSNR_log) |
35
- |---|---|---|
36
- | Flux.1 | `rudra_full_decoder_flux_ema.safetensors` | 29.77 |
37
- | Wan | `rudra_full_decoder_wan_ema.safetensors` | 32.45 |
38
- | SDXL | `rudra_turbo_decoder_sdxl_ema.safetensors` | 33.86 |
39
- | Qwen-Image | `rudra_turbo_decoder_qwen_ema.safetensors` | 26.67 |
40
- | Flux.2 Klein | `rudra_turbo_decoder_flux2-klein_ema.safetensors` | 28.57 |
41
- | LTX (2.3) | `rudra_full_decoder_ltx-video_ema.safetensors` | 25.47 |
42
- | Z-Image | use the Flux decoder (shares the FLUX.1 VAE) | — |
43
-
44
- `turbo` (~0.5 M params) is fast and strong on simple latents (SDXL); `full` (~5.6 M) wins
45
- on Flux/Wan/LTX. Both are provided where trained.
46
-
47
- ## Usage (ComfyUI)
48
-
49
- 1. Download into `ComfyUI/models/radiance/`:
50
- ```bash
51
- huggingface-cli download fxtdstudios/RUDRA --include "rudra_*.safetensors" \
52
- --local-dir "ComfyUI/models/radiance"
53
- ```
54
- 2. In the **Radiance HDR VAE Decode** node: set `rudra_decoder = Enabled`, pick
55
- `decoder_size` (`rudra_turbo` or `rudra_full`) per the table above, and set
56
- `target_space` to your output color space (Linear / ACEScg / Rec.2020 / LogC4…).
57
-
58
- ## Notes
59
-
60
- - **Backbone-specific:** a decoder is tied to its VAE latent space — use the matching file
61
- for the model feeding the node (Flux decoder for a Flux workflow, etc.).
62
- - **Flux.2 Klein** uses a 128-channel / 16× VAE, so its decoder has an extra upsample stage
63
- (requires the updated `fast_vae.py` from the GitHub repo).
64
- - Quality is reported as held-out **log-space PSNR**; perceptual HDR evaluation uses
65
- **ColorVideoVDP** (JOD). SDXL/Qwen/Klein were trained on a smaller pair set and can be
66
- improved with more data.
67
-
68
- ## Citation
69
-
70
- > RUDRA: Radiometric Dynamic-Range Conditioning for HDR-Aware Diffusion Models.
71
- > FXTD Studios / Radiance Research.
72
-
73
- License: change the `license:` field above to match your release t
 
 
 
 
 
 
 
 
4
  pipeline_tag: image-to-image
5
  tags:
6
  - hdr
7
+ - inverse-tone-mapping
8
+ - sdr-to-hdr
9
+ - vae-decoder
10
  - diffusion
11
  - comfyui
 
12
  - openexr
13
  - radiance
14
  - rudra
15
  ---
16
 
17
+ # RUDRA
18
 
19
  **Radiometric Dynamic-Range Conditioning for HDR-Aware Diffusion Models**
20
+ [FXTD Studios](https://fxtdstudios.com) · [github.com/fxtdstudios/RUDRA](https://github.com/fxtdstudios/RUDRA)
21
 
22
+ Two independent families live in this repository.
23
+
24
+ | family | what it does | files |
25
+ |---|---|---|
26
+ | **`sdr2hdr/`** | takes an ordinary 8-bit frame and reconstructs scene-linear HDR | 6 |
27
+ | **decoders (root)** | decode diffusion latents straight to scene-linear HDR, skipping the tone-mapped VAE | 14 |
28
+
29
+ They share a name and a radiometric convention and nothing else. Pick the one
30
+ that matches your problem.
31
+
32
+ ---
33
 
34
+ ## `sdr2hdr/` — single-image inverse tone mapping
35
 
36
+ A compact U-Net that predicts a **residual on an analytic inverse-ACES tone
37
+ map**, not the image itself. Six channels in (SDR RGB plus the analytic
38
+ baseline), five out (a log-domain residual and two masks). The curve does the
39
+ mapping; the network supplies only what a curve cannot know.
40
 
41
+ **Start with `sdr2hdr_shadow_v1.safetensors`.**
42
 
43
+ | file | params | what it is |
44
+ |---|---:|---|
45
+ | **`sdr2hdr_shadow_v1`** | 1,217,318 | **the shipped model.** v5 backbone plus a trained shadow gate, seed 20260901 |
46
+ | `sdr2hdr_shadow_s2` | 1,217,318 | same recipe, seed 2 |
47
+ | `sdr2hdr_shadow_s3` | 1,217,318 | same recipe, seed 3 |
48
+ | `sdr2hdr_image_v5` | 1,196,197 | the backbone alone, no gate |
49
+ | `sdr2hdr_image_v6` | 4,770,117 | 4× capacity ablation, 64 base channels |
50
+ | `sdr2hdr_temporal_v1` | 37,011 | temporal refiner. **Not an `SDR2HDRNet`** and will not load as one |
51
+
52
+ Input is 8-bit normalised sRGB RGB. Output is scene-linear RGB normalised to
53
+ 10,000 nits, with diffuse white at 203 (ITU-R BT.2408).
54
+
55
+ ### Loading
56
+
57
+ Each file carries its own architecture config in its safetensors metadata, so
58
+ nothing else is needed to build the right network:
59
+
60
+ ```python
61
+ import json, torch
62
+ from safetensors import safe_open
63
+ from safetensors.torch import load_file
64
+ from rudra.sdr2hdr import SDR2HDRNet # pip install -e . from the GitHub repo
65
+
66
+ path = "sdr2hdr/sdr2hdr_shadow_v1.safetensors"
67
+ with safe_open(path, framework="pt") as f:
68
+ config = json.loads(f.metadata()["config"])
69
+ model = SDR2HDRNet.from_config(config)
70
+ model.load_state_dict(load_file(path), strict=True)
71
+ model.eval()
72
  ```
73
+
74
+ `SHA256SUMS` and `index.json` sit beside the weights.
75
+
76
+ ### What it scores
77
+
78
+ 429 held-out frames at native 1280×720, PU21-PSNR and ColorVideoVDP JOD,
79
+ against the analytic inverse-ACES baseline the model sits on top of. `hard` is
80
+ the deployment condition (unknown tone curve, 4:2:0 chroma, banding, JPEG);
81
+ `clean` is well-graded input the baseline already handles.
82
+
83
+ | model | clean dB | clean JOD | hard dB | hard JOD |
84
+ |---|---:|---:|---:|---:|
85
+ | shadow_v1 | +0.07 | +0.113 | +1.24 | +0.389 |
86
+ | shadow_s2 | +0.71 | +0.068 | +0.96 | +0.308 |
87
+ | shadow_s3 | +0.45 | +0.089 | +1.18 | +0.358 |
88
+ | **mean ± sd** | **+0.41 ± 0.33** | **+0.090 ± 0.023** | **+1.12 ± 0.15** | **+0.352 ± 0.041** |
89
+ | image_v5 | −3.00 | −0.046 | +1.43 | +0.443 |
90
+ | image_v6 | −2.75 | +0.004 | +0.96 | +0.343 |
91
+
92
+ The three gate seeds are the only configurations that come out positive on all
93
+ four measures.
94
+
95
+ ### Limitations, stated plainly
96
+
97
+ - **No published method has been scored on our split.** Every number above is
98
+ against our own analytic baseline. Read them as internal progress, not as a
99
+ comparison, until that gap is closed.
100
+ - **The backbone alone regresses on clean input.** `image_v5` loses 3.0 dB of
101
+ PU21-PSNR on well-graded frames, and the failure concentrates in
102
+ low-dynamic-range scenes: the 60 worst average −10.76 dB at a median
103
+ ground-truth peak of 238 nits, the 60 best +3.41 dB at 19,590 nits. The gate
104
+ is what fixes it.
105
+ - **The metrics disagree, and it matters.** That same 3.0 dB loss is −0.046 JOD
106
+ in CVVDP, far below a just-noticeable difference. Do not quote the PU21 row
107
+ without the JOD beside it.
108
+ - **The achievable gain is bounded by the input, not the model.** A linear
109
+ readout of the features explains 3% of the variance in the per-frame scale an
110
+ oracle would use, and 79% of that variance sits within a condition rather than
111
+ between. Capacity (4×), corpus (6×) and objective were each varied and none
112
+ moved it.
113
+ - **Three seeds is a spread, not a distribution.**
114
+ - **The temporal refiner is unevaluated.** Its held-out set is 4 validation and
115
+ 5 test clips of one scene each, too small to report.
116
+
117
+ Training data is documented in the GitHub README: Poly Haven HDRIs (CC0),
118
+ HdM-HDR-2014 and HdM-HFR-2017 (academic licence), Netflix Chimera (CC BY 4.0),
119
+ plus proprietary FXTD footage that is not redistributed.
120
+
121
+ ---
122
+
123
+ ## Decoders — diffusion latents to scene-linear HDR
124
+
125
+ Diffusion models are trained on tone-mapped images, so their VAEs decode to a
126
+ world where nothing is brighter than white. These replace that decoder and
127
+ return scene-linear radiance instead.
128
+
129
+ Two sizes per backbone: `full` reconstructs more faithfully, `turbo` is roughly
130
+ a tenth the size and fast enough to sit in a live graph.
131
+
132
+ ```bash
133
+ huggingface-cli download fxtdstudios/RUDRA \
134
+ --include "rudra_*_decoder_*.safetensors" \
135
+ --local-dir "ComfyUI/models/radiance"
136
  ```
137
 
138
+ Then enable `rudra_decoder` in the **Radiance HDR VAE Decode** node and pick a
139
+ `decoder_size`.
140
+
141
+ | file | size |
142
+ |---|---:|
143
+ | `rudra_full_decoder_flux_ema.safetensors` | 21.5 MB |
144
+ | `rudra_full_decoder_ltx-video_ema.safetensors` | 22.0 MB |
145
+ | `rudra_full_decoder_sdxl_ema.safetensors` | 21.4 MB |
146
+ | `rudra_full_decoder_wan_ema.safetensors` | 21.5 MB |
147
+ | `rudra_full_decoder_zimage_ema.safetensors` | 21.5 MB |
148
+ | `rudra_turbo_decoder_flux_ema.safetensors` | 2.2 MB |
149
+ | `rudra_turbo_decoder_flux2_ema.safetensors` | 2.0 MB |
150
+ | `rudra_turbo_decoder_flux2-klein_ema.safetensors` | 3.0 MB |
151
+ | `rudra_turbo_decoder_ltx_ema.safetensors` | 2.4 MB |
152
+ | `rudra_turbo_decoder_ltx-video_ema.safetensors` | 3.5 MB |
153
+ | `rudra_turbo_decoder_qwen_ema.safetensors` | 2.2 MB |
154
+ | `rudra_turbo_decoder_sdxl_ema.safetensors` | 2.1 MB |
155
+ | `rudra_turbo_decoder_wan_ema.safetensors` | 2.2 MB |
156
+ | `rudra_turbo_decoder_zimage_ema.safetensors` | 2.2 MB |
157
+
158
+ Measured reconstruction quality, for the size we recommend per backbone. The
159
+ table covers the recommended decoder per backbone, not every file above:
160
+
161
+ | backbone | VAE latent | recommended | PSNR_log |
162
+ |---|---|---|---:|
163
+ | Flux.1 | 16ch / 8× | full | 29.77 |
164
+ | Wan | 16ch / 8× | full | 32.45 |
165
+ | LTX | 128ch / 8× | full | 25.47 |
166
+ | SDXL | 4ch / 8× | turbo | 33.86 |
167
+ | Qwen-Image | 16ch / 8× | turbo | 26.67 |
168
+ | Flux.2 Klein | 128ch / **16×** | turbo | 28.57 |
169
+
170
+ ---
171
+
172
+ ## Licence and citation
173
+
174
+ Apache 2.0. If the SDR→HDR work is useful in yours:
175
+
176
+ ```bibtex
177
+ @misc{rudra2026,
178
+ title = {What an 8-Bit Frame Can and Cannot Say About the Scene Behind It:
179
+ bounds for inverse tone mapping, and a gate that reaches one of them},
180
+ author = {{FXTD Studios}},
181
+ year = {2026},
182
+ note = {https://github.com/fxtdstudios/RUDRA}
183
+ }
184
+ ```
sdr2hdr/SHA256SUMS ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ a25ac506dd5cb2f20f1f428628c9bb4c6d09bfd5aed8f8b93d783314f98bd47c sdr2hdr_shadow_v1.safetensors
2
+ f46b1a367ae9aca6df9d256243189462b7c504fdda9bb089bfe9588e3c213a87 sdr2hdr_shadow_s2.safetensors
3
+ 46ab0e49bd246ef4e9e1394f3f736b5274afc04e24efd6afff994cf1b1d7cc7e sdr2hdr_shadow_s3.safetensors
4
+ 3e0581ce5f4c20c53220955ce23af394a7ad5a091755c2ee5b72e9a02ecca715 sdr2hdr_image_v5.safetensors
5
+ 44c08cc202e4e0a3f7c59b13b0b25cec029116ec1b7d79102d07e269a5d44b90 sdr2hdr_image_v6.safetensors
6
+ 9ee451688b46ce2f11948d451dfe32f1816448c876231d7299eb29031aeb060c sdr2hdr_temporal_v1.safetensors
sdr2hdr/index.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "file": "sdr2hdr/sdr2hdr_shadow_v1.safetensors",
4
+ "note": "the shipped model: v5 backbone + trained shadow gate",
5
+ "params": 1217318,
6
+ "step": 2400,
7
+ "sha256": "a25ac506dd5cb2f20f1f428628c9bb4c6d09bfd5aed8f8b93d783314f98bd47c"
8
+ },
9
+ {
10
+ "file": "sdr2hdr/sdr2hdr_shadow_s2.safetensors",
11
+ "note": "same recipe, seed 2",
12
+ "params": 1217318,
13
+ "step": 2600,
14
+ "sha256": "f46b1a367ae9aca6df9d256243189462b7c504fdda9bb089bfe9588e3c213a87"
15
+ },
16
+ {
17
+ "file": "sdr2hdr/sdr2hdr_shadow_s3.safetensors",
18
+ "note": "same recipe, seed 3",
19
+ "params": 1217318,
20
+ "step": 2800,
21
+ "sha256": "46ab0e49bd246ef4e9e1394f3f736b5274afc04e24efd6afff994cf1b1d7cc7e"
22
+ },
23
+ {
24
+ "file": "sdr2hdr/sdr2hdr_image_v5.safetensors",
25
+ "note": "the backbone alone, no gate",
26
+ "params": 1196197,
27
+ "step": 81000,
28
+ "sha256": "3e0581ce5f4c20c53220955ce23af394a7ad5a091755c2ee5b72e9a02ecca715"
29
+ },
30
+ {
31
+ "file": "sdr2hdr/sdr2hdr_image_v6.safetensors",
32
+ "note": "4x capacity ablation, 64 base channels",
33
+ "params": 4770117,
34
+ "step": 83000,
35
+ "sha256": "44c08cc202e4e0a3f7c59b13b0b25cec029116ec1b7d79102d07e269a5d44b90"
36
+ },
37
+ {
38
+ "file": "sdr2hdr/sdr2hdr_temporal_v1.safetensors",
39
+ "note": "temporal refiner -- NOT an SDR2HDRNet",
40
+ "params": 37011,
41
+ "step": 0,
42
+ "sha256": "9ee451688b46ce2f11948d451dfe32f1816448c876231d7299eb29031aeb060c"
43
+ }
44
+ ]
sdr2hdr/sdr2hdr_image_v5.config.json ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "mode": "image",
3
+ "manifest": "E:\\RUDRA_v3_20260822\\sdr_hdr_manifest.jsonl",
4
+ "output_dir": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_image_v5",
5
+ "image_checkpoint": null,
6
+ "best_eval": "hard",
7
+ "resume": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_image_v5\\step_0020000.pt",
8
+ "init_checkpoint": null,
9
+ "reset_best": false,
10
+ "device": "cuda",
11
+ "steps": 100000,
12
+ "batch_size": 2,
13
+ "crop_size": 384,
14
+ "workers": 2,
15
+ "base_channels": 32,
16
+ "temporal_channels": 24,
17
+ "lr": 0.0002,
18
+ "weight_decay": 0.0001,
19
+ "grad_accum": 2,
20
+ "max_grad_norm": 1.0,
21
+ "augmentation_strength": 1.0,
22
+ "degradation_probability": 0.65,
23
+ "video_sample_fraction": 0.4,
24
+ "scene_balanced_sampling": true,
25
+ "temporal_weight": 0.5,
26
+ "shadow_chroma_weight": 0.15,
27
+ "shadow_smoothness_weight": 0.02,
28
+ "best_metric": "composite_gain",
29
+ "val_fraction": 0.1,
30
+ "eval_every": 1000,
31
+ "eval_batches": 128,
32
+ "save_every": 2000,
33
+ "log_every": 20,
34
+ "max_items": null,
35
+ "max_val_items": null,
36
+ "seed": 20260715,
37
+ "manifest_sha256": "2fc33f59704351099e6941ea40fa50f83674a630ee779729ad870455e52ef5f7",
38
+ "architecture": "SDR2HDRNet",
39
+ "input_contract": "8-bit normalized sRGB RGB",
40
+ "output_contract": "scene-linear RGB normalized to 10000 nits"
41
+ }
sdr2hdr/sdr2hdr_image_v5.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e0581ce5f4c20c53220955ce23af394a7ad5a091755c2ee5b72e9a02ecca715
3
+ size 4794076
sdr2hdr/sdr2hdr_image_v6.config.json ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "mode": "image",
3
+ "manifest": "E:\\RUDRA_v3_20260822\\sdr_hdr_manifest.jsonl",
4
+ "output_dir": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_image_v6_c64",
5
+ "image_checkpoint": null,
6
+ "best_eval": "hard",
7
+ "resume": null,
8
+ "init_checkpoint": null,
9
+ "reset_best": false,
10
+ "device": "cuda",
11
+ "steps": 100000,
12
+ "batch_size": 2,
13
+ "crop_size": 384,
14
+ "workers": 2,
15
+ "base_channels": 64,
16
+ "temporal_channels": 24,
17
+ "lr": 0.0002,
18
+ "weight_decay": 0.0001,
19
+ "grad_accum": 2,
20
+ "max_grad_norm": 1.0,
21
+ "augmentation_strength": 1.0,
22
+ "degradation_probability": 0.65,
23
+ "video_sample_fraction": 0.4,
24
+ "scene_balanced_sampling": true,
25
+ "temporal_weight": 0.5,
26
+ "shadow_chroma_weight": 0.15,
27
+ "shadow_smoothness_weight": 0.02,
28
+ "best_metric": "composite_gain",
29
+ "val_fraction": 0.1,
30
+ "eval_every": 1000,
31
+ "eval_batches": 128,
32
+ "save_every": 2000,
33
+ "log_every": 20,
34
+ "max_items": null,
35
+ "max_val_items": null,
36
+ "seed": 20260715,
37
+ "manifest_sha256": "2fc33f59704351099e6941ea40fa50f83674a630ee779729ad870455e52ef5f7",
38
+ "architecture": "SDR2HDRNet",
39
+ "input_contract": "8-bit normalized sRGB RGB",
40
+ "output_contract": "scene-linear RGB normalized to 10000 nits"
41
+ }
sdr2hdr/sdr2hdr_image_v6.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:44c08cc202e4e0a3f7c59b13b0b25cec029116ec1b7d79102d07e269a5d44b90
3
+ size 19089804
sdr2hdr/sdr2hdr_shadow_s2.config.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "manifest": "E:\\RUDRA_v3_20260822\\sdr_hdr_manifest.jsonl",
3
+ "init_checkpoint": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_image_v5\\shipped_v5_step81000.pt",
4
+ "output_dir": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_shadow_s2",
5
+ "steps": 3000,
6
+ "lr": 0.003,
7
+ "grad_accum": 8,
8
+ "max_side": 512,
9
+ "degradation_probability": 0.5,
10
+ "eval_every": 200,
11
+ "eval_batches": 128,
12
+ "best_smoothing": 5,
13
+ "workers": 2,
14
+ "seed": 2,
15
+ "device": "cuda",
16
+ "base_channels": 32,
17
+ "shadow_conditioning": true,
18
+ "objective": "degradation_bce"
19
+ }
sdr2hdr/sdr2hdr_shadow_s2.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f46b1a367ae9aca6df9d256243189462b7c504fdda9bb089bfe9588e3c213a87
3
+ size 4878384
sdr2hdr/sdr2hdr_shadow_s3.config.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "manifest": "E:\\RUDRA_v3_20260822\\sdr_hdr_manifest.jsonl",
3
+ "init_checkpoint": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_image_v5\\shipped_v5_step81000.pt",
4
+ "output_dir": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_shadow_s3",
5
+ "steps": 3000,
6
+ "lr": 0.003,
7
+ "grad_accum": 8,
8
+ "max_side": 512,
9
+ "degradation_probability": 0.5,
10
+ "eval_every": 200,
11
+ "eval_batches": 128,
12
+ "best_smoothing": 5,
13
+ "workers": 2,
14
+ "seed": 3,
15
+ "device": "cuda",
16
+ "base_channels": 32,
17
+ "shadow_conditioning": true,
18
+ "objective": "degradation_bce"
19
+ }
sdr2hdr/sdr2hdr_shadow_s3.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:46ab0e49bd246ef4e9e1394f3f736b5274afc04e24efd6afff994cf1b1d7cc7e
3
+ size 4878384
sdr2hdr/sdr2hdr_shadow_v1.config.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "manifest": "E:\\RUDRA_v3_20260822\\sdr_hdr_manifest.jsonl",
3
+ "init_checkpoint": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_image_v5\\shipped_v5_step81000.pt",
4
+ "output_dir": "E:\\RUDRA_v3_20260822\\checkpoints\\sdr2hdr_shadow_v1",
5
+ "steps": 3000,
6
+ "lr": 0.003,
7
+ "grad_accum": 8,
8
+ "max_side": 512,
9
+ "degradation_probability": 0.5,
10
+ "eval_every": 200,
11
+ "eval_batches": 128,
12
+ "best_smoothing": 5,
13
+ "workers": 2,
14
+ "seed": 20260901,
15
+ "device": "cuda",
16
+ "base_channels": 32,
17
+ "shadow_conditioning": true,
18
+ "objective": "degradation_bce"
19
+ }
sdr2hdr/sdr2hdr_shadow_v1.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a25ac506dd5cb2f20f1f428628c9bb4c6d09bfd5aed8f8b93d783314f98bd47c
3
+ size 4878392
sdr2hdr/sdr2hdr_temporal_v1.config.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "mode": "temporal",
3
+ "manifest": "E:\\RUDRA_postfix_20260818\\hdrdata\\video_manifest_9f_unc.jsonl",
4
+ "output_dir": "E:\\RUDRA_postfix_20260818\\hdrdata\\checkpoints\\sdr2hdr_temporal_postfix_v1",
5
+ "image_checkpoint": "E:\\RUDRA_postfix_20260818\\hdrdata\\checkpoints\\sdr2hdr_image_postfix_v1\\best.pt",
6
+ "resume": "E:\\RUDRA_postfix_20260818\\hdrdata\\checkpoints\\sdr2hdr_temporal_postfix_v1\\step_0016000.pt",
7
+ "init_checkpoint": null,
8
+ "reset_best": false,
9
+ "device": "cuda",
10
+ "steps": 30000,
11
+ "batch_size": 2,
12
+ "crop_size": 256,
13
+ "workers": 2,
14
+ "base_channels": 32,
15
+ "temporal_channels": 24,
16
+ "lr": 0.0002,
17
+ "weight_decay": 0.0001,
18
+ "grad_accum": 1,
19
+ "max_grad_norm": 1.0,
20
+ "augmentation_strength": 1.0,
21
+ "degradation_probability": 0.65,
22
+ "video_sample_fraction": 0.25,
23
+ "scene_balanced_sampling": true,
24
+ "temporal_weight": 0.5,
25
+ "shadow_chroma_weight": 0.15,
26
+ "shadow_smoothness_weight": 0.02,
27
+ "best_metric": "loss",
28
+ "val_fraction": 0.1,
29
+ "eval_every": 500,
30
+ "eval_batches": 16,
31
+ "save_every": 2000,
32
+ "log_every": 20,
33
+ "max_items": null,
34
+ "max_val_items": null,
35
+ "seed": 20260715,
36
+ "manifest_sha256": "b4a1791294282b912662b6d7293f04ec2cbe561eb79ffa72b4737f06812808bd",
37
+ "architecture": "TemporalHDRRefiner",
38
+ "input_contract": "8-bit normalized sRGB RGB",
39
+ "output_contract": "scene-linear RGB normalized to 10000 nits"
40
+ }
sdr2hdr/sdr2hdr_temporal_v1.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9ee451688b46ce2f11948d451dfe32f1816448c876231d7299eb29031aeb060c
3
+ size 150196