The difference between this pipeline and a normal upscale is one sentence in the episode: it does not generate and then enlarge, it enlarges while correcting. After each latent upscale, the image conditioning is applied again through an image-to-video node, so the face, the composition and the reference style are pulled back into place at the new resolution. That is what lets a distillation-only flow keep identity across a three-pass render instead of drifting.
Evidence note: the graph ships as JSON and is parsed below — node count, checkpoint, LoRA, sigma chains, latents, upscaler. The claims about tail-end decay, the 0.15 MP first pass, the 1.1 upscaler being the better local choice and the 18-value blur caveat are the author's reported findings in 字幕.srt.
Where this fits
You have one image and want a 10-second clip that keeps the character recognisable all the way to the end — specifically, you want to stop the late-frame decay that plagues single-pass renders. The author's demo results are all ten-second clips.
The graph
| Item | Value |
|---|---|
| Nodes | 145 |
| Checkpoint | ltx-2.3-22b-dev.safetensors |
| LoRA |
ltx-2.3-22b-distilled-lora-384.safetensors @ 0.5
|
| Samplers |
euler_ancestral_cfg_pp (first) then euler_cfg_pp (second, third) |
| CFG |
1 on every CFGGuider
|
| First-pass sigmas | 1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0 |
| Later-pass sigmas | 0.85, 0.7250, 0.4219, 0.0 |
| Latents | 320x288x*97* frames; audio 97 frames @ 25 fps |
| Upscaler |
ltx-2.3-spatial-upscaler-x2-1.0.safetensors (author recommends 1.1 locally) |
| RunningHub | https://www.runninghub.ai/post/2033775150256103426/?inviteCode=rh-v1111 |
Fetched once: HTTP 200, title matches.
Note the node count: 145 for a three-pass pipeline, because the graph carries three near-identical sampling assemblies. That is the cost of this approach in file size and in wiring complexity.
Step by step
-
Load the first image in
Load Image. - Write the positive prompt. Look up the LTX 2.3 prompt guide — the author says following the documented format gives noticeably better results.
- No negative prompt needed here. This is a distillation flow at CFG 1, and the NAG node that would make a negative prompt effective is not wired in yet. He says the flow currently asks only for the positive prompt.
- Set fps to 24 and total frames to 241. That is the ten-second setting.
- Run. The first pass builds motion on a low-resolution latent canvas; passes two and three each double the latent and re-render with the upscale model's sigma — about 3 actual steps per refinement pass.
- Size: he constrains the initial image to 0.15 megapixels through the megapixel scale node, and takes the width/height from a node upstream rather than setting them by hand.
- Optional: feed a higher-resolution result or the final video into the upscale graph again if you want more, but the shipped flow already lands near 1080p — the demo output is 2048x1024.
How each pass actually works
- The first pass starts from the low-resolution image latent as the canvas, and builds a matching audio latent — both are required for the audio-visual model.
- Frame count and fps come out of the latent dimensions.
- After the first pass, the audio-visual latent is separated, the video latent is upscaled by 2x, and the pair is recombined for the second pass.
- The image-to-video node appears in every pass and re-references the same image, which was cleanly scaled to a 1536 edge. That is the mechanism behind "correct as you upscale".
- After the third pass, decode.
Two knobs and one caveat
- The boolean in the image-to-video node turns the flow into text-to-video: flip it and the first image is ignored.
-
The
18value blurs the reference image — higher is blurrier. It is there to keep the conditioning from being too literal. - The caveat that matters: if you strip the flow down to one or two passes, that 18 value can make the result more static, because the blur no longer gets corrected by a later refinement pass. Cut passes and you should re-tune it.
What changed versus two-pass / one-pass-plus-upscale
- Two-stage sampling and single-stage-plus-spatial-upscale are described as fundamentally different: they enlarge, this one re-conditions after each enlargement.
- The upscaler in the official LTX 2.3 release has been updated to 1.1; the author recommends the 1.1 spatial upscaler for local runs, especially for long clips. The shipped JSON still references 1.0.
- The graph was adapted from a Reddit user's workflow, with the author's own changes.
Limits
- The upscaler version in the JSON (1.0) is behind the 1.1 the author recommends for local use.
- No negative-prompt path yet at CFG 1.
- 145 nodes means three duplicated sampling blocks — more to maintain than a single-pass graph.
- The
18blur needs re-tuning if you change the pass count. - RunningHub was described as frequently overloaded during this period; the author ran some results locally.
- Identity retention is strong but not absolute; the demo images with thin detail come out nearly identical, which he notes is a limitation of the source, not a feature.
Episode resources
- RunningHub: https://www.runninghub.ai/post/2033775150256103426/?inviteCode=rh-v1111
- YouTube: https://www.youtube.com/watch?v=wzYUP2QeM6o
- Bilibili: https://www.bilibili.com/video/BV1t9woz8Ev5
- No Compshare mirror recorded (
优云智算链接:无).
Top comments (0)