Kohya LoRA Dreambooth ~LoRA を作る~

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 S. さんのツイッター

Kohya S. さんの note

こちらに行くと、Kohya さんの作成してくださっているプログラムがあります

Kohya LoRA Dreambooth

この場所から「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】

以下、変更や実行箇所の覚え書き

  1. Install Kohya Trainer
    1. Install Dependencies
      ●mount_drive: にチェックを入れてセルを実行
      ※Googleドライブを利用できるようにする
    2. Start File Explorer
      このセルは実行しない
  2. Pretrained Model Selection
    1. 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:」は空白にしておく
    2. Download Custom Model
      このセルは実行しない
      ※カスタムモデルを利用する場合はURLを入力する
    3. Download Available VAE (Optional)
      このセルは実行しない
      ※VAEをを利用する場合はドロップダウンリストから選択する
  3. Data Acquisition
    1. ocating Train Data Directory
      デフォルトのままセルを実行
    2. Unzip Dataset
      ●zipfile_url:Googleドライブにアップしたzipファイルのパスを入力
      ex.)  /content/drive/MyDrive/a.zip 
      ●「unzip_to:」は空白にしておく
      セルを実行
    3. Image Scraper (Optional)
      このセルは実行しない
  4. Data Preprocessing
    1. Data Cleaning
      「convert:」のみにチェックを入れてセルを実行
      ※アップしたデータに余計なものがある場合削除してくれる
    2. Data Annotation
      1. BLIP Captioning
        このセルは実行しない
      2. 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 は、文字タグを使用してトレーニングしたい場合に便利です。

      3. Custom Caption/Tag
        このセルは実行しない
  5. Training Model
    1. Model Config
      ●「project_name」に作成したいLoRAファイル名を入力
      ●「pretrained_model_name_or_path」に事前トレーニングされたモデルのパスとファイル名を入力
       /content/pretrained_model/Stable-Diffusion-v1-5.safetensors  を入力した
      ●「output_to_drive」にチェックを入れる
      セルを実行
    2. Dataset Config
      ●「dataset_repeats」に 1を入力した
      ※デフォルトは10
      ●「activation_word」に「1boy」と入力した
      実際には機能しないが、タグ付けされるので文字列を入力
      ひとつ目はモデル名、2つ目に大きなジャンル名を入れるそうだ
      例:dog,1boy
      セルを実行
    3. LoRA and Optimizer Config
      ●「lr_scheduler」のドロップダウンから「linear」を選択
      ※デフォルトは「constant」
      セルを実行
      ※「min_snr_gamma」を変更してもいいかも、との事
    4. Training Config
      ●「lowram」のチェックを外す ← ※デフォルトはチェックあり
      ●「enable_sample_prompt」のチェックを外す ← ※デフォルトはチェックあり
      ●「num_epochs」に「150」を入力 ← ※デフォルトは「10」
      ●「save_n_epochs_type_value」に「10」を入力 ← ※デフォルトは「1」
      セルを実行
    5. Start Training
      なにも変更せずにセルを実行
  6. Testing
    この中にあるセルは実行しない
  7. Deployment
    この中にあるセルは実行しない

完了すると

数分待つと「Google ドライブ」 → 「LoRA」 → 「output」内に学習ファイルが保存される
※数字のないファイルが最終的に学習されたファイルで、それ以外は学習途中のファイル

数字のないファイルを「LoRA」として利用できる

HighBridge HighBridge HighBridge

知ってる人なら知っている、僕の近くにいる少年をモデルにしてみました

使い方全然知らずに利用させていただいたんですけど、いい感じかも…

また、いろんなパラメーターなど試してみようと思います

制作してくださった Kohya S. さんに感謝です!!

コメント