

画像は荷重速度のために圧縮されます。
Ctrlora:制御可能な画像生成のための拡張可能で効率的なフレームワーク
Yifeng Xu 1,2 、Zhenliang He 1 、Shiguang Shan 1,2 、Xilin Chen 1,2
1 AI安全性の重要なラボ、コンピューティングテクノロジー研究所、CAS、中国
2中国科学大学、中国

最初に、大規模なデータセットを使用して、ベース条件で条件固有のLORAとともにベースコントロールネットをトレーニングします。次に、私たちのベースコントロールネットは、新しいLORASによって新しい条件に効率的に適合させることができます1つのGPUで1,000個の画像と1時間未満。
![]() |
|---|
![]() |
|---|
![]() |
|---|
![]() |
|---|
このレポをクローンします:
git clone --depth 1 https://github.com/xyfJASON/ctrlora.git
cd ctrlora新しいコンドラ環境を作成してアクティブ化します。
conda create -n ctrlora python=3.10
conda activate ctrloraPytorchおよびその他の依存関係をインストールします。
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ここでは、事前に守られたモデルを提供しています。ベースコントロールネット( ctrlora_sd15_basecn700k.ckpt )を./ckpts/ctrlora-basecnに、 lorasを./ckpts/ctrlora-lorasに入れてください。 LORASの命名規則は、 ctrlora_sd15_<basecn>_<condition>.ckpt base条件の場合はctrlora_sd15_<basecn>_<condition>_<images>_<steps>.ckpt 。
また、 SD1.5ベースのモデルをダウンロードして、 ./ckpts/sd15 ckpts/sd15に配置する必要があります。私たちの仕事で使用されているモデル:
v1-5-pruned.ckpt ):公式 /ミラーpython app/gradio_ctrlora.py1/4の512x512画像のバッチを生成するには、少なくとも9GB/21GB GPU RAMが必要です。



ベースコントロールネットに基づいて、1つのGPU(20GB)でわずか1,000画像、1時間未満のカスタム条件のためにLORAをトレーニングできます。
まず、安定した拡散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."}のような形式に従う必要があります。第三に、次のコマンドを実行して、カスタム条件のためにロラをトレーニングします。
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 :抽出されたロラ重量を保存するパス。最後に、抽出されたロラを./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 }
}