Nodes/FLOAT Optimized/FLOAT Decode Latents to Images (Ad)
ComfyUI Node

FLOAT Decode Latents to Images (Ad)

The payoff at the end of the pipeline

By set-soft·Created about a year ago·Updated about a year ago· 33
FLOAT Decode Latents to Images (Ad)
  • appearance_pipe
  • r_d_latents
  • float_pipe
  • images
  • fps
  • float_pipe

Every Advanced FLOAT workflow ends here. FLOAT Decode Latents to Images (Ad) takes the appearance (bundled in the appearance_pipe from FLOAT Encode Image to Latents) and the motion sequence (r_d_latents from FLOAT Sample Motion Sequence rd) and renders the actual frames of your talking head. Everything before this was latents and conditioning; this is where pixels appear.

The mechanism is the decoder half of FLOAT's motion autoencoder. For each frame t in the driven motion sequence, it computes s_r + r_d[t] - the reference appearance plus that frame's motion offset - and runs it through the Synthesis/Decoder, which warps the appearance's multi-resolution feature maps (feats) into the new pose and renders the final image. Frame by frame, out come the images. It's the explicit, Advanced-flavored version of what FLOAT Process (Opt) does silently at the end of its one-button run.

The wiring

Inputs:

  • appearance_pipe (Ws→r) - from FLOAT Encode Image to Latents. Contains the s_r appearance latent and the feature maps. If you only have the raw reference image here, you've skipped a step.
  • r_d_latents - the motion sequence from FLOAT Sample Motion Sequence rd. The number of frames it has determines the number of frames you get out.
  • float_pipe - carries the decoder weights.

Outputs:

  • images - the rendered frame sequence as one IMAGE batch. Straight into a Preview, Save, or VHS-style video-assembly node.
  • fps - passed through so a video encoder knows the timing (this is why it exists as an output rather than you guessing).
  • float_pipe - passthrough.

Notes that save you a headache

The decode is the least glamorous and most memory-hungry step of the Advanced graph, and it's also where RGBA handling matters: if your reference had transparency, the strategy you picked in Float Advanced Options (blend_with_color / discard_alpha / replace_with_color) is applied here, so a weird checkerboard or black fringe in the output traces back to that choice, not to the decoder.

If the output is the right face but frozen, the problem is upstream - the motion sequence was bad or the frame count didn't match the audio; if it's a different-looking face, the appearance pipe didn't come from the same image you think it did. Decode faithfully renders what it's given, which is honestly the best property a final node can have.

Install is the pack's one routine: ComfyUI Manager search "ComfyUI-FLOAT_Optimized", or cd ComfyUI/custom_nodes && git clone https://github.com/set-soft/ComfyUI-FLOAT_Optimized && pip install -r requirements.txt, restart, and let the unified model (~2.4 GiB) download on first run. And the pack-wide reminder: FLOAT is CC BY-NC-SA 4.0, so this stays out of commercial products.

CategoryFLOAT/Advanced

Inputs (3)

NameTypeDefaultDescription
appearance_pipeFLOAT_APPEARANCE_PIPEThe bundled appearance information (s_r latent and feature maps) from the FloatEncodeImageToLatents node. (Ws→r)
r_d_latentsTORCH_TENSOR
float_pipeFLOAT_PIPE

Outputs (3)

NameTypeDescription
imagesIMAGE
fpsFLOAT
float_pipeFLOAT_PIPE