見出し画像

あなたの知らないAIコスプレイヤーの世界(Stable Diffusion解説)


はじめに

最近AIイラストを生成する「Stable Diffusion」に嵌っていて、ほぼ毎日画像生成し続け約1ヶ月ほど経ちました。

画像生成系AIは数多く存在しておりそれぞれ特徴があるのですが、「Stable Diffusion」の何が凄いのかというと、それは偏に追加学習モデルである「LoRA(Low-Rank Adaptation)」の存在にあります。

多くの画像生成系AIは「スタイル」という形でどのような画像にしたいかイメージを指定することが出来ますが、Stable Diffusionではそれをより明示的にLoRAを使って指定させることが出来ます。

ここではLoRAがどのような役割を担っているのか、それをどう使えば画像が生成できるのかについて実体験を交えながら説明して行きたいと思います。

なお、私はGoogle Colabを使用して画像を生成していますが、Colab上での環境構築方法は日進月歩で変わってしまうためここでの解説は省きますので、興味がある方は他の方の記事を参考に構築してみてください。

Stable Diffusionのモデルを配布するサイト

この記事を見ている方は少なくとも画像生成系AIに興味があり、中には自分でもやってみたいと思っている方も居るのでは無いかと思いますが、Stable Diffusionで画像を生成する際に必ずと言って良いほど必要になるのがモデル配布サイトになります。

CivitaiはStable Diffusionのモデルを配布する代表的なサイトになっていて、私が使っているLoRAも全てここで配布されているものを使っています。

基本的に英語で検索することになるのである程度の英語力(例えば特定キャラクターの英語名称を調べておくなど)が必要になりますが、触れば何とかなるレベルだと思います。

CheckpointとLoRAの関係性

最低限覚えておく用語として「Checkpoint」「LoRA」があるのですが、語弊を恐れず言うとStable Diffusionでは画像のスタイル(2次元風、3次元風など)を示すモデルをCheckpointと呼び、そのスタイルに対して更に明示的な方向性を示すモデルをLoRAと呼びます。

この例えを出してどれぐらいの方に伝わるか分かりませんが、マインクラフトで例えるとCheckpointはマインクラフトというゲームそのもの、LoRAはマインクラフトでいうところのMODと同じ役割になります。

Stable Diffusionの面白いところはこのMODに当たる追加学習モデルを複数適用させることができ、様々な組み合わせで画像を生成することができます。

CheckpointとLoRAの関係性

ただLoRAを適用させるだけではダメ

特にLoRAを何も指定しない場合はCheckpointが学習した内容が出力画像に出てくるのですが、LoRAを使うことで自分が思っている画像のイメージに近づけることができます。

しかし、単にLoRAを適用すれば思い通りの画像が出力されるかというとそうでは無く、大事なのはLoRAの適用度合いになります。

Stable DiffusionではLoRAの適用度合いを段階的に変化させることが出来るのですが、適用度を上げ過ぎると画像が破綻したりプロンプト(どのような画像を生成するかを示す言葉)が効かなくなったりします。

そして適用度が低すぎると思った衣装や顔に成らなくなるため、適用度を調整しながら自身のイメージに近づけていく必要があります。

ここがStable Diffusionの難しいところですが、LoRAは学習した画像がそれぞれバラバラであるため、この適用度合いもLoRAによって千差万別という事になります。

なので一概にこの値が最適、ということは無く、使う材料によって手を変え品を変え調整していく事になります。

LoRAの適用度は低めにして衣装をプロンプトで制御する

Civitaiのサイトをよく見るとダウンロードリンクの下に「Trigger Words」という項目があるのですが、実はプロンプトに特定のキーワードが入っているとその部分の画像がLoRAで学習したものに置き換わるという特性があります。

トリガーワードの例

例えば上記の例だと「WHITE_DRESS」というものがありますが、単に白いドレスと言っても様々なものがある中で、LoRAを適用させていれば少なからずLoRAで学習した画像に近いものが生成される、ということになります。

なお、このトリガーワードが明示的に書いてあるものはLoRAの作者が意図的に考慮して作ってくれているのですが、書いていないものは自身が生成したいキャラクターの衣装(例えばネクタイを付けているキャラであれば「necktie」など)を明示的にプロンプトに書けばLoRAが学習した画像に近いものが生成される事になります。

さいごに

今回はLoRAの使い方について解説してみましたが、高精細な画像を作ろうと思うと他にも様々なパラメータの調整が必要となります。

私が一番効果があると思っているパラメータは画像の拡大率で、512x512の画像を2.5倍するぐらいがちょうど良いように思っています。

ただ、このサイズの画像を生成するには相当マシンスペックが必要であるため、高価なグラボを持っていない私のような人はGoogle Colabなどクラウドサービスを使うことになると思います。

誰でも簡単に作れます!という程簡単では無いので今のところ本当に興味とやる気がある人しか出来ない状況ではありますが、逆に興味とやる気があれば中高生でも出来る内容だと思います。

※ただ、本当に中高生がやってしまうと不適切な画像がたくさん生成されそうですけどね…😅

ではでは。


よければ❤️、シェア⤴️、サポートお願いします❗🥰