- Release VeraRetouch inference code.
- Release VeraRetouch model weights.
- Release Retouch Encoder-Renderer inference code and weights.
- 🔴 Release iOS toy deployment.
# Clone the repository
git clone https://github.com/OpenVeraTeam/VeraRetouch.git
cd VeraRetouch
# Create and activate conda environment
conda create -n vera-retouch python=3.10
conda activate vera-retouch
pip install -r requirements.txtDownload our pretrained weights from HuggingFace.
You can put the pretrained model to ./checkpoints
If you want to try "Reference Retouch" of Retouch Encoder-Renderer. please download Encoder-Renderer pretrained weights from this HuggingFace link.
Our model supports three inference modes:
- Auto Retouch: Only an image is input.
python inference.py --mode auto \
--model-path ./checkpoints/VeraRetouch # the pretrained model path \
--img_paths ./data_samples/input/sample_flower.jpg # input image paths, multiple paths are supported \
--save_dir ./data_samples/output/ # output texts and images save path \
--chunk -1 # Enable when GPU memory is insufficient. The renderer will process large images in chunks. Recommended value: 262144 (512*512), enabling chunking will reduce inference speed. \
--batch_size 1 # Support batch inference- Style Retouch: An image and user prompt are input.
python inference.py --mode style \
--prompt "I want a dreamy bright pink style." # style user prompt(only 'style' mode used) \
--model-path ./checkpoints/VeraRetouch # the pretrained model path \
--img_paths ./data_samples/input/sample_flower.jpg # input image paths, multiple paths are supported \
--save_dir ./data_samples/output/ # output texts and images save path \
--chunk -1 # Enable when GPU memory is insufficient. The renderer will process large images in chunks. Recommended value: 262144 (512*512), enabling chunking will reduce inference speed. \
--batch_size 1 # Support batch inference- Param Retouch: An image and retouching operator parameters are input.
python inference.py --mode style \
--instruction_path ./data_samples/param.json # retourch operator parameters(only 'param' mode used) \
--model-path ./checkpoints/VeraRetouch # the pretrained model path \
--img_paths ./data_samples/input/sample_flower.jpg # input image paths, multiple paths are supported \
--save_dir ./data_samples/output/ # output texts and images save path \
--chunk -1 # Enable when GPU memory is insufficient. The renderer will process large images in chunks. Recommended value: 262144 (512*512), enabling chunking will reduce inference speed. \
--batch_size 1 # Support batch inferenceThe Retouch Encoder-Renderer enables image retouching with reference based on either a pair of retouching images or a single target retouching image.
- Reference-based retouching with a pair of retouching images
python infer_ref_retouch.py --pretrained_path ./checkpoints/encoder_renderer.pth # Path to the pretrained model weights \
--output_dir ./data_samples/ref_outputs # Directory to save the final retouched output images \
--ref_before_img_path ./data_samples/ref_inputs/ref/before.jpg # File path of the original unretouched reference image \
--ref_after_img_path ./data_samples/ref_inputs/ref/after.jpg # File path of the retouched reference target image \
--input_img_path ./data_samples/ref_inputs/sample.jpg # File path of the input image to be retouched \
--chunk -1 # Enable when GPU memory is insufficient. The renderer will process large images in chunks. Recommended value: 262144 (512*512), enabling chunking will reduce inference speed. \- Reference-based retouching with a single target retouching image (referencing the processing paradigm of paper InstantRetouch: Personalized Image Retouching without Test-time Fine-tuning Using an Asymmetric Auto-Encoder: replace the pre-retouching image in the reference image pair with the input image)
python infer_ref_retouch.py --pretrained_path ./checkpoints/encoder_renderer.pth # Path to the pretrained model weights \
--output_dir ./data_samples/ref_outputs # Directory to save the final retouched output images \
--ref_before_img_path ./data_samples/ref_inputs/sample.jpg # !!! Keep same with input_img_path.!!! \
--ref_after_img_path ./data_samples/ref_inputs/ref/after.jpg # File path of the retouched reference target image \
--input_img_path ./data_samples/ref_inputs/sample.jpg # File path of the input image to be retouched \
--chunk -1 # Enable when GPU memory is insufficient. The renderer will process large images in chunks. Recommended value: 262144 (512*512), enabling chunking will reduce inference speed. \Comming soon...
@article{guo2026veraretouch,
title={VeraRetouch: A Lightweight Fully Differentiable Framework for Multi-Task Reasoning Photo Retouching},
author={Guo, Yihong and Lyu, Youwei and Tang, Jiajun and Zhou, Yizhuo and Wang, Hongliang and Chen, Jinwei and Zou, Changqing and Fan, Qingnan},
journal={arXiv preprint arXiv:2604.27375},
year={2026}
}