ソウリンちゃんLoRAの作成記録

title

ファイル

https://huggingface.co/SenY/LoRA/resolve/main/ootomo%20sourin.safetensors

概要

kohya氏らのスクリプトを用いていわゆるマルゼン式で作成したLoRA。タグテキストを用い、classとidentifierや正則化画像は用いていない。
"1_armor"というディレクトリに全身絵
"2_ootomo sourin, hat"というディレクトリに顔のアップ。単純なトリミングで顔をアップしたものでいわゆる生首化はしていない。
画像枚数は全身絵12枚+同じ画像の顔だけトリミングしたもの12枚の計24枚。
全て背景透過(透過処理ではなく元々透過済だったもの)。realcuganで4倍にしている。

実際に用いたコマンド

accelerate launch --num_cpu_threads_per_process 8 /root/sd-scripts/train_network.py--pretrained_model_name_or_path=/stable-diffusion-webui/models/Stable-diffusion/animefull-final-pruned.ckpt--train_data_dir=/storage/datasets/sourin/--output_dir=/storage/Lora_dst/--resolution=1024 --max_bucket_reso=2048--train_batch_size=2--learning_rate=1e-3--max_train_epochs=30--save_every_n_epochs=5--network_dim=128--mixed_precision="fp16"--save_model_as=safetensors --clip_skip=2 --seed=42 --color_aug --network_module=networks.lora --keep_tokens=7 --enable_bucket--color_aug --flip_aug --xformers

左右非対称なデザインではないキャラなのでflip_augが有効。学習時間はA4000で40分くらい。
タグテキストについては参考資料の項を参照。
学習元モデルはNAIfull, トップ絵や生成例の出力モデルはAnything3.0。

生成例

prompt preview descriptions
<lora:ootomo sourin:1>, ootomo sourin, hat, armor, dress, holding weapon フル装備。ガチ勢からはツッコミを受けそうだが(本当は2種類ある衣装を分けずに同じ"armor"で学習させているし)、概ね使えるレベルだろう。実際は"cross"も追加したほうがいい。
<lora:ootomo sourin:1>, ootomo sourin, nude 脱がせてみる。ootomo sourinは頭が青いキャラだと思い込んでいるらしく、"hat"も"blonde hair"も指定していないと青髪にされてしまうようだ。学習データに忠実なようでflat chetとか入れなくても勝手に貧乳になる。
<lora:ootomo sourin:1>, ootomo sourin, hat, nude "hat"を入れてやると一部おかしいもののそれっぽくなる。Anythingだから乳首周りが変なので本来はBloodOrangeMix辺りでやるべきだった。
<lora:ootomo sourin:1>, ootomo sourin, blonde hair, micro bikini ちゃんと着替えてくれている。しかし"2_ootomo sourin, hat"は鎧の肩パッドが入っているのでどうしても時折入りがち。これの回避率を上げるには生首化が有効だろうが、nude, completely nude, bare shoulders辺りのタグを強調でもそれなりには行けるだろうしガチャでもどうにかなる混入率だと思う。blonde hairタグを用いれば帽子無しの青髪回避も問題なくやれそう

参考資料

  • さすがにデータセットのアップロードはアレなのでフォルダ構成とタグテキストのみのファイル
      • ignore.txtは下記のスクリプトで使う為のもの
      • タグテキストは全てdeepdanbooruで自動で付けたものから、上記のスクリプトとzipに同梱のignore.txtを使って除外しただけのもの。
      • 上記のスクリプトは「繰り返し回数を除いたディレクトリ名をtagsと解釈し、除外語のをtagsの先頭に入れる」という仕様になっているので、ディレクトリ名はclassでもidentifierでもなくあくまでtagsの生成用のものとして解されている点に注意。
        • captionが置いてある画像ってclassとidentifierとかはそもそも無視するって解釈で合ってる……?のか……?

反省点

呼び出しワードはarmorやhatじゃなくsraとかsrhとかsourin armorとかsourin hatにしたほうが良かった気がする。

Edit
Pub: 30 Jan 2023 20:01 UTC
Edit: 30 Jan 2023 21:50 UTC
Views: 8025