独自のキャラクター(人型でないキャラクター)をLoRA - C3Lier を利用して学習する - Stable Diffusion

人型でない独自のキャラクターをLoRA - C3Lierを利用して学習して、どのような出力が得られるか確認します。
メモ
人型でないキャラクターを学習するのは難易度が高く、学習が苦手とされています。今回の記事でも実用面では不十分な結果となっています。

事前準備:sd-scriptsのインストール

sd-scriptsをインストールします。手順はこちらの記事を参照してください。

教師データの準備

こちらの記事で作成した教師データを利用します。
36枚の画像とタグのテキストファイルを使用します。

ファイルの配置とtomlファイルの準備

学習データを配置してtomlファイルを作成します。以下のtomlファイルを作成しました。
学習データの配置先は、C:\data\lora-toricchi-c3lier\toricchiです。
tomlファイルは C:\data\lora-toricchi-c3lier\config.toml に配置します。
[general]
enable_bucket = true 

[[datasets]]
resolution = 512
batch_size = 4

[[datasets.subsets]]
image_dir = 'C:\data\lora-toricchi-c3lier\toricchi'
caption_extension = '.txt'
num_repeats = 10

メモ
num_repeats = 10が記述されていますが、今回の例では正則画像がないことと、複数のデータセットではないため、num_repeats = 1 でも結果は変化しないとのこと。(未検証)

sd-scripts起動バッチファイルの作成

sd-scriptsを起動するコマンドを記述したバッチファイルを作成します。 今回は、"FeaturelessMix v2" モデルに対して学習を実行します。 作成したバッチファイルはC:\data\lora-toricchi-c3lier\exec.bat に配置しています。

LoRAとの違いは、--network_args "conv_dim=4" "conv_alpha=1" を追加している点です。
accelerate launch ^
--num_cpu_threads_per_process 1 ^
train_network.py ^
--pretrained_model_name_or_path=C:\Storage\Image-Gen\model\featurelessMix_v20202307.safetensors ^
--dataset_config=C:\data\lora-toricchi-c3lier\config.toml ^
--output_dir=C:\data\lora-toricchi-c3lier\output ^
--output_name=toricchi ^
--save_model_as=safetensors ^
--prior_loss_weight=1.0 ^
--max_train_steps=1600 ^
--learning_rate=1e-4 ^
--optimizer_type=AdamW8bit ^
--xformers ^
--mixed_precision="bf16" ^
--cache_latents ^
--gradient_checkpointing ^
--save_every_n_epochs=1 ^
--persistent_data_loader_workers ^
--network_args "conv_dim=4" "conv_alpha=1" ^
--network_module=networks.lora

学習の実行

仮想環境に切り替えて、exec.batを実行します。
cd C:\Storage\Image-Gen\sd-scripts
.\venv\Scripts\Activation.bat
C:\data\lora-toricchi\exec.bat

結果

Epochごとの結果が以下です。
Epochが上がると、元のキャラクターが忠実に描画されています。
Epoch 3
Epoch 3

Epoch 6
Epoch 6

Epoch 8
Epoch 8

Epoch 12
Epoch 12

Epoch 15
Epoch 15

Epoch 18
Epoch 18

複雑なプロンプトの例

他のキャラクターと合わせて表示するプロンプトでの結果を確認します。
Prompt
1girl, holding duck <lora:toricchi:1>
Negative prompt
worst quality, low quality,

Epoch18だと厳しいですが、Epoch6だと意図した結果が出る場合があります。
Epoch 18
Epoch 18

Epoch 6
Epoch 6


Prompt
1girl, holding toricchi <lora:toricchi:1>
Negative prompt
worst quality, low quality,
"toricchi"の場合はでは意図した結果にほぼなりません。duckのように抱けるものである概念が学習できていないのかもしれません。
Epoch 6
Epoch 6

著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2023-07-16
iPentec all rights reserverd.