人型でない独自のキャラクターをLoRA - C3Lierを利用して学習して、どのような出力が得られるか確認します。
sd-scriptsをインストールします。手順はこちらの記事を参照してください。
こちらの記事で作成した教師データを利用します。
36枚の画像とタグのテキストファイルを使用します。
学習データを配置して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を起動するコマンドを記述したバッチファイルを作成します。
今回は、"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が上がると、元のキャラクターが忠実に描画されています。
他のキャラクターと合わせて表示するプロンプトでの結果を確認します。
Epoch18だと厳しいですが、Epoch6だと意図した結果が出る場合があります。
"toricchi"の場合はでは意図した結果にほぼなりません。duckのように抱けるものである概念が学習できていないのかもしれません。