--- license: other license_name: ltx-video-license license_link: https://huggingface.co/Lightricks/LTX-2.3/blob/main/LICENSE.txt base_model: Lightricks/LTX-2.3 tags: - lora - ic-lora - ltx-video - ltx-2.3 - video-restoration - dearchive pipeline_tag: video-to-video library_name: peft --- # dearchive · LTX-2.3 IC-LoRA An **In-Context LoRA** for [LTX-2.3](https://huggingface.co/Lightricks/LTX-2.3) (dev, 22B) that takes **real archive video** — old broadcast B&W footage, low-res low-bitrate web rips, sepia-toned silent-era prints — and **rewrites it as if shot more recently** (colored, high definition, sharp detail, modern cinematography). Tested on actual archive footage, not just synthetic equivalents. | | | |---|---| | Base model | `Lightricks/LTX-2.3` (`ltx-2.3-22b-dev.safetensors`) | | Strategy | `video_to_video` (in-context, reference-conditioned) | | LoRA rank / alpha | 128 / 128 | | Trainable params | 855,638,016 (~0.86 B) | | Optimizer | Prodigy (D-Adaptation), `lr=1.0`, bias-correction + safeguard-warmup | | Scheduler | cosine | | Mixed precision | bf16 + int8-quanto | | Reference downscale | 1 (full res) | | Resolution buckets | `960×544×97; 960×544×49` | | Steps | 5000 | | Save interval | every 500 steps | | Seed | 42 | ## What it learns to undo Real archive YouTube uploads of mid-20th-century broadcast footage (Bruce Lee interviews, Chaplin web rips, etc.) are dominated by **resolution + compression loss**, not silent-era film damage. The training pipeline mirrors that: ``` clean 1920×1080 → tonal degrade (B&W via Rec.601 luma, optional family tint, contrast/gamma) → capture-σ blur (tier-scaled, simulates lens / multi-gen optical printing) → downscale to 360p / 270p / 240p (bilinear) → low-bitrate h264 encode @ 60–320 kbps → optional re-encode 1–3 generations (compounds compression artifacts) → optional hqdn3d denoise (heavy tier only) → Lanczos upscale back to 1920×1080 (matches inference-time user upscale) ``` Three corruption *families* are sampled per pair: | Family | What it matches | Calibration ref | |---|---|---| | `chain_neutral` | neutral B&W broadcast tier | Bruce Lee Philosophy (yt nzQWYHHqvIw, 640×360 / 62 kbps) | | `tint_tape` | cool-green VHS-tape oxidation | Bruce Lee Nunchucks (yt qHe6vhexm6g, 320×240 / 88 kbps) | | `tint_sepia` | warm-brown film-age fade | Safety Last (1923, sepia mid-tones) | Tape family gets the heavy chain at the heaviest tier (smashed BL-Nunchucks-class output); neutral and sepia families use 0.65 / 0.70 multipliers on the capture σ and 0.5× the denoise probability so they preserve the gentler mid-tier character. ## Dataset - **53 source clips**, landscape ≥720p, ≥6 s - **3 corrupted variants per source** → **159 pairs total** (151 train + 8 held-out validation) - All target/reference at **1920×1080 16:9** (matching aspects — this LoRA does not outpaint) - Frames: **97 frames @ 24 fps** (4.04 s; LTX-2 requires `n % 8 == 1`) - Caption (single, generic): *"A modern, high-resolution video shot in vivid color (or natural monochrome), with sharp detail, clean tonality, and contemporary cinematography."* ## Files | File | Step | |---|---| | `lora_weights_step_05000.safetensors` | 5000 (final) | | `training_state_step_05000.pt` | 5000 | | `DeArchive.json` | example ComfyUI workflow | ## Quick inference ```bash git clone https://github.com/Lightricks/LTX-2.git && cd LTX-2 && uv sync uv pip install peft uv run python packages/ltx-trainer/scripts/inference.py \ --checkpoint /path/to/ltx-2.3-22b-dev.safetensors \ --text-encoder-path /path/to/gemma-3-12b-it-qat-q4_0-unquantized \ --lora-path /path/to/lora_weights_step_05000.safetensors \ --reference-video /path/to/your_lanczos_upscaled_archive.mp4 \ --prompt "A modern, high-resolution video shot in vivid color, sharp detail, contemporary cinematography." \ --width 960 --height 544 --num-frames 97 --frame-rate 24 \ --num-inference-steps 50 --guidance-scale 4.0 \ --output dearchive_restored.mp4 ```