LoRAとは
AIお絵描きをしていると、中々思うような結果が出ないことのほうが多いんです
そういう時に利用するのが LoRA ってやつみたいです
LoRAっても西城秀樹の「傷だらけのローラ」じゃないですよ
フランス語版だと「LOLA」みたいなんで…
LoRA (Low-Rank Adaptation) を使うと既存のモデルに追加学習させることができて思うような絵を描いてくれる確率が上がる…みたいに思えばいいのかな?
詳しくは以下のサイトでお勉強して下さいね
AI を自分好みに調整できる、追加学習まとめ ( その5: LoRA)|teftef
LoRAを使った学習のやり方まとめ!好きな絵柄・キャラクターのイラストを生成しよう【Stable Diffusion】 | くろくまそふと
その LoRA を自作できるみたいなので実験してみました
Kohya LoRA Dreambooth
GitHub に置かれている Kohya S. さんの Kohya LoRA Dreambooth ってやつを使わせてもらいました
こちらに行くと、Kohya さんの作成してくださっているプログラムがあります
この場所から「Kohya LoRA Dreambooth (v15.01)」の 「link」をクリックすると「kohya-LoRA-dreambooth.ipynb」が開くので、いちおうコピーを保存して操作しました
用意したもの
縦横 520px の男子画像8枚をzip書庫にしたもの
Kohya S.さんの以下のページを読むと正方形でなくてもいいのかも…
DiffusersベースでStable Diffusionをfine tuningする
操作してみた
操作方法はこちらの動画を参考にさせていただきました
Shinano Matsumoto・晴れ時々ガジェット
【最新】Loraモデル学習をGoogle Colabで作る方法解説。Kohya LoRA Dreambooth v15.0.0使用。【Stable Diffusion】
以下、変更や実行箇所の覚え書き
- Install Kohya Trainer
- Install Dependencies
●mount_drive: にチェックを入れてセルを実行
※Googleドライブを利用できるようにする - Start File Explorer
このセルは実行しない
- Install Dependencies
- Pretrained Model Selection
- Download Available Model
今回は Stable Diffusion のバージョン1.x 系を使うので「SD1.x model」の「model_name:」ドロップダウンリストから「Stable-Diffusion-v1-5」を選択してセルを実行
※デフォルトは「AnyLoRA」
アニメは「AnyLoRA」、写真系は「Stable-Diffusion-v1-5」がいいそうだ
※「SD2.x model」は使わないので「v2_model_name:」は空白にしておく - Download Custom Model
このセルは実行しない
※カスタムモデルを利用する場合はURLを入力する - Download Available VAE (Optional)
このセルは実行しない
※VAEをを利用する場合はドロップダウンリストから選択する
- Download Available Model
- Data Acquisition
- ocating Train Data Directory
デフォルトのままセルを実行 - Unzip Dataset
●zipfile_url:Googleドライブにアップしたzipファイルのパスを入力
ex.) /content/drive/MyDrive/a.zip
●「unzip_to:」は空白にしておく
セルを実行 - Image Scraper (Optional)
このセルは実行しない
- ocating Train Data Directory
- Data Preprocessing
- Data Cleaning
「convert:」のみにチェックを入れてセルを実行
※アップしたデータに余計なものがある場合削除してくれる - Data Annotation
- BLIP Captioning
このセルは実行しない - Waifu Diffusion 1.4 Tagger V2
●「general_threshold」のスライダーを「0.85」にしてセルを実行
「general_threshold」 ← デフォルトは0.35
「character_threshold」 ← デフォルトは0.35
※この数値は色々試行錯誤するといいのだそうだAdjust general_threshold for pruning tags (less tags, less flexible).
character_threshold is useful if you want to train with character tags, e.g. hakurei reimu.
訳:
タグをプルーニングするためにgeneral_thresholdを調整します(タグが少なくなり、柔軟性が低下します)。
Character_threshold は、文字タグを使用してトレーニングしたい場合に便利です。 - Custom Caption/Tag
このセルは実行しない
- BLIP Captioning
- Data Cleaning
- Training Model
- Model Config
●「project_name」に作成したいLoRAファイル名を入力
●「pretrained_model_name_or_path」に事前トレーニングされたモデルのパスとファイル名を入力
/content/pretrained_model/Stable-Diffusion-v1-5.safetensors を入力した
●「output_to_drive」にチェックを入れる
セルを実行 - Dataset Config
●「dataset_repeats」に 1を入力した
※デフォルトは10
●「activation_word」に「1boy」と入力した
実際には機能しないが、タグ付けされるので文字列を入力
ひとつ目はモデル名、2つ目に大きなジャンル名を入れるそうだ
例:dog,1boy
セルを実行 - LoRA and Optimizer Config
●「lr_scheduler」のドロップダウンから「linear」を選択
※デフォルトは「constant」
セルを実行
※「min_snr_gamma」を変更してもいいかも、との事 - Training Config
●「lowram」のチェックを外す ← ※デフォルトはチェックあり
●「enable_sample_prompt」のチェックを外す ← ※デフォルトはチェックあり
●「num_epochs」に「150」を入力 ← ※デフォルトは「10」
●「save_n_epochs_type_value」に「10」を入力 ← ※デフォルトは「1」
セルを実行 - Start Training
なにも変更せずにセルを実行
- Model Config
- Testing
この中にあるセルは実行しない - Deployment
この中にあるセルは実行しない
完了すると
数分待つと「Google ドライブ」 → 「LoRA」 → 「output」内に学習ファイルが保存される
※数字のないファイルが最終的に学習されたファイルで、それ以外は学習途中のファイル
数字のないファイルを「LoRA」として利用できる
知ってる人なら知っている、僕の近くにいる少年をモデルにしてみました
使い方全然知らずに利用させていただいたんですけど、いい感じかも…
また、いろんなパラメーターなど試してみようと思います
制作してくださった Kohya S. さんに感謝です!!
コメント