「Stable Diffusionのスクリプトって何?」「設定方法は難しいの?」「他のスクリプトと何が違うの?」 そう思う方もいるのではないでしょうか。
Diffusion Web UIのtxt2imgやimg2imgには、多機能な3種類のスクリプトが搭載されています。これらは、プロンプト設定や各パラメータの最適化に貢献します。 また、これ以外にもカスタムスクリプトを用いて機能を付与することも可能です。
今回PROMPTYでは、Stable Diffusionのスクリプトの基本的な概要、設定方法、そして他のスクリプトとの違いについて詳しく解説していきます。
Stable Diffusion webUIとは?
2022年8月に登場したStable Diffusion webUIは、無料で利用できるAIによる画像作成プラットフォームで、ブラウザベースのユーザーインターフェースを備えています。
このツールはローカルサーバーを設定することでPC上で動作し、オフライン環境でも画像を作成可能です。さらに、任意のデバイスのブラウザを通じて操作ができるため、非常に便利です。
自由自在に画像生成ができるStable DiffusionのUIである「Stable Diffusion web ui」の始め方からそれぞれの機能やパラメータなど、より精度の高い画像生成を行うための使い方をご紹介します。 Stabl[…]
txt2txtで使用できる3つのスクリプトを紹介
①プロンプトマトリックス(Prompt matrix)
「プロンプトマトリックス」は、画像生成を行う際に、プロンプトによる画像の変化を比較したい際の使用に適しています。
このツールを使うと、通常はカンマ(,)で分けられるキーワードをパイプライン記号(|)で区切ることが可能になり、それによって多様な組み合わせでの画像生成が行えます。
WebUIの右下の「Script」プルダウンの中から「Prompt matrix」を選択することで使用できます。
プロンプトを以下のように入力してみます。検証にはBasilMixを使用します。
1boy, masterpiece, best quality,|sea|ocean|
すると、以下の4パターンで画像が生成されます。
1boy,masterpiece, best quality,
1boy, masterpiece, best quality,sea
1boy, masterpiece, best quality,ocean
1boy, masterpiece, best quality,sea,ocean
生成された画像は以下のように比較の形と1枚絵の形で生成されます。
シード値は通常固定設定ですが、下記画像の「Use different seed for each picture」にチェックを入れることで、各画像ごとに異なる値を設定することが可能です。
プロンプトマトリックスを活用すると、バッチの設定は考慮されないようになっているようです。
②ファイルまたはテキストボックスからプロンプトを入力(Prompts from file of textbox)
Automatic1111のWebUIには、「ファイルまたはテキストボックスからプロンプトを入力」機能があり、これを使うことにより、テキストファイルやUI内のテキストエリアから一度に多数のプロンプトを起動できます。
通常の手順では、各プロンプト(例:「1girl, short hair」,「1girl, long hair」,「1girl, asymmetric bob」)を一つずつGenerateボタンで処理する必要があります。
しかし、「Prompts from file or textbox」機能を使えば、事前に複数のプロンプトをリストアップしたスクリプトを用意するだけで、一回の実行で全てを処理できる利点があります。
まず、WebUIの右下の「Script」プルダウンの中から「Prompts from file or textbox」を選択します。
「List of prompt inputs」と表示される入力欄には、試してみたいのプロンプトを記入します。
改行せずに長いプロンプトを続けて書いても大丈夫です。もし改行を入れると、それが新しいプロンプトとみなされてしまいます。
「生成」ボタンをクリックすると、上で入力したプロンプトの画像が生成されます。
「プロンプトマトリックス」機能とは異なり、画像が1枚絵の形で生成されることはないので注意が必要です。
プロンプトを複数作成する作業が煩わしい場合、ChatGPTを活用しましょう。
例えば、様々な表情の画像を生成したい場合、以下のようにChatGPTにプロンプトを入力する事で、Stable Diffusionのプロンプトを複数作成することが出来ます。
下記はとあるプログラムの決まったフォーマットです。
–prompt “a girl, FACE”
FACEのところに、表情に関する英語の名詞が入ります。表情の英単語をたくさん入れたものを生成してください。
すると、以下のようになります。
以上のように、表情に関するプロンプトを大量に生成することが出来ました。
③X/Y/Zプロット(X/Y/Z plot)
「X/Y/Zプロット」を活用することで、複数の設定条件下での画像生成の違いを瞬時に把握することが可能です。
この機能は、X/Y/Zといった3つの要素を用いて、画像生成の結果を整理し、一覧表として表示してくれます。
比較できる項目は、サンプラーやシード値など多岐にわたります。今回はX軸をシード値、Y軸をサンプラーに設定し、各種数値は以下のようにしました。
プロンプトは以下の通りです。
プロンプト:
a girl, best quality, high quality
ネガティブプロンプト:
a girl, best quality, high quality
生成された画像は以下のようになりました。
img2imgで使用できるスクリプトを2つ紹介
ここでは、img2imgで使用できる便利なスクリプトを紹介します。また、上で紹介したPrompts matrixとX/Y/Zプロットはimg2imgでも同様に使用する事が出来ます。
①アウトペインティング
アウトペインティングは、既存の画像に対してテキスト説明を用いて画像を拡張する手法です。この技術は、OpenAIによって開発された「DALL・E2」にも組み込まれています。
今回は以下の画像を使用します。
まず、AUTOMATIC1111版Stable Diffusion web UIを起動し、「img2img」のタブをクリックします。
Stable Diffusionで作った画像を使う場合、プロンプト・Sampling Steps・Sampling method・CFG Scale・Seedを生成時と同じ条件に設定すると成功率が高くなります。
設定欄の一番下にある「Script」のプルダウンで「Poor man’s outpainting」を選択し、設定したら「Generate」をクリックします。
生成された画像は以下のようになりました。
画像で新たに生成された部分はくすんでおり、また、頭皮の上の方が欠けてしまっているなど、この機能はまだ精度が高くないようです。
③img2img alternative test
img2imgを使用すると、追加の画像データを提供することで、Stable Diffusionの画像生成プロセス中のノイズを効果的にコントロールし、出力される画像の安定性を向上させることが可能です。
しかし、ノイズの度合いによっては、元の画像とは異なる結果が得られることがあるため、より原画に近い出力を目指す方法として「img2img alternative test」がRedditのオンラインフォーラムで紹介され、多くのユーザーがその手法を取り入れています。
使用方法は以下の通りです。
「Scripts」プルダウンより「img2img alternative test」を選び、画像をimg2imgにアップロードします。
「Script」メニューから該当のオプションをクリックします。その後、「Original Prompt」フィールドに、画像生成に使用したプロンプトを記入しましょう。
今回は、元の画像に以下のプロンプトを追加します。
blue eyes
使用した画像は以下のものになります。
以下の画像が生成されました。
画像に若干ノイズが入ってしまっていますが、元画像の雰囲気を損なわずに画像を生成することが出来ました。
Stable Diffusionで使用できるカスタムスクリプトを3つ紹介
①test my Prompt!
「Test my Prompt!」は入力したプロンプトが画像に反映されているか確認することが出来るスクリプトです。通常の生成画像に加えて、トークン1つずつだけで画像を生成します。
②Run n times
「Run n times」は同じプロンプトの画像を異なるシード値で指定した回数画像を生成するためのスクリプトです。同じ構図で複数枚の画像を生成したい場合におすすめです。
③Stable Diffusion webUI Video
「Stable Diffusion webUI Video」は生成した画像を短いループにすることが出来るスクリプトです。上記のような動画を作成することが出来ます。
まとめ
今回PROMPTYでは、
- Stable Diffusionのtxt2imgで使用できる便利なスクリプト
- img2imgで使用できる便利なスクリプト
- 様々な機能のカスタムスクリプト
について紹介しました。
スクリプトを使用する事によって、画像生成の際の様々な作業を効率化することや、理想通りの画像を生成することが可能になります。
PROMPTYでは他のStable Diffusionに関する記事も執筆しているのでぜひ参考にしてみて下さい。
~Stable Diffusionで素早く画像生成するには~
Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。
このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。
推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。
2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。
コスパを重視する方は、RTX 3060を選ぶと良いでしょう。
このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。