LTX 2 Image custom modular blocks

Custom Modular Diffusers blocks that extend LTX 2 Image with image-to-image, plus a unified AutoBlocks that folds text-to-image and img2img into a single pipeline. The workflow is chosen automatically from which inputs you pass.

prompt             -> text2image
prompt + image     -> image2image        (optional strength)

Loading & running

import torch
from diffusers import ModularPipeline

pipe = ModularPipeline.from_pretrained(
    "elismasilva/ltx2.3_image_custom_blocks",
    trust_remote_code=True,
)
pipe.load_components(
    names=["text_encoder", "tokenizer", "connectors", "transformer", "vae", "scheduler"],
    pretrained_model_name_or_path="elismasilva/ltx2.3-image-base",
    torch_dtype=torch.bfloat16,
)
pipe.to("cuda")

image = pipe(
    prompt="a cinematic close-up portrait with crisp realistic detail",
    height=704,
    width=1280,
    num_inference_steps=28,
    guidance_scale=3.0,
    output="images",
)[0]
image.save("ltx2_image_t2i.png")

image-to-image

Pass an image and optional strength to the same pipe:

import torch
from diffusers import ModularPipeline
from diffusers.utils import load_image

pipe = ModularPipeline.from_pretrained(
    "elismasilva/ltx2.3_image_custom_blocks",
    trust_remote_code=True,
)
pipe.load_components(
    names=["text_encoder", "tokenizer", "connectors", "transformer", "vae", "scheduler"],
    pretrained_model_name_or_path="elismasilva/ltx2.3-image-base",
    torch_dtype=torch.bfloat16,
)
pipe.to("cuda")

init_image = load_image("input.png")

result = pipe(
    prompt="preserve the scene while restoring crisp natural detail",
    image=init_image,
    height=704,
    width=1280,
    num_inference_steps=28,
    guidance_scale=3.0,
    strength=0.20,
    output="images",
)[0]
result.save("ltx2_image_i2i.png")

Blocks

The unified pipeline is composed of six modular blocks:

  1. LTX2ImageTextEncoderStep encodes prompts into packed per-layer Gemma hidden states.
  2. LTX2ImageConnectorStep adapts those hidden states with the image text connectors.
  3. LTX2ImageVaeEncoderStep optionally encodes an input image for img2img.
  4. LTX2ImagePrepareLatentsStep prepares one-frame image latents and FlowMatch timesteps.
  5. LTX2ImageDenoiseStep runs the LTX 2 Image denoising loop.
  6. LTX2ImageDecodeStep decodes latents into images or returns latent output.

Components

The blocks expect the following components from elismasilva/ltx2.3-image-base:

  • text_encoder
  • tokenizer
  • connectors
  • transformer
  • vae
  • scheduler

Diffusers merge compatibility

The image transformer reuses LTX2 attention, modulation and rotary helpers; those shared mathematical implementations were unchanged by the reviewed 2026-10-10 merge (7d047b180 versus be07836d9). The image transformer and image-only upstream pipelines were also unchanged. No video keyframe/DFR logic is added to this single-frame path. CPU contracts cover the reused helper signatures and loading the local block graph; image math and defaults remain intact. Shared loader/revision updates remain in Diffusers. New dependency versions require separate CUDA/performance approval.

Notes

The pipeline supports prompt embeds, custom sigmas or timesteps, guidance_scale, guidance_rescale, PAG inputs (pag_scale and pag_applied_layers), and VAE decode controls (decode_timestep and decode_noise_scale). For img2img, input_noise_sigma, input_sharpen, phase_cutoff, phase_transition_width, and phase_pad_factor can be used when you need more control over how the input image is converted into latents.

Downloads last month
13
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for elismasilva/ltx2.3_image_custom_blocks

Finetuned
(1)
this model

Collection including elismasilva/ltx2.3_image_custom_blocks