見出し画像

SeaArt でLoRAを作る

オンラインでStable DiffusionのLoRAが作れるサイトは複数ありますが、本記事では筆者が愛用しているSeaArtでの作り方、コツ、注意点などを解説していきます。
なお、記事の内容は2024年10月の情報です。
まだSeaArtのアカウントを持っていない場合は、無料で作れるので以下のリンクから作ってみてください。




#1. そもそもLoRAとは

LoRA は、"Low-Rank Adaptation" の略で、大規模なAIモデルを効率的に微調整する技術 のことを指します。画像生成以外の分野のLoRAもあるようですが、以下ではStable Diffusion でのLoRAに限定します。
端的に言えば、Stable Diffusionの"モデル"と呼称されるものには"Checkpoint" と "LoRA"があり、両者とも既存の画像を読み込んで学習する、という点において共通していますが、前者は膨大なデータを取り込んで学習するのに対し、後者は少ないデータで高品質な画像を得られる、という違いがあります。LoRAはCheckpointに対して追加学習を行うことで得られます。

#2. LoRAのイメージ

#1はちょっと難しかったと思うので、LoRAがどんなものなのか、イメージをお伝えします。
LoRA のイメージは簡単に言えば、ベースモデルと教師画像との差分です。ではベースモデルとは何かと言いますと、その名の通りトレーニング時にベースにするモデル(Checkpoint)であり、LoRA を作る際の土台となる部分です。また、教師画像とは求める画像の例です。
そしてこの両者の差分をAIが学習し、出力される差分がLoRA です。厳密には"ベクトルの変換・調整行列"に近い概念ですが、LoRA を作成したり使用する上ではベースモデルと教師画像との差分という理解で全く問題ありません。

こんな感じ

では何故LoRAなんてものが欲しくなるのかと言うと、端的に言えばCheckpointは"見たことがないような画像"を生成できないからです。
どういうことかと云うと、そもそもCheckpointはそれが作られるときに膨大な量の既存の画像を見て学習しています。画像を生成するときは、その学習時に見た画像から要素を取り出し、組み合わせて生成します。しかし、その学習時に見た画像の数が有限である以上、どうしても"見たことのない要素"が発生してしまいます。それを補完するためにLoRAが必要となるのです。

#3. LoRA の作成準備

前置きが長くなってしまいましたが、本題に入りましょう。

Step 1. 作成するLoRA に求めるもの

LoRA を作成する前に、どのようなLoRA が欲しいのかを明確にする必要があります。例えば、「ふわふわした雰囲気の画像を作りたい」とか、「XXというアニメのキャラを再現したい」とか、「ジブリ作品のような風景を生成したい」とかです。
意外とこのステップは大切で、これが明確でないと「なんかこれじゃないんだよなぁ〜」なんて事になります。
今回は例示として、幻想的な風景の壁紙を作れるようなLoRAを目指します。

こんなやつ


Step 2. 教師画像を用意する

LoRAに何を求めるかが決まったら、教師画像を用意しましょう。今回は似た系統の画像をPinterestで拾ってきました。
教師画像の枚数は、多ければ多い方が良いのですが、それほど深刻になる必要はありません。少なくてもなんとかなります。少な過ぎるのは良くないですが、15枚以上あれば良いでしょう。今回は15枚でやってみることにします。
一部の他のサイトでは、背景を透過させないとダメなどと書いてありますが、そんなことはありません。めんどくさいし。また、事前に切り抜く必要もありません。SeaArtで出来ます。

#4. LoRA作成

ようやく作成に入りましょう。と言っても、そんなに難しくないので大丈夫です。今回はSD1.5用の LoRAに限定して説明します。

Step 1. 教師画像のアップロード

まずは、用意した教師画像をSeaArtにアップロードしましょう。
SeaArtの「トレーニング」をクリックし、「データセットを作成」を選択します。一応リンクを貼っておきます。

水色の「画像アップロード」を選択し、教師画像をアップロードしてください。ここまでは全然難しくないと思います。

Step 2. 切り抜きとタグ付け

教師画像をアップロードできたら、切り抜きとタグ付けをしましょう。タグ付けとは何かと言いますと、簡単に言えばその教師画像の要素を言語化したものです。例えば、「landscape」「wallpaper」「anime girl」「sunset」などのようなものです。要するに、その教師画像を生成するときに出すであろうプロンプトです。
ただ、これを1枚1枚やっていくと途方もない作業なのでAIにやらせましょう。アップロードした画像の下の方に「タグ付け閾値」とか「トリガーワード」とか見慣れない文字が並んでいると思います。ここを設定します。設定する項目は以下の5つです。

  • 切り抜き方式

  • 切り抜きサイズ

  • タグ付けアルゴリズム

  • タグ付け閾値

  • トリガーワード

初心者の方はそろそろアレルギー反応が出る頃でしょうが、大丈夫、一つずつ解説していきます。
切り抜き方式には、フォーカス切り抜き、センター切り抜き、切り抜き不要の3つがあります。どれも名前の通りの切り抜き方式の種類ですが、おすすめはフォーカス切り抜きです。画像を自動でいい感じに切り抜いてくれます。事前に背景処理とサイズ処理をした場合は、切り抜き不要で良いです。
切り抜きサイズは、512x512か512x768か768x512の3通りがあるのですが、教師画像のアスペクト比に合わせでください。ただ、これも深刻に考える必要は無くて、正方形の教師画像なら512x512,縦長または横長なら512x768または768x512にすれば良いです。注意としては、切り抜きサイズは一括指定なので自分の教師画像の全体を見て決める必要があります。
タグ付けアルゴリズムはデフォルトのDeepbooruにしましょう。これは下手に変えるとLoRAが機能しにくくなるので弄らなくて良いです。というのも、他のアルゴリズムを使うとタグの区切り方が変わってしまい、生成時のプロンプトに反応しにくくなるのです。
タグ付け閾値は、デフォルトでは0.3ですが0.6を推奨します。本来はもう少し低めに設定し、あとでタグを編集するのですが、今回はタグの編集を省くためにこの値にします。LoRAに慣れてきたらタグの編集をやってみましょう。
最後にトリガーワード。これはLoRAが効果を発揮するための、文字通り「引き金」となる単語です。設定しなくても良いですが、一応設定することを推奨します。どんな単語でも設定できますが、"wallpaper"などの一般的な単語では他のプロンプトに埋れてしまい、トリガーワードの意味をなさないのでなるべく一般的でない単語にしましょう。ちなみに筆者は「arcadia」にしました。

以上の5つを設定したら、右下の水色のボタンを押して切り抜き・タグ付けを開始します。少しだけ時間がかかるはずです。

こんな画面になっていれば大丈夫


Step 3. パラメーター設定

もうそろそろ辛くなってきたでしょうが、あと少し。画面左側のパラメーターを設定します。難しそうに聞こえますが、そんなに身構えなくて大丈夫です。
まず、左上のテンプレートを選択します。選ぶテンプレートは、目的のLoRAがどんなものであるかに関わらず、「カスタマイズ」を選択してください。
次に、真ん中辺りにある基本モデルを設定します。これは、求めるLoRAによって変える必要があり、目的のLoRAがアニメ系なら"AnyLoRA"一択です。実写系なら"DreamShaper"または"ChilloutMix"を推奨します。ただ、実写系は普段自分が気に入って使っているモデルでも構いません。

次に繰り返し数エポック数を設定しましょう。難しそうに見えますが、ここも意外と単純で複雑に考える必要はありません。
まずエポック数は20で固定です。
次に繰り返し数ですが、ここは少しだけ計算が必要です。大体でいいですが、(教師画像数) x (エポック数) x (繰り返し数)が1500〜3000くらいを目安に、繰り返し数を調整しましょう。今回筆者は教師画像数15,エポック数20,繰り返し数10の1500ステップで挑戦しました。

Step.4 トレーニング開始

さて、以上を設定出来たらトレーニング開始です。右上にある水色の「今すぐトレーニング」のボタンを押してみましょう。

こんな画面になればOK

ここには多少時間がかかるのでコーヒーでも飲んで待っておきましょう。
しばらく経つと、20個のプレビューが出てきます。基本的には20個目を選択し、水色の投稿ボタンを押せばOKです。ただ、20個目のプレビューが気に入らなかった場合は最後の方から気に入ったものを選んでも構いません。その辺は柔軟に対応してください。
細かいことを言うと本来はログビューからLossを見て選ぶ方が良いので、トレーニングに慣れてきたらそちらも見てみてください。
今回筆者は脳死で20個目を選びました。

今回は16エポック目以降完全に収束しているので、どれを選んでも良いです。

投稿できたら、実際に使ってみて効果を確かめましょう。使用するCheckpointはトレーニングに使ったベースモデルと一致させる必要はありません。好きなCheckpointで構いません。稀に相性が悪いモデルがあるので、複数のCheckpointで試すことを推奨します。

こんな感じになった。成功。


#5. まとめ

以上、SD1.5でのLoRAトレーニングについて解説しました。今回の例示で作成したLoRAは公開しておきます。同スタイルでのトレーニングを許可しておいたので、データセットを参考にしたい場合は見てみてください。

また、ご質問・ご不明点がありましたらコメントを残していただくか、上記のSeaArt上のLoRAにコメントして頂けると助かります。

この記事が気に入ったらサポートをしてみませんか?