

Les images sont compressées pour la vitesse de chargement.
Ctrlora: un cadre extensible et efficace pour la génération d'images contrôlables
Yifeng Xu 1,2 , Zhenliang He 1 , Shiguang Shan 1,2 , Xilin Chen 1,2
1 laboratoire clé de la sécurité de l'IA, Institut de technologie informatique, CAS, Chine
2 Université de l'Académie des sciences chinoises, Chine

Nous entraînons d'abord un contrôle de base avec des loras spécifiques à la condition sur des conditions de base avec un ensemble de données à grande échelle. Ensuite, notre contrôle de base peut être efficacement adapté à de nouvelles conditions par de nouveaux loras avec aussi peu que 1 000 images et moins de 1 heure sur un seul GPU .
![]() |
|---|
![]() |
|---|
![]() |
|---|
![]() |
|---|
Cloner ce repo:
git clone --depth 1 https://github.com/xyfJASON/ctrlora.git
cd ctrloraCréer et activer un nouvel environnement conda:
conda create -n ctrlora python=3.10
conda activate ctrloraInstallez Pytorch et autres dépendances:
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
pip install -r requirements.txt Nous fournissons nos modèles pré-entraînés ici. Veuillez mettre le ControlNet de base ( ctrlora_sd15_basecn700k.ckpt ) dans ./ckpts/ctrlora-basecn et les loras dans ./ckpts/ctrlora-loras . La convention de dénomination des Loras est ctrlora_sd15_<basecn>_<condition>.ckpt pour les conditions de base et ctrlora_sd15_<basecn>_<condition>_<images>_<steps>.ckpt pour les conditions nouvelles.
Vous devez également télécharger les modèles basés sur SD1.5 et les mettre dans ./ckpts/sd15 . Modèles utilisés dans notre travail:
v1-5-pruned.ckpt ): officiel / miroirpython app/gradio_ctrlora.pyNécessite au moins 9 Go / 21 Go de RAM GPU pour générer un lot de 1 / quatre images 512x512.



Sur la base de notre ControlNet de base, vous pouvez entraîner une LORA pour votre état personnalisé avec aussi peu que 1 000 images et moins de 1 heure sur un seul GPU (20 Go).
Tout d'abord, téléchargez la diffusion stable v1.5 ( v1-5-pruned.ckpt ) dans ./ckpts/sd15 et le ControlNet de base ( ctrlora_sd15_basecn700k.ckpt ) dans ./ckpts/ctrlora-basecn comme décrit ci-dessus.
Deuxièmement, mettez vos données personnalisées dans ./data/<custom_data_name> avec la structure suivante:
data
└── custom_data_name
├── prompt.json
├── source
│ ├── 0000.jpg
│ ├── 0001.jpg
│ └── ...
└── target
├── 0000.jpg
├── 0001.jpg
└── ...
source contient des images de condition, telles que les bords émaux, les cartes de segmentation, les images de profondeur, etc.target contient des images à travers le sol correspondant aux images de condition.prompt.json doit suivre le format comme {"source": "source/0000.jpg", "target": "target/0000.jpg", "prompt": "The quick brown fox jumps over the lazy dog."} .Troisièmement, exécutez la commande suivante pour former la Lora pour votre condition personnalisée:
python scripts/train_ctrlora_finetune.py
--dataroot ./data/ < custom_data_name >
--config ./configs/ctrlora_finetune_sd15_rank128.yaml
--sd_ckpt ./ckpts/sd15/v1-5-pruned.ckpt
--cn_ckpt ./ckpts/ctrlora-basecn/ctrlora_sd15_basecn700k.ckpt
[--name NAME]
[--max_steps MAX_STEPS]--dataroot : chemin vers les données personnalisées.--name : nom de l'expérience. Le répertoire de journalisation sera ./runs/name . Par défaut: heure actuelle.--max_steps : nombre maximum d'étapes de formation. Par défaut: 100000 .Après l'entraînement, extraire les poids LORA avec la commande suivante:
python scripts/tool_extract_weights.py -t lora --ckpt CHECKPOINT --save_path SAVE_PATH--ckpt : Chemin vers le point de contrôle produit par la formation ci-dessus.--save_path : chemin pour sauver les poids LORA extraits. Enfin, mettez la lora extraite dans ./ckpts/ctrlora-loras et utilisez-la dans la démo Gradio.
Veuillez vous référer aux instructions ici pour plus de détails sur la formation, le réglage fin et l'évaluation.
Ce projet est construit sur une diffusion stable, ControlNet et UniControl. Merci pour leur excellent travail!
Si vous trouvez ce projet utile, veuillez envisager de citer:
@article { xu2024ctrlora ,
title = { CtrLoRA: An Extensible and Efficient Framework for Controllable Image Generation } ,
author = { Xu, Yifeng and He, Zhenliang and Shan, Shiguang and Chen, Xilin } ,
journal = { arXiv preprint arXiv:2410.09400 } ,
year = { 2024 }
}