ACM Transactions on Graphics (TOG) 2026
Yue Ma1, Jiangming Wang1, Yucheng Wang1, Xilai Wang1, Zhiyuan Li2, Xinyu Wang3, Hongyu Liu1, Ruofan Liang4, Songchun Zhang1, Yuxuan Xue5, and Qifeng Chen1β
1HKUST Β 2University of Macau Β 3THU Β 4UoT Β 5University of Tuebingen
demo.mp4
TL;DR: LiveLight is the first diffusion-based framework for real-time streaming video relighting with interactive 3D point-light control. It lets users adjust light position, intensity, and color while preserving appearance and temporal coherence.
Click to expand the full abstract
We present LiveLight, the first diffusion-based framework for real-time streaming video relighting with interactive 3D lighting control. Achieving this requires effectively injecting dynamic 3D lighting into a diffusion model, maintaining high-fidelity generation under an extremely low number of function evaluations, and facilitating continuous streaming for interactive control. LiveLight combines a lightweight adapter for Multi-Plane Light Irradiance conditions, a geometry-guided feedback branch for structure-preserving few-step distillation, and a progressive rolling-window strategy that maintains temporal coherence while supporting arbitrarily long video. Experiments on real-world and synthetic benchmarks demonstrate state-of-the-art relighting quality at real-time speed.
- [2026.07.27] Code and ModelScope weights are released.
- [2026.07.24] Project page and paper are released.
Each video is arranged as input video, target light, and LiveLight output.
short-market.mp4
color-action.mp4
long-library.mp4
color-portrait.mp4
color-lego.mp4
color-period.mp4
short-chef.mp4
long-animation.mp4
long-toy-drummer.mp4
- Interactive 3D lighting: control point-light position, intensity, and RGB color directly.
- Real-time streaming: relight an arbitrarily long video stream without waiting for a complete clip.
- High fidelity in four steps: geometry-guided few-step distillation preserves structure, appearance, and temporal consistency.
- Fast inference: 15.78 FPS and 0.253 s latency with the standard VAE.
git clone https://github.com/mayuelala/LiveLight.git
cd LiveLight
conda create -n livelight python=3.10 -y
conda activate livelight
python -m pip install --upgrade pip
pip install -r requirements.txt
accelerate configxformers is recommended to reduce GPU memory use and improve speed. The released requirements target CUDA-enabled PyTorch 2.1.0.
Download the LiveLight weights from ModelScope:
python -m pip install modelscope
python download_weights.pyThis downloads the denoising UNet, reference UNet, temporal module, and light guider to pretrained_weights/LiveLight. To use another location:
python download_weights.py --output-dir path/to/LiveLight_weightsThe Stable Diffusion Image Variations base model, VAE, image encoder, and other third-party weights are not redistributed here. Download them separately and update the corresponding paths in configs/train/ and configs/prompts/. The default configuration expects:
pretrained_weights/
βββ LiveLight/
βββ sd-image-variations-diffusers/
βββ sd-vae-ft-mse/
βββ pixel-perfect-depth/
βββ xnemo/
Update dataset paths, pretrained-model paths, output paths, and checkpoint paths in the configuration files before training.
accelerate launch train_livelight_stage1.py \
--config configs/train/relight_stage1.yamlSet warm_start_dir in configs/train/relight_stage2.yaml to the Stage 1 checkpoint, then run:
accelerate launch train_livelight_stage2.py \
--config configs/train/relight_stage2.yamlSet the Stage 2 checkpoint paths and temporal-module path in configs/train/relight_stage3_finetune.yaml, then run:
accelerate launch train_livelight_stage3_perframe_ref.py \
--config configs/train/relight_stage3_finetune.yamlpython inference_livelight_stage1.py \
--input-image path/to/input.png \
--depth-npy path/to/input_depth.npy \
--output-dir outputs/stage1 \
--ckpt-dir path/to/stage1_checkpoint_dir \
--train-config configs/train/relight_stage1.yaml \
--use-xformersControl lighting with --light-u, --light-v, --light-z-rel, --light-intensity, and --light-color.
Prepare the input video as an ordered directory of frames. Update the model, temporal-module, and depth-estimator paths in configs/prompts/relight_perframe_ref.yaml, then run:
python inference_livelight_stage3.py \
--config-path configs/prompts/relight_perframe_ref.yaml \
--input-dir path/to/input_frames \
--depth-dir path/to/depth_maps \
--output-dir outputs/stage3 \
--num-frames 40 \
--acceleration xformers--depth-dir is optional when Pixel Perfect Depth is configured. Results, metadata, and reports are written beneath <output-dir>.
If you find LiveLight useful, please consider citing:
@article{livelight2026,
title = {LiveLight: Real-time Streaming Video Relighting
with Interactive Control},
author = {Yue Ma and Jiangming Wang and Yucheng Wang and
Xilai Wang and Zhiyuan Li and Xinyu Wang and
Hongyu Liu and Ruofan Liang and Songchun Zhang and
Yuxuan Xue and Qifeng Chen},
journal = {ACM Transactions on Graphics},
year = {2026}
}This project is released under the MIT License.
