

Die Bilder werden für die Ladegeschwindigkeit komprimiert.
Ctrora: Ein erweiterbares und effizientes Rahmen für die steuerbare Bilderzeugung
Yifeng Xu 1,2 , Zhenliang HE 1 , Shiguang Shan 1,2 , Xilin Chen 1,2
1 Schlüssellabor der KI -Sicherheit, Institut für Computertechnologie, CAS, China
2 Universität chinesischer Akademie der Wissenschaften, China

Wir trainieren zuerst ein Basiskontrollnet zusammen mit konditionsspezifischen Loras unter den Basisbedingungen mit einem groß angelegten Datensatz. Dann kann unser Basiskontrollnet durch neue Loras mit neuartigen Bedingungen effizient angepasst werden Nur 1.000 Bilder und weniger als 1 Stunde auf einer einzelnen GPU .
![]() |
|---|
![]() |
|---|
![]() |
|---|
![]() |
|---|
Klonen Sie dieses Repo:
git clone --depth 1 https://github.com/xyfJASON/ctrlora.git
cd ctrloraErstellen und aktivieren Sie eine neue Conda -Umgebung:
conda create -n ctrlora python=3.10
conda activate ctrloraInstallieren Sie Pytorch und andere Abhängigkeiten:
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 Wir bieten unsere vorbereiteten Modelle hier. Bitte setzen Sie das Base ControlNET ( ctrlora_sd15_basecn700k.ckpt ) in ./ckpts/ctrlora-basecn und die loras in ./ckpts/ctrlora-loras ein. Die Namenskonvention der Loras ist ctrlora_sd15_<basecn>_<condition>.ckpt für Basisbedingungen und ctrlora_sd15_<basecn>_<condition>_<images>_<steps>.ckpt für neuartige Bedingungen.
Sie müssen auch die SD1.5-basierten Modelle herunterladen und in ./ckpts/sd15 einsetzen. Modelle, die in unserer Arbeit verwendet werden:
v1-5-pruned.ckpt ): offiziell / spiegelpython app/gradio_ctrlora.pyBenötigt mindestens 9 GB/21 GB GPU -RAM, um eine Stapel von ein/vier 512x512 -Bildern zu erzeugen.



Basierend auf unserem Base ControlNet können Sie eine Lora für Ihren benutzerdefinierten Zustand mit nur 1.000 Bildern und weniger als 1 Stunde bei einer einzelnen GPU (20 GB) trainieren.
Laden Sie zunächst die stabile Diffusion v1.5 ( v1-5-pruned.ckpt ) in ./ckpts/sd15 und das Base ControlNet ( ctrlora_sd15_basecn700k.ckpt ) in ./ckpts/ctrlora-basecn herunter, wie oben beschrieben.
Zweitens setzen Sie Ihre benutzerdefinierten Daten in ./data/<custom_data_name> mit der folgenden Struktur:
data
└── custom_data_name
├── prompt.json
├── source
│ ├── 0000.jpg
│ ├── 0001.jpg
│ └── ...
└── target
├── 0000.jpg
├── 0001.jpg
└── ...
source enthält Bedingungsbilder wie Canny -Kanten, Segmentierungskarten, Tiefenbilder usw.target enthält Bodenwahrheitsbilder, die den Bedingungenbildern entsprechen.prompt.json sollte dem Format wie {"source": "source/0000.jpg", "target": "target/0000.jpg", "prompt": "The quick brown fox jumps over the lazy dog."} .Drittens führen Sie den folgenden Befehl aus, um die Lora für Ihren benutzerdefinierten Zustand zu trainieren:
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 : Pfad zu den benutzerdefinierten Daten.--name : Name des Experiments. Das Protokollierungsverzeichnis ist ./runs/name . Standard: Aktuelle Zeit.--max_steps : Maximale Anzahl von Trainingsschritten. Standard: 100000 .Extrahieren Sie nach dem Training die Lora -Gewichte mit dem folgenden Befehl:
python scripts/tool_extract_weights.py -t lora --ckpt CHECKPOINT --save_path SAVE_PATH--ckpt : Pfad zum Checkpoint, der durch das obige Training erstellt wurde.--save_path : Pfad zum Speichern der extrahierten Lora-Gewichte. Setzen Sie schließlich die extrahierte Lora in ./ckpts/ctrlora-loras und verwenden Sie sie in der Gradio-Demo.
Weitere Informationen zu Training, Feinabstimmung und Bewertung finden Sie in den Anweisungen hier.
Dieses Projekt basiert auf stabiler Diffusion, ControlNet und Unicontrol. Danke für ihre großartige Arbeit!
Wenn Sie dieses Projekt hilfreich finden, erwägen Sie bitte:
@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 }
}