

Изображения сжаты для скорости загрузки.
Ctrlora: расширяемая и эффективная структура для управляемого генерации изображений
Yifeng Xu 1,2 , Zhenliang He 1 , Shiguang Shan 1,2 , Xilin Chen 1,2
1 ключевая лаборатория безопасности ИИ, Институт компьютерных технологий, Кас, Китай
2 Университета китайской академии наук, Китай

Сначала мы тренируем базовую контрольную сеть вместе с LORAS, специфичными для состояния, на базовых условиях с крупномасштабным набором данных. Затем наш базовый контрольный сеть может быть эффективно адаптирован к новым условиям новым лорасом с всего лишь 1000 изображений и менее 1 часа на одном графическом процессоре Полем
![]() |
|---|
![]() |
|---|
![]() |
|---|
![]() |
|---|
Клонировать это репо:
git clone --depth 1 https://github.com/xyfJASON/ctrlora.git
cd ctrloraСоздайте и активируйте новую среду Conda:
conda create -n ctrlora python=3.10
conda activate ctrloraУстановите Pytorch и другие зависимости:
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 Мы предоставляем наши предварительные модели здесь. Пожалуйста, поместите базовый ControlNet ( ctrlora_sd15_basecn700k.ckpt ) в ./ckpts/ctrlora-basecn и loras в ./ckpts/ctrlora-loras . Конвенция о именовании лораса - ctrlora_sd15_<basecn>_<condition>.ckpt для базовых условий и ctrlora_sd15_<basecn>_<condition>_<images>_<steps>.ckpt для новых условий.
Вы также должны загрузить модели на основе SD1.5 и поместить их в ./ckpts/sd15 . Модели, используемые в нашей работе:
v1-5-pruned.ckpt ): официальное / зеркалоpython app/gradio_ctrlora.pyТребуется не менее 9 ГБ/21 ГБ ОЗУ графического процессора, чтобы генерировать партию из одного/четыре изображения 512x512.



Основываясь на нашем базовом контроле, вы можете обучить Lora для вашего пользовательского состояния с лишним всего 1000 изображений и менее 1 часа на одном GPU (20 ГБ).
Во-первых, загрузите стабильную диффузию v1.5 ( v1-5-pruned.ckpt ) в ./ckpts/sd15 и базовый контроль ( ctrlora_sd15_basecn700k.ckpt ) в ./ckpts/ctrlora-basecn , как описано выше.
Во -вторых, поместите свои пользовательские данные в ./data/<custom_data_name> со следующей структурой:
data
└── custom_data_name
├── prompt.json
├── source
│ ├── 0000.jpg
│ ├── 0001.jpg
│ └── ...
└── target
├── 0000.jpg
├── 0001.jpg
└── ...
source содержит изображения условий, такие как хитрые края, карты сегментации, глубинные изображения и т. Д.target содержит образы истины заземления, соответствующие изображениям состояния.prompt.json должна следовать формату, например {"source": "source/0000.jpg", "target": "target/0000.jpg", "prompt": "The quick brown fox jumps over the lazy dog."} .В -третьих, запустите следующую команду для обучения LORA для вашего пользовательского условия:
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 : Путь к пользовательским данным.--name : имя эксперимента. Каталог журнала будет ./runs/name . По умолчанию: текущее время.--max_steps : максимальное количество обучающих этапов. По умолчанию: 100000 .После тренировки извлеките вес веса LORA следующей командой:
python scripts/tool_extract_weights.py -t lora --ckpt CHECKPOINT --save_path SAVE_PATH--ckpt : Путь к контрольно-пропускной пункте, созданный приведенным выше тренингом.--save_path : путь к сохранению извлеченных весов Lora. Наконец, поместите извлеченную Lora в ./ckpts/ctrlora-loras и используйте его в демонстрации Gradio.
Пожалуйста, обратитесь к инструкциям здесь для получения более подробной информации о обучении, точной настройке и оценке.
Этот проект построен на стабильной диффузии, ControlNet и Unicontrol. Спасибо за отличную работу!
Если вы найдете этот проект полезным, пожалуйста, рассмотрите возможность ссылаться на:
@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 }
}