Video-to-Video
Diffusion Single File
LTX-2
English
clean-plate
object-removal
ltx-video
ic-lora
ltx-2.3
vfx
Instructions to use Lightricks/LTX-2.3-22b-IC-LoRA-Clean-Plate with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusion Single File
How to use Lightricks/LTX-2.3-22b-IC-LoRA-Clean-Plate with Diffusion Single File:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- LTX-2
How to use Lightricks/LTX-2.3-22b-IC-LoRA-Clean-Plate with LTX-2:
# Install the LTX-2 pipelines git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 uv sync --frozen
# Download the weights from this repo, plus the Gemma text encoder hf download Lightricks/LTX-2.3-22b-IC-LoRA-Clean-Plate --local-dir models/LTX-2.3-22b-IC-LoRA-Clean-Plate hf download google/gemma-3-12b-it-qat-q4_0-unquantized --local-dir models/gemma-3-12b
# Video-to-video with the IC-LoRA (runs on the distilled base model) uv run python -m ltx_pipelines.ic_lora \ --distilled-checkpoint-path path/to/distilled_checkpoint.safetensors \ --spatial-upsampler-path path/to/spatial_upsampler.safetensors \ --gemma-root models/gemma-3-12b \ --lora models/LTX-2.3-22b-IC-LoRA-Clean-Plate/<weights>.safetensors 1.0 \ --video-conditioning reference.mp4 1.0 \ --prompt "your prompt here" \ --output-path output.mp4 - Notebooks
- Google Colab
- Kaggle
| base_model: | |
| - Lightricks/LTX-2.3 | |
| base_model_relation: adapter | |
| license: other | |
| license_name: ltx-2-community-license | |
| license_link: https://github.com/Lightricks/LTX-2/blob/main/LICENSE | |
| language: | |
| - en | |
| tags: | |
| - clean-plate | |
| - object-removal | |
| - ltx-video | |
| - ic-lora | |
| - ltx-2.3 | |
| - video-to-video | |
| - vfx | |
| - diffusion-single-file | |
| - ltx | |
| pipeline_tag: video-to-video | |
| extra_gated_description: >- | |
| By clicking "Agree and Access" you acknowledge the [Privacy | |
| Policy](https://static.lightricks.com/legal/Privacy%20Policy%20-%20LTX%20Platform.pdf) | |
| and consent to receive offers and updates including targeted and personalized | |
| advertisements. You can unsubscribe at any time. | |
| extra_gated_button_content: Agree and Access | |
| widget: | |
| - text: >- | |
| An empty clean plate of the exact same scene: a colorful wooden fishing boat | |
| with identical painted hull, fishing nets, ropes and gear floating on calm | |
| blue sea, with the same distant boat, rocky breakwater shoreline, water and | |
| clear sky as the source video, but with no one aboard. No people, no humans, | |
| no men, no fishermen, no figures, and no body parts such as heads, arms, | |
| hands or legs anywhere in the frame, on the boats or in the background. No | |
| cast shadows or reflections of people on the boat or water. Static | |
| photorealistic footage, natural daylight, high detail. Keep the boats, nets | |
| and background intact. | |
| output: | |
| url: examples/clean_plate_001_output_sbs.mp4 | |
| - text: >- | |
| An empty clean plate of the exact same location: a modern open-plan office | |
| with identical desks, office chairs, monitor dividers, concrete pillar, | |
| exposed ceiling with pipes and acoustic panels, large windows with city | |
| view, floor and lighting as the source video. No people, no humans, no | |
| figures, and no body parts such as faces, arms, hands or legs anywhere in | |
| the frame. No backpack, no ID badge, no lanyard anywhere in the frame. No | |
| cast shadows from people on the floor or walls. Static photorealistic | |
| footage, natural indoor light, high detail. | |
| output: | |
| url: examples/clean_plate_005_output_sbs.mp4 | |
| - text: >- | |
| An empty clean plate of the exact same location: an elevated train station | |
| platform with identical concrete floor, blue tactile edge strip, | |
| metal-and-glass canopy roof, train tracks, trackside buildings, storefronts, | |
| advertising tower and sunset sky as the source video. No people, no humans, | |
| no figures, and no body parts such as arms, hands or legs anywhere in the | |
| frame. No backpack, no tripod, no hat anywhere in the frame. No train, no | |
| subway car, no cars, no vans, no vehicles anywhere in the frame. No cast | |
| shadows from people, trains or vehicles. Static photorealistic footage, | |
| natural daylight, high detail. | |
| output: | |
| url: examples/clean_plate_006_output_sbs.mp4 | |
| # LTX-2.3 Clean Plate IC-LoRA | |
| An IC-LoRA for LTX-2.3-22B that removes people and other dynamic subjects from a source video and reconstructs the empty background, producing a clean "clean plate" of the same scene. | |
| It is based on the [LTX-2.3](https://huggingface.co/Lightricks/LTX-2.3) foundation model. | |
| <Gallery /> | |
| ## Model Files | |
| `ltx-2.3-22b-ic-lora-clean-plate-1.0.safetensors` | |
| ## Model Details | |
| - **Base Model:** LTX-2.3-22B Video | |
| - **Training Type:** IC-LoRA (video-to-video) | |
| - **Control Type:** Reference video — the original clip containing the subjects to remove | |
| - **Reference Downscale Factor:** 1 | |
| - **Audio:** Not trained for audio generation (audio skipped during preprocessing) | |
| ## Intended Use & Out-of-Scope | |
| **Intended use:** Producing clean background plates for VFX and compositing by removing people, pedestrians, and vehicles from static or moving-camera footage while preserving the static background (architecture, ground markings, foliage, street furniture). It also removes edge/foreground occluders (e.g. a cyclist's arms, handlebars, or a bike) when enough surrounding background is visible. | |
| **Out of scope:** Subjects that dominate and occlude most of the frame — for example first-person legs/torso filling the center of a POV shot — where too little background remains to reconstruct. Use dedicated mask-based inpainting for those cases. | |
| ## Control Signal Requirements | |
| - **Control signal type:** Reference video (RGB) — the original clip with the subjects present. | |
| - **Expected input:** A video clip with spatial dimensions divisible by 32 and a frame count of 8k+1, supplied as the video-to-video reference / first-frame conditioning. | |
| - **Preprocessing:** None beyond a standard resize to a 32-divisible resolution and an 8k+1 frame count. The stock workflow encodes audio, so ensure the clip has an audio track (add a silent one if the source has none). | |
| - **Alignment:** The output is frame-aligned to the reference — same length and same framing. | |
| - **Mask support:** None. This is a full-frame model that removes dynamic subjects globally; it does not take a user-supplied region mask. | |
| ## How It Works | |
| The model is trained video-to-video: the reference clip's latent is the conditioning signal and the target is the people-free clean plate. At inference you feed the original clip as the reference, and the LoRA regenerates it with dynamic subjects removed while keeping the static background intact. There is no trigger word — conditioning comes from the reference latent, and the text prompt is used to describe the desired empty scene (and to name specific objects that should not appear). | |
| ## Usage | |
| ### ComfyUI | |
| 1. Copy the LoRA weights into `models/loras`. | |
| 2. Load the **LTX-2.3-22B** base model and add `ltx-2.3-clean-plate.safetensors` as the LoRA. | |
| 3. Start at strength `1.0` and adjust to taste. | |
| 4. Use an [IC-LoRA (video-to-video) workflow](https://github.com/Lightricks/ComfyUI-LTXVideo/blob/master/example_workflows/2.3/LTX-2.3_V2V_ICLoRA_Single_Stage_Distilled.json) from the [LTX-2 ComfyUI repository](https://github.com/Lightricks/ComfyUI-LTXVideo/), which already wires the reference-video conditioning nodes. Feed the original clip as the reference and write a prompt describing the empty scene. | |
| ## Recommended Settings | |
| - **LoRA strength / weight:** `1.0` | |
| - **Resolution & frames:** Trained at `1024×576` and `576×1024`, 49 frames @ 25 fps. Also validated at HD `1920×1088` / `1088×1920`. Keep spatial dimensions divisible by 32 and frame counts at 8k+1. | |
| - **Prompting:** Describe the *desired empty scene* rather than issuing a "remove X" command — the LoRA was trained on captions that describe the clean result. Put subjects that must not appear in the negative prompt. | |
| - **Name specific occluders explicitly:** When a particular object must go (e.g. a bicycle), name it in *both* the positive ("...no bicycle or bike anywhere in the frame") and the negative prompt. In testing this was the difference between the bike/handlebars being fully removed vs. left behind. | |
| Example positive prompt: | |
| ```text | |
| An empty clean plate of the exact same location: identical background, environment, structures and lighting as the source video, with no people, no humans, no figures, and no body parts such as arms, hands or legs anywhere in the frame. Static photorealistic footage, natural light, high detail. | |
| ``` | |
| Example negative prompt: | |
| ```text | |
| person, people, human, figure, limb, arm, hand, leg, body part, backpack, shadow of a person, leftover people, leftover figures, ghosting, semi-transparent remnants, blurry, soft, distorted, inconsistent motion, jitter, worst quality, cartoon, video game, ugly | |
| ``` | |
| ## References | |
| - **Code:** [GitHub Repository](https://github.com/Lightricks/LTX-2) | |
| - **ComfyUI:** [ComfyUI-LTXVideo](https://github.com/Lightricks/ComfyUI-LTXVideo/) | |
| ## Tips & Troubleshooting | |
| - **Composition matters most.** Removal works best when the subject is a partial or edge occluder with visible background around it. It struggles when the subject fills the center of the frame, because little real background remains to reconstruct. | |
| - **Persisting object?** Add it by name to both the positive (as "no `<object>`") and the negative prompt. | |
| - **Large first-person body parts** (POV legs/torso dominating the frame) are out of scope — use mask-based inpainting instead. | |
| - **Audio-encode error on the stock workflow?** Ensure the input clip has an audio track; add a silent track if the source has none. | |
| - **Respect the format constraints:** resolution divisible by 32 and frame count at 8k+1. | |
| ## Dataset | |
| 26 paired clips. Each pair is a reference clip (a scene containing people and/or vehicles) and its clean-plate target (the same scene with the dynamic subjects removed), spanning city streets, offices, airport concourses, and outdoor/POV scenes. Mixed landscape and portrait orientation, 49 frames @ 25 fps. Captions describe the empty target scene. | |
| ## Training | |
| - **Technique:** Video-to-video IC-LoRA trained from scratch on LTX-2.3-22B, using reference-latent conditioning (`reference_latents_dir`) with `first_frame_conditioning_p = 0.1`. | |
| - **Hyperparameters:** rank 32, alpha 32, dropout 0.0, target modules attn1/attn2 {to_q, to_k, to_v, to_out.0} + ff.net.0.proj + ff.net.2, AdamW, learning rate 2e-4 (linear decay to 0), batch size 1, gradient accumulation 1, bf16 mixed precision, gradient checkpointing on. | |
| - **Steps:** 3000. | |
| - **Resolution buckets:** 1024×576×49 and 576×1024×49. | |
| - **Infrastructure:** LTX-2 Community Trainer (single H100 80GB, ~224 min, peak ~55 GB VRAM). | |
| ## License | |
| See the **[LTX-2-community-license](https://github.com/Lightricks/LTX-2/blob/main/LICENSE)** for full terms. | |
| ## Acknowledgments | |
| - Base model by **[Lightricks](https://ltx.io/)** | |
| - Training infrastructure: **[LTX-2 Community Trainer](https://github.com/Lightricks/LTX-2/tree/main/packages/ltx-trainer)** |