LoRAデータセットの作り方。ブルマのLoRAを作る。

LoRAは自分の好みの画像を学習させて、Stable Diffusionで似たような画像を生成できるようにするテクニックです。人物、服装、背景など様々な概念を学習させることができます。学習もStable Diffusionのネットワークの一部を学習させるだけなので、少ない計算時間とリソースで済むので、趣味でもお手軽に作成することができます。基本的な作り方については次の記事を参考にしてください。

LoRAの基本的な作り方

LoRAのデータセットを作る

そんなLoRAですが、データセットの作り方については、あまりノウハウが公開されておらず、LoRAを作ってみても上手く行かないといったことがよくあります。LoRAのデータセットの作り方を複雑にしている要因としては次のような要素があります。

  • キャプションの付け方が色々あって迷う
  • 画像データは何枚ぐらい必要?
  • 画像の画質はどのくらいこだわるべき?
  • 正則化画像はどうすれば良い?

こういった多様な要因があるものの、まだこうすれば良いといった答えがないというのも現状です。そのため、今回は、ブルマのLoRA作成を通して、なんとなくの勘所を掴んでもらえるように記事を書いてみました。

ブルマの画像を集める

ブルマの画像を集めます。集めるといってもなんでも良くはなく、高い解像度のほうが良い品質の画像が生成されるので高い解像度をなるべく集めていきましょう。ここで解像度の目安ですが最低でも500✕500以上で、ボケがない画像を探しましょう。解像度が高くても、ボケてたり、小さい画像を拡大したような画像は弾きます。

次に枚数ですが、10枚でも上手くいくケースはあるようですが、顔が同じ画像が生成されたり、構図やポーズによっては機能しないといった問題にあたる可能性が高いので、少なくとも20枚は欲しいところです。

こういった条件だけでも結構、画像集めは難しく、ブルマ画像って意外とありそうでないので、集めるのに苦労しましたが25枚集まりました。2次元画像であればdanbooruで簡単に集まりますが、実写画像となると意外と苦労することが多いです。コツとしては、探しているテーマで高品質な画像がまとまっているサイトで芋づる式に集めるのが効率が良い気がしています。

本記事では25枚の画像を収集しました。

キャプションをつける

自動でタグをつける

0から手動でタグ付けをしていくと、漏れが多くなるので、まずは自動タグ付けツールでAIが認識する対象物についてはタグをつけていきます。自動タグ付けですが、Stable Diffusion Web UIの拡張機能があるのでそれを使いましょう。

方針1: ブルマに関するキーワードを外して”buruma”を上書きする

以下は上書きされたくなく、ブルマに近しいキーワードを取り除きます。

short sleeves,gym uniform,white shirt,shirt

以下は上書きしても良いキーワードなので残します。

blue buruma,buruma

方針2: ブルマに関するキーワードを外して”brm”を追加

以下を削除

short sleeves,gym uniform,white shirt,shirt,blue buruma,buruma

以下を追加。色は適切なものを選択して追加

  • brm
  • blue buruma→blue brm
  • black buruma →black brm

ファイルの調整

現状、以下のようなフォルダ構成になっていると思いますがこれを調整します。

./buruma
├── 25aa7b47a49.jpg
├── 25aa7b47a49.txt
...
├── zfea5bn.jpg
└── zfea5bn.txt

以下のようにフォルダ構成を調整します。regは空で作成してください。

./buruma
├── img
│   ├── 25aa7b47a49.jpg
│   ├── 25aa7b47a49.txt
...
│   ├── zfea5bn.jpg
│   └── zfea5bn.txt
└── reg

結果の確認とデータセットの調整、再学習

方針1: ブルマに関するキーワードを外して”buruma”を上書きする

Prompt:
1girl, solo, realistic, socks, brown hair, long hair, buruma, blue buruma,<lora:buruma:1>,standing

Negative Prompt:
EasyNegative,(worst_quality:2.0) low quality, blur ,deformed ugly,pixelated,child,

結果について気になった点は次の通りです。

  • ブルマの特徴はとらえられています
  • 立ち姿が変なので”standing”が上書きされてしまっている
  • 顔が似た感じになっている

いろんなキーワードが上書きされてしまっている気がしたので、正則化画像を導入します。正則化画像のデメリットは新しく学習される概念の特徴が薄くなってしまいますが、今回は特徴自体はよくとらえているので、正則化画像を導入します。

正則化画像を導入していきますが、準備するのが面倒なのでStable Diffusionで画像を生成してそれを使いました。呪文(プロンプト)ですが、学習データの呪文(プロンプト)からburumaやblue burumaなどのトリガーワードを取り除いた呪文(プロンプト)を使ってみました。正則化画像は全部で15枚用意しました。

ブルマの特徴が薄れてしまいました。また顔もAIで生成したものを使ったためか、崩れている気がしたのでやっぱり、正則化画像は収集したものを使うほうが良さそうです。これらを踏まえて先ほどよりも少ない正則化画像10枚程度で、試してみます。

ポーズについては以前になりましたね。顔も多様になったので正則化画像の調整はこれで完了です。

方針2: ブルマに関するキーワードを外して”brm”を追加

burumaを上書きせずに、brmという新しいキーワードをトリガーとするようにします。正則化画像は0枚で検証。

Prompt:
1girl, solo, realistic, socks, brown hair, long hair, buruma, blue buruma,<lora:buruma:1>,standing

Negative Prompt:
EasyNegative,(worst_quality:2.0) low quality, blur ,deformed ugly,pixelated,child,

先ほどと比較すると、顔画像に多様性があり、ポーズも自然なのでこれで良いと思いました。

今度はブルマ感が少し薄れてしまいました。顔も少し崩れているので、正則化画像が悪さをしている気もしてきました。方針2のほうでは、正則化画像を使わない場合が品質が高いという結果になりました。

まとめ

今回の結果をまとめると次のようになります。

  • コンセプトは既存のものを上書きするよりも新しく作ったほうが今回の場合は良かった。
  • 正則化画像は多すぎるとコンセプトが薄まるので、必要に応じていれるのが良さそう。
  • 正則化画像も高い品質が求められる。中途半端な選び方をしてしまうとむしろ悪影響。

コメント