Super-résolution d’images réelles avec préservation de la structure fine via un entraînement VAE par transfert
🚩 Accepté par ICCV2025
Qiaosi Yi1,2 | Shuai Li1 | Rongyuan Wu1,2 | Lingchen Sun1,2 | Yuhui Wu1,2 | Lei Zhang1,2
1L’Université Polytechnique de Hong Kong, 2Institut de Recherche OPPO
⏰ Mise à jour
- 2025.7.29 : Article publié sur ArXiv.
- 2025.7.28 : Le code d’entraînement et de test est publié.
- 2025.7.24 : Le dépôt est publié.
À FAIRE
- [x] Publier le code pour l’inférence.
- [x] Mettre à jour le code pour l’entraînement.
- [ ] VAED4 en fp16.
⚙ Dépendances et installation
## git clone this repository
git clone https://github.com/Joyies/TVT.git
cd TVTcreate an environment
conda create -n TVT python=3.10
conda activate TVT
pip install --upgrade pip
pip install -r requirements.txt🏂 Inférence rapide
Super-résolution d'image réelle
#### Étape 1 : Télécharger les modèles pré-entraînés
- Téléchargez les modèles SD-2.1-base pré-entraînés depuis
- Téléchargez les poids des modèles (VAED4, modèle TVT, TVTUNet, DAPE, et RAM) depuis
et placez les poids dans le dossier
ckp/:
python TVT/inferences/inference.py \
--input_image input_path \
--output_dir output_path \
--pretrained_path ckp/model_TVT.pkl \
--pretrained_model_name_or_path stabilityai/stable-diffusion-2-1-base \
--pretrained_unet_path ckp/TVTUNet \
--vae4d_path ckp/vae.ckpt \
--ram_ft_path ckp/DAPE.pth \
--negprompt 'dotted, noise, blur, lowres, smooth' \
--prompt 'clean, high-resolution, 8k' \
--upscale 4 \
--time_step 1
or
bash scripts/test/test_realsr.sh
Nous fournissons également le code de tuiles pour économiser la mémoire GPU lors de l'inférence. Vous pouvez exécuter la commande et modifier la taille des tuiles et le pas en fonction de la VRAM de votre appareil.
python TVT/inferences/inference_tile.py \
--input_image input_path \
--output_dir output_path \
--pretrained_path ckp/model_TVT.pkl \
--pretrained_model_name_or_path stabilityai/stable-diffusion-2-1-base \
--pretrained_unet_path ckp/TVTUNet \
--vae4d_path ckp/vae.ckpt \
--ram_ft_path ckp/DAPE.pth \
--negprompt 'dotted, noise, blur, lowres, smooth' \
--prompt 'clean, high-resolution, 8k' \
--upscale 4 \
--time_step 1 \
--tiled_size 96 \
--tiled_overlap 32🚄 Phase d'entraînement
Entraîner VAED4 sur les jeux de données OpenImage et LSDIR.
#### Étape 1 : Préparer les données d'entraînement Téléchargez le jeu de données OpenImage et le jeu de données LSIDR. Pour chaque image du jeu de données LSDIR, découpez plusieurs patches d’image de 512×512 en utilisant une fenêtre glissante avec un pas de 64 pixels ;#### Étape 2 : Entraîner VAED4 Le code LDM est utilisé pour entraîner VAED4.
Entraîner TVTSR sur les jeux de données Real-ISR
#### Étape 1 : Préparer les données d'entraînementTéléchargez le jeu de données LSIDR et les 10 000 premières images du jeu de données FFHQ. Ensuite, effectuez une augmentation des données sur le jeu de données d'entraînement. Plus précisément, pour chaque image du jeu LSDIR, découpez plusieurs patches d’image de 512×512 en utilisant une fenêtre glissante avec un pas de 64 pixels ; pour le jeu FFHQ, redimensionnez directement toutes les images à 512×512.
#### Étape 2 : Entraîner le modèle Real-ISR
- Téléchargez les modèles VAED4, TVTUNet et RAM, et placez-les dans le dossier
ckp/. - Lancez l’entraînement.
accelerate launch --gpu_ids=0,1,2,3, --num_processes=4 TVT/train_TVTSR/train.py \
--pretrained_model_name_or_path="stabilityai/stable-diffusion-2-1-base" \
--pretrained_model_name_or_path_vsd="stabilityai/stable-diffusion-2-1-base" \
--pretrained_unet_path='ckp/TVTUNet' \
--vae4d_path='ckp/vae.ckpt' \
--dataset_folder="data_path" \
--testdataset_folder="test_path" \
--resolution=512 \
--learning_rate=5e-5 \
--train_batch_size=2 \
--gradient_accumulation_steps=2 \
--enable_xformers_memory_efficient_attention \
--eval_freq 500 \
--checkpointing_steps 500 \
--mixed_precision='fp16' \
--report_to "tensorboard" \
--output_dir="output_path" \
--lora_rank_unet_vsd=4 \
--lora_rank_unet=4 \
--lambda_lpips=2 \
--lambda_l2=1 \
--lambda_vsd=1 \
--lambda_vsd_lora=1 \
--min_dm_step_ratio=0.25 \
--max_dm_step_ratio=0.75 \
--use_vae_encode_lora \
--align_method="adain" \
--use_online_deg \
--deg_file_path="params_TVT.yml" \
--negative_prompt='painting, oil painting, illustration, drawing, art, sketch, oil painting, cartoon, CG Style, 3D render, unreal engine, blurring, dirty, messy, worst quality, low quality, frames, watermark, signature, jpeg artifacts, deformed, lowres, over-smooth' \
--test_image_prep='no_resize' \
--time_step=1 \
--tracker_project_name "experiment_track_name"
``
or
`shell
bash scripts/train/train.sh
`🔗 Citations
Si notre code aide votre recherche ou votre travail, veuillez envisager de citer notre article.
Voici les références BibTeX :
@article{yi2025fine,
title={Fine-structure Preserved Real-world Image Super-resolution via Transfer VAE Training},
author={Yi, Qiaosi and Li, Shuai and Wu, Rongyuan and Sun, Lingchen and Wu, Yuhui and Zhang, Lei},
booktitle={Proceedings of the IEEE/CVF international conference on computer vision},
year={2025}
}
``©️ Licence
Ce projet est publié sous la licence Apache 2.0.📧 Contact
Si vous avez des questions, veuillez contacter : qiaosiyijoyies@gmail.comRemerciements
Ce projet est basé sur diffusers, LDM, OSEDiff et PiSA-SR. Merci pour ce travail remarquable.statistiques
--- Tranlated By Open Ai Tx | Last indexed: 2026-02-22 ---